DynamoDB 单表多对多

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

我有许多用户、许多角色和许多权限的数据关系。用户到角色的多对多关系在单个表中处理,使用不同的索引来表示您位于多对多关系的哪一方。我正在尝试弄清楚如何获得所代表的权限。这就是我希望仅使用一次 DynamoDB 调用即可得到的结果。

{
  username: 'User Name',
  roles: [
    {
      roelName: 'Role Name',
      permissions: [{ permissionName: 'Permission Name' }],
    },
  ],
}

我可以使用单表原则在角色和权限之间建立相同的关系,但如何将用户一直链接到权限。

另一种选择是保持权限非规范化并与每个角色共存。我不太发现这一点,因为当角色权限更改时,我必须更新链接到用户的每个角色。

那么,如何在 DynamoDB 中表示这种关系,同时仍将调用次数减少到一个?

amazon-dynamodb nosql dynamodb-queries amazon-dynamodb-index
1个回答
0
投票

尝试建模为邻接列表

当应用程序的不同实体之间存在多对多关系时,可以将这种关系建模为邻接表。在此模式中,所有顶级实体(与图模型中的节点同义)都使用分区键表示。通过将排序键的值设置为目标实体 ID(目标节点),与其他实体(图中的边)的任何关系都表示为分区内的项目。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/bp-adjacency-graphs.html

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