我正在dynamo db中创建全局二级索引,现在我想知道哈希键和范围键中存储的项是如何相同的?它们将按什么顺序存储在表中?
如果我没看错你的问题,你问的是两个不同的对象,每个对象在主表中都有一个唯一的主键,它们被投影到GSI中,GSI中有相同的HASH/RANGE键。
示例
主表
- 哈希:Hash_id
- 范围:Range_id
GSI
- 哈希:gsi_Hash_id
- 范围:gsi_Range_id
数据
{
hash_id: 123,
range_id: 'abc',
gsi_hash_id: 'same',
gsi_range_id: 'also_same'
}
{
hash_id: 234,
range_id: 'bcd',
gsi_hash_id: 'same',
gsi_range_id: 'also_same'
}
简短的回答是:这些项目没有特别的顺序。
答案很长:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html
基于AWS文档,散列和范围/排序键一起确定项目的存储位置。
具有相同分区键值的所有项都存储在一起,按排序键值排序。
这意味着,如果有两个值相同的项,它们将根据排序键顺序物理地紧密存储在一起。