我真的应该对所有数据使用一个DynamoDB表吗?

时间:2019-06-27 16:42:35

标签: amazon-web-services nosql amazon-dynamodb

DynamoDB best practice documentation包含以下行:

  

您应在DynamoDB应用程序中维护尽可能少的表。 大多数设计良好的应用程序只需要一张桌子。

这是最后一行让我最困惑的地方。

以照片存储应用程序示例为例。这是否意味着我应该将用户帐户(帐户ID,密码,电子邮件)和照片(所有者ID,照片位置,元数据)存储在同一张表中?

如果是这样,我假设主键应该是帐户/所有者ID,而排序键将是它的对象类型(例如accountphoto)。

我应该使用一个这样的表而不是两个表(一个用于帐户,一个用于照片)吗?

2 个答案:

答案 0 :(得分:2)

通常建议使用尽可能少的表,除非您有充分的理由使用多个表,否则通常建议使用一个表。除了老习惯以外,您没有充分的理由使用不止一个。

如果您来自传统的数据库背景(例如我),这似乎违反直觉,但这实际上是最佳实践。

主键可以成为“行” /对象类型和另一个值的组合,存储在单个字段中,即对于唯一ID为12345的帐户对象为“ account#12345”,而对于唯一标识为“ photo#67890” ID为67890的照片对象-

如果要通过ID号查找帐户,则需要使用帐户前缀进行查询,如果要查找照片,则应添加“照片”前缀。这是一个非常简单的示例-您的设计可能会有所不同。

在您的问题的第一条评论中推荐的视频非常棒-以0.75或更慢的速度观看,并观看几次。

答案 1 :(得分:1)

简短的回答是。但是它的设计方式将高度特定于您的应用程序与数据库的交互方式。

我强烈建议任何仍然对如何设计DynamoDB / NoSQL表监视表感到困惑的人this video from re:Invent.