我将如何存储用户关注/关注者表?

时间:2019-10-12 19:41:44

标签: nosql amazon-dynamodb

现在,我将dynamodb用于聊天应用程序,其中用户加入了一个房间,他们会看到其他人的消息。

我将如何构造我的桌子? 我的主键是房间的ID,但是我不确定如何在此表的聊天室中构造用户。

使用布尔值将用户的uuid用作键似乎不正确-

"6d5e2ce1-cfc7-4722-ae35-c7dfd24c1e94" : true

1 个答案:

答案 0 :(得分:2)

考虑到您仅将用户数据(而不是实际的聊天消息)存储在RoomActivity表中,我会这样做:

RoomActivity
------
roomActivityId (hash key, uuid)
roomId (gsi, uuid)
userId (gsi, uuid)
joinedDate (timestamp)
status (enum - JOINED, LEFT,...)

其中UserRoom是单独的表,其中包含有关它们的特定数据。


对于每个状态更改,我个人都会有一个新条目,并且在我的代码中仅考虑最新条目(按时间戳记),但是您也可以直接更新状态。

如果要从某个会议室吸引所有用户,请使用roomId索引。

如果要获得用户的所有房间,请使用userId索引。