如果hash和range键在全局二级索引中相同,那么数据如何存储在dynamo数据库中



我正在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文档,散列和范围/排序键一起确定项目的存储位置。

具有相同分区键值的所有项都存储在一起,按排序键值排序。

这意味着,如果有两个值相同的项,它们将根据排序键顺序物理地紧密存储在一起。

最新更新