相关项目之间的Dynamodb更新属性值

时间:2019-06-20 14:02:12

标签: nosql amazon-dynamodb

正如Dynamodb文档中所说的那样,建议我们仅使用一个表对所有实体建模。

  

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

现在假设我们有一个产品和一个用户实体,仅使用一个表,我们就有这样的架构:

enter image description here

在dynamodb中,建议我们将相关数据保持在一起,这就是为什么在产品条目上“复制”用户数据的原因。

我的问题是,如果有一天我更新了用户名,dynamodb将能够在我的产品条目上自动更新该用户的副本,还是必须手动进行这种更新?

1 个答案:

答案 0 :(得分:1)

在DynamoDB中,建议将项目保留为非规范化形式,以实现DynamoDb的优点。话虽如此,在设计表时,我们牢记应用程序层的设计,以此为基础,我们尝试从单个表中获取结果,以获取可用于创建满足所有映射的单个实体的值。因此,我们创建具有可容纳其他相关表中的值的列的表。唯一的区别是我们只是放置关系值以保持与其他相关表的连接。
在上述情况下,我们可以在一个表中包含用户详细信息,并且在为产品创建表时,将用户表的主键保留在产品表中。这样,如果将来更改用户名或用户详细信息,就不会有任何问题。 在DynamoDB中,对表使用排序键会将相关项保持在一起。还提供了复合排序键来处理一对多关系。 分享使用排序键的最佳做法: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-sort-keys.html