Dynamodb 如何在使用单表设计时管理更新属性

问题描述 投票:0回答:1

当使用 DynamoDB(或其他 NoSQL 键值数据库)并基于单表设计进行建模时,我们可以使用类似的方法来映射用户和用户职位:

Example modeling

因此,如果我的访问模式之一是“获取每个用户名的当前职位和用户信息”,我想显示用户信息和当前职位名称(为了简化,我不关心以前的职位等。 ).

我可以查询/获取 USER-,并且当我将职位名称:名称定义为一项属性时,我只需一个查询即可显示。到目前为止,一切都很好。

如果职位名称更新会怎样?由于 DynamoDB 或任何 NoSQL DB 没有 UPDATE WHERE 子句,我是否需要获取具有该职位的所有用户并将其一一更新?

我读过一些其他问题或文章,不是在 USER 中定义属性职位名称,而是只保留职位 ID,但那是使用 NoSQL 作为 RMDB;正如我需要从我的应用程序中获取 USER(一个查询)、获取职位(另一个查询)并稍后在应用程序中执行 JOIN 一样,我认为这不是 DynamoDB 的意图。

那么是不是每当职称发生变化时,获取该职称的所有用户(可以用SK完成),并一一更新?

amazon-dynamodb nosql data-modeling single-table-inheritance amazon-dynamodb-data-modeling
1个回答
0
投票

DynamoDB 是一个 OLTP 系统,它可以以低延迟处理高吞吐量。正如您提到的,进行连接通常会违背系统的目的。如果您不希望像

jobTitle
这样的属性经常更改,那么通常是通过获取所有项目并单独更新它们来完成。

但是,如果您希望经常更新某个属性,那么拥有一个包含信息的单个项目以及指向该项目的指针(如

JobId
)会更符合逻辑。然后它将成为一个邻接列表模式

© www.soinside.com 2019 - 2024. All rights reserved.