现在,我将dynamodb用于聊天应用程序,其中用户加入了一个房间,他们会看到其他人的消息。
我将如何构造我的桌子? 我的主键是房间的ID,但是我不确定如何在此表的聊天室中构造用户。
使用布尔值将用户的uuid用作键似乎不正确-
"6d5e2ce1-cfc7-4722-ae35-c7dfd24c1e94" : true
答案 0 :(得分:2)
考虑到您仅将用户数据(而不是实际的聊天消息)存储在RoomActivity
表中,我会这样做:
RoomActivity
------
roomActivityId (hash key, uuid)
roomId (gsi, uuid)
userId (gsi, uuid)
joinedDate (timestamp)
status (enum - JOINED, LEFT,...)
其中User
和Room
是单独的表,其中包含有关它们的特定数据。
对于每个状态更改,我个人都会有一个新条目,并且在我的代码中仅考虑最新条目(按时间戳记),但是您也可以直接更新状态。
如果要从某个会议室吸引所有用户,请使用roomId
索引。
如果要获得用户的所有房间,请使用userId
索引。