javascript 来自多个键的Dynamodb查询

e3bfsja2  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(140)

我对dynamodb比较陌生,我正在尝试用was dynamodb创建一个社交媒体应用程序,我有一个用户关注者表,看起来像下面的模式。

这是我的posts表的样子

发布API

我正在寻找一种方法来从DynamoDB数据库中检索由特定用户的关注者创建的所有帖子。我最初的计划是首先查询关注者表以获得关注者的用户ID列表,然后使用这些键来查询帖子表。但是,我一直无法确定使用DynamoDB有效查询具有键列表的表的方法。此外,我需要检索到的帖子按日期排序,并且查询过程通过使用LastEvaluatedKey、ExclusiveStartKey和PageCount来支持分页。使用DynamoDB是否可以高效地完成这一任务并获得良好的性能,或者我是否应该考虑修改我的数据模型?
(我正在使用nodejs)

unhi4e5o

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编号日期|一些答复|

您的访问模式

  • 用户user1GetItem
  • 分析关注者列表
  • 对从上面返回的每个userId运行Query,并声明skPOST开始
  • 您将返回每个用户的帖子按日期顺序
SELECT followers FROM Users WHERE pk = 'user1' AND sk='USER#user1'
FOR user in followers:
    SELECT * FROM POSTS WHERE pk = user AND sk BEGINS_WITH 'POST'

单表设计

您可以在一个表中对两个表建模,但是除了管理一个表之外,它没有提供太多好处:
| 峰|斯克|柱|追随者|
| - ------| - ------| - ------| - ------|
| 用户1|用户编号用户1| |[用户2、用户4、用户99]|
| 用户2|备注编号00001日期|一些评论||
| 用户2|备注编号00002日期|一些评论||
| 用户2|备注编号00003编号日期|一些评论||
| 用户2|回复编号00001编号日期|一些答复||

总结

我并不特别喜欢这种格式,如果它是我的应用程序,我会将其建模为类似于DynamoDB论坛示例的东西。

相关问题