相关疑难解决方法(0)

DynamoDB MM邻接列表设计模式

参考https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html.我想知道是否有人可以帮助我.

第一张图片是表格,第二张图片是GSI.这是表格: 在此输入图像描述

在桌子上,我不明白如何创建排序键?这是一个存储Bill-ID和Invoice-ID的属性吗?还是两个独立的属性?我觉得这是一个灵活的属性,如果是这样,你如何区分彼此?我们如何构建排序键的查询?

只是通过查看前缀"Bill-"或"Invoice-"?DynamoDB的实践似乎使用破折号(" - ")来分隔属性中的值.如果有人可以给我这些事情的用例,我也会感激不尽,但除非在这种情况下重要,否则我会切断正切.

现在,这是非常相关且非常有趣的https://youtu.be/xV-As-sYKyg?t=1897,其中演示者使用一个产品表来存储各种类型的项目:书籍,歌曲专辑和电影; 并且每个都有自己的属性.

我在理解那里使用的排序键时遇到了问题.我知道productID = 1是bookID,productID = 2是专辑.现在让它变得混乱的是我用红色圈出的东西.这些是专辑2的曲目.但是,排序键的结构是"albumID:trackID".现在,"trackID"在哪里?它是否意味着用实际ID替换"trackID"这个词?或者这是一个完全像"albumID:trackID"的文本?

如果我想查询特定的trackID怎么办?我的查询的语法是什么?

请从youtube查看此处的图片: 在此输入图像描述

谢谢大家!!!:-)

many-to-many amazon-dynamodb

17
推荐指数
2
解决办法
4964
查看次数

DynamoDB邻接列表是否应该使用离散分区键来为每种类型的关系建模?

语境

我正在建立一个论坛,并研究使用DynamoDB和邻接表对数据进行建模。一些顶级实体(例如用户)可能与其他顶级实体(例如评论)具有多种类型的关系。

要求

例如,假设我们希望能够执行以下操作:

  • 用户可以评论
  • 用户可以关注评论
  • 评论可以显示喜欢它的用户
  • 评论可以显示关注它的用户
  • 用户个人资料可以显示他们喜欢的评论
  • 用户个人资料可以显示他们关注的评论

因此,本质上我们有很多(喜欢或关注)多对多(用户<=>注释)。

注意:本示例是故意删除的,实际上,将要建立更多的关系模型,因此我尝试在此处考虑可扩展的内容。

基准线

以下顶级数据可能在任何邻接列表表示中都是常见的:

First_id(Partition key)         Second_id(Sort Key)         Data
-------------                   ----------                  ------
User-Harry                      User-Harry                  User data
User-Ron                        User-Ron                    User data
User-Hermione                   User-Hermione               User data
Comment-A                       Comment-A                   Comment data
Comment-B                       Comment-B                   Comment data
Comment-C                       Comment-C                   Comment data
Run Code Online (Sandbox Code Playgroud)

此外,对于下面的每个表,将有一个等效的全局二级索引,其中交换了分区键和排序键。

示例数据

这是我想在DynamoDB中建模的内容:

  1. 哈里喜欢评论A
  2. 哈里喜欢评论B
  3. 哈里遵循评论A
  4. 罗恩(Ron)喜欢评论B
  5. 赫敏喜欢评论C

选项1

使用第三个属性定义关系的类型:

First_id(Partition key)         Second_id(Sort Key)         Data
-------------                   ----------                  ------
Comment-A                       User-Harry                  "LIKES"
Comment-B                       User-Harry                  "LIKES"
Comment-A                       User-Harry                  "FOLLOWS"
Comment-B                       User-Ron                    "LIKES"
Comment-C                       User-Hermione               "FOLLOWS"
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是查询结果中存在多余的信息,因为它们会返回您可能不在乎的多余项目。例如,如果您要查询 …

forum adjacency-list amazon-dynamodb

6
推荐指数
1
解决办法
188
查看次数

DynamoDB 1个大表还是多个小表?

我目前面临一些有关数据库设计的问题。目前,我正在开发一个API,可让用户执行以下操作:

  • 创建一个帐户(1个用户拥有1个帐户)
  • 创建一个配置文件(1个帐户拥有1-n个配置文件)
  • 让配置文件上传2种类型的项目(1个配置文件拥有0-n个项目;这些项目的类型和用途不同)

调用API方法会触发AWS Lambda在DynamoDB表中执行请求的操作。

我当前的计划如下所示:

在此处输入图片说明

通过指定时间范围和配置文件ID,应该可以查询项目。但是我认为我的设计完全违背了DynamoDB的目的。AWS文档说,设计良好的产品只需要一张桌子。

  • 在一个表中实现此架构的好方法是什么?
  • 使用当前设计是否有任何弊端?
  • 您将在当前设计和单表方法中指定什么作为主/分区/排序键/辅助索引?

database-design amazon-web-services amazon-dynamodb

2
推荐指数
1
解决办法
813
查看次数