Abh*_*ngh 1 primary-key amazon-web-services amazon-dynamodb secondary-indexes google-cloud-firestore
我正在尝试将我的聊天应用程序从 Firestore 迁移到 DynamoDB。
目前我在 firebase 中有 2 个集合:Rooms和Users.
Users集合包含用户所属的所有 roomsId。
Rooms集合有一些元数据,例如名称、图标等以及Messages子集合。Messages子集合具有与消息相关的整个有效负载。
我在为此设计 Dynamo DB ERD 时感到困惑。我已经开发了以下 ERD 以及列出的访问模式,但我无法计算出 PK、SK 和二级索引(如果需要)。
2021 年 6 月 14 日更新:根据我收到的答案和帮助,我成功地进行了以下设计,我认为这将支持我所有的访问模式。
我想要运行的一个主要查询是通过用户 ID 获取所有房间的配置项,我不确定是否能够在单个查询中获取它。现在,简单的解决方案是获取用户的所有房间,然后获取所有获取的房间的所有配置(SK),我认为这不是一个好的解决方案。
支持的访问模式:
ROOM#rid&& SK= Begins_with(USER#))ROOM#rid&& SK= CONFIG)ROOM#rid&& SK= Begins_with( MESSAGE#))支持的访问模式:
USER#uid&& SK= Begins_with(ROOM#))实体建模和列出访问模式做得很好。这是成功进行 NoSQL 数据建模的第一步!
我将概述一种对该应用程序进行建模的方法。请记住,这并不是对该应用程序的访问模式进行建模的唯一方法,并且它可能无法处理您将遇到的所有边缘情况。不过,我希望这个例子能让你摆脱困境!
以下是我在基表中定义 PK/SK 模式的方法。请注意,我type为每个项目添加了一个字段。由于每个项目可以是任何类型,因此我喜欢添加此字段来帮助我理解每个项目代表什么!
该表支持以下访问模式:
我选择使用 KSUID 作为消息 ID。KSUID 是按创建时间排序的唯一标识。当我们获取房间的消息时,这将很有用。
我还在属性 GSI1PK 和 GSI1SK 上创建了一个名为 GSI1 的全局二级索引。
GSI1 支持:
| 归档时间: |
|
| 查看次数: |
4509 次 |
| 最近记录: |