我对dynamodb比较陌生,我正在尝试用was dynamodb创建一个社交媒体应用程序,我有一个用户关注者表,看起来像下面的模式。
这是我的posts表的样子
发布API
我正在寻找一种方法来从DynamoDB数据库中检索由特定用户的关注者创建的所有帖子。我最初的计划是首先查询关注者表以获得关注者的用户ID列表,然后使用这些键来查询帖子表。但是,我一直无法确定使用DynamoDB有效查询具有键列表的表的方法。此外,我需要检索到的帖子按日期排序,并且查询过程通过使用LastEvaluatedKey、ExclusiveStartKey和PageCount来支持分页。使用DynamoDB是否可以高效地完成这一任务并获得良好的性能,或者我是否应该考虑修改我的数据模型?
(我正在使用nodejs)
1条答案
按热度按时间unhi4e5o1#
如何为DynamoDB创建模式
1.定义您的访问模式,按优先级顺序列出
1.联机查看其他类似的模型/方案
1.使用NoSQL Workbench之类的工具创建具有可视化功能的示例模型
1.不断地迭代,当您发现某些东西会使您的模式更有效/性能更好时,对模式进行必要的更改。
您的架构
您已经给出了单一访问模式:
我正在寻找一种方法来检索从DynamoDB数据库中由特定用户的追随者创建的所有帖子
用户
| 峰|斯克|追随者|
| - ------| - ------| - ------|
| 用户1|用户编号用户1| [用户2、用户4、用户99]|
| 用户2|用户编号用户2| [用户6、用户4、用户99]|
帖子
| 峰|斯克|柱|
| - ------| - ------| - ------|
| 用户2|备注编号00001日期|一些评论|
| 用户2|备注编号00002日期|一些评论|
| 用户2|备注编号00003编号日期|一些评论|
| 用户2|回复编号00001编号日期|一些答复|
| 用户2|邮寄编号00001日期|一些员额|
| 用户2|邮寄编号00002日期|一些员额|
| 用户99|备注编号00001日期|一些评论|
| 用户99|备注编号00002日期|一些评论|
| 用户99|备注编号00003编号日期|一些评论|
| 用户99|回复编号00001编号日期|一些答复|
您的访问模式
user1
的GetItem
userId
运行Query
,并声明sk
以POST
开始伪
单表设计
您可以在一个表中对两个表建模,但是除了管理一个表之外,它没有提供太多好处:
| 峰|斯克|柱|追随者|
| - ------| - ------| - ------| - ------|
| 用户1|用户编号用户1| |[用户2、用户4、用户99]|
| 用户2|备注编号00001日期|一些评论||
| 用户2|备注编号00002日期|一些评论||
| 用户2|备注编号00003编号日期|一些评论||
| 用户2|回复编号00001编号日期|一些答复||
总结
我并不特别喜欢这种格式,如果它是我的应用程序,我会将其建模为类似于DynamoDB论坛示例的东西。