我正在设计一个基于 DynamoDB 的新表。我已经阅读了一些文档,但我无法弄清楚我应该遵循哪种设计模式才能在未来没有问题。
当前方法
表 - 事件
- eventId (HashKey)
- userId
- createdAt
- some other attributes...
表 - 用户
- userId (HashKey)
- name
- birth
- address
事件表将有一堆条目,比如数百万。目前用户将有大约 20 个条目。
我将需要执行以下查询:
- GET paginated events from specific userId ordered by createdAt
- GET paginated events from specific userId between some range of dates and ordered by createdAt
- GET specific event entry by eventId
所以我想用以下设置在事件表上创建一个 GSI(全局二级索引):
- userId (HashKey)
- createdAt (RangeKey)
但我的问题是:我最初的设计有意义吗?不知何故,我觉得我可以使用以下设置设计事件表:
- userId (HashKey)
- eventId (SortKey)
但是我认为按照这种方法我会遇到热分区陷阱。
一些意见和建议将不胜感激。
谢谢。