多值类型的 DynamoDB 二级索引
DynamoDB Secondary Index on Multi-Value Type
我有一个 table,它有一个数字类型的散列键和一个多值数字集的属性。
假设散列键是 group_id
并且多值集是该组 (user_id
s)
的一组成员
我希望能够查询Which groups is user X in?
我知道我可以通过对数据进行反规范化并将 user_id
的 table 存储到 group_id
.
的集合中来轻松做到这一点
在我这样做之前,我想确定没有办法将二级全局索引放在多值属性上,这样我就可以使用一个 table 并仍然获得不错的性能。
给定 HashKey=group_id 和 RangeKey=user_id 的基础 table 架构,您可以将 GSI 添加到反向架构。 GSI 的 HashKey 为 user_id,RangeKey 为 group_id。此 GSI 将回答以下问题:"Which groups is user X in?"。您不需要创建第二个 table 并维护它。事实上,DynamoDB 会自动将更改从您的基础 table 传播到 GSI,因此您不必担心保持索引最新。
您只能为标量类型属性创建 GSI。 scalar type attributes are Number
、String
、Binary
、Boolean
和 Null
.
来自Managing Global Secondary Indexes documentation:
Each index key attribute must be a scalar data type, not a multi-value
set. You can project attributes of any data type into a global
secondary index; this includes scalar data types and multi-valued
sets. For a complete list of data types, see DynamoDB Data Types.
我有一个 table,它有一个数字类型的散列键和一个多值数字集的属性。
假设散列键是 group_id
并且多值集是该组 (user_id
s)
我希望能够查询Which groups is user X in?
我知道我可以通过对数据进行反规范化并将 user_id
的 table 存储到 group_id
.
在我这样做之前,我想确定没有办法将二级全局索引放在多值属性上,这样我就可以使用一个 table 并仍然获得不错的性能。
给定 HashKey=group_id 和 RangeKey=user_id 的基础 table 架构,您可以将 GSI 添加到反向架构。 GSI 的 HashKey 为 user_id,RangeKey 为 group_id。此 GSI 将回答以下问题:"Which groups is user X in?"。您不需要创建第二个 table 并维护它。事实上,DynamoDB 会自动将更改从您的基础 table 传播到 GSI,因此您不必担心保持索引最新。
您只能为标量类型属性创建 GSI。 scalar type attributes are Number
、String
、Binary
、Boolean
和 Null
.
来自Managing Global Secondary Indexes documentation:
Each index key attribute must be a scalar data type, not a multi-value set. You can project attributes of any data type into a global secondary index; this includes scalar data types and multi-valued sets. For a complete list of data types, see DynamoDB Data Types.