【发布时间】:2019-06-22 00:03:49
【问题描述】:
由于我是 DynamoDB 的新手,因此很难理解用作应用程序分区键的最佳属性。我正在尝试将 DynamoDB 用于一个简单的应用程序,其中随机选择成对的用户见面并相互介绍。我需要选择有助于以下查询的适当表和分区策略:
检索用户受邀参加的聚会(介绍)。它应该显示所有 聚会的详细信息,包括其他受邀用户。
根据我从文档中了解到的情况,要“查询”一个项目,我只能使用查询表达式中的键。此外,良好的分区键是具有高基数并促进读/写吞吐量活动均匀分布的分区键。我正在考虑创建一个Meetup 表,但我在选择分区键时遇到了困难,特别是当聚会由 2 个用户“拥有”并且在聚会发生后事件项将过期(非活动)所以我不是确保使用meetupID 是个好主意。但我正在考虑这样使用两个表:
邀请表:
- userId(分区键)
- eventId(排序键)
- 一些属性
- 另一个属性
聚会桌:
- meetupId(分区键)-> 我对此犹豫不决
- invitedUsers(这将是一个用户对象数组)
- 已取消
- 见面日期
使用此解决方案,需要执行 2 个请求,首先获取最新的 eventId,然后获取事件详细信息。这看起来是个好方法吗? meetupId 是一个好的分区键吗?有没有更好的解决方案?
【问题讨论】:
标签: database-design nosql amazon-dynamodb database-schema