【发布时间】:2019-09-27 21:23:01
【问题描述】:
我正在将我的数据库从 sql 数据库移动到 Dynamodb。我目前有一张包含这些值的表格:
- tenantId (PartitionKey)
- resourceId (RangeKey)
- 类型
- 角色
- 姓名
我现在有以下问题:
- 获取属于类型为
t、角色r且名称包含n的租户ten的所有资源。其中typerolename可能是空值,因此在这种情况下,它们不会用作过滤器。
使用过滤器可以在 dynamodb 中进行此查询,但阅读以下文章https://aws.amazon.com/blogs/database/querying-on-multiple-attributes-in-amazon-dynamodb/ 我意识到这可能是一个昂贵的查询,因为 dynamodb 正在检索这些数据然后过滤服务器端。该页面建议创建具有以下值的 GSI:
- tenantId-type-role-name
使用此索引,我可以轻松过滤 ten t r n 但如果我只需要过滤 tenantId type name 我应该如何查询 GSI 以获取所有信息租户ten类型t,名称包含n但对role没有限制的记录(contains语句似乎只支持过滤器)。
我想知道是否需要为每个组合创建一个 GSI,例如:
- tenantId 类型
- tenantId-角色
- 租户 ID 名称
- tenantId 类型角色
- ...
提前感谢您的帮助
【问题讨论】:
标签: amazon-dynamodb