Dynamodb GSI何时以及如何对分区键和排序键进行分区?

时间:2018-10-06 18:51:12

标签: amazon-dynamodb amazon-dynamodb-index dynamodb-utilization

  1. 何时以及如何对Dynamodb GSI的分区键和排序键进行分区?
  2. GSI分区(如表分区)是否有最大大小限制?
  3. 如果是,那么当单基GSI(即所有记录中具有相同分区键的GSI)超过存储限制时会发生什么?

3 个答案:

答案 0 :(得分:1)

1)在https://stackoverflow.com/a/51240423/4985580处查看我的答案,以了解如何对表进行分区。 GSI本质上只是一个新表,它的分区方式与基表相同。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html

  

DynamoDB中的全局二级索引也由分区组成。   GSI中的数据与基础数据分开存储   表,但索引分区的行为与表几乎相同   分区。

2)是,10GB

3)这是一个有趣的问题,我没有答案。 Dynamo根据数据的分区键访问正确的分区,因此,如果用单个分区键填充多个分区,则可能会出现问题。也就是说,您可能至少需要250万个具有相同分区键的项目才能实现(10GB / 4KB)。这可能适合您吗?

答案 1 :(得分:0)

如果是,那么单基GSI(即所有记录中具有相同分区键的GSI)超过存储限制时会发生什么?

DynamoDB分区每秒只能处理1000个WCU。此外,DDB每条记录只允许使用400 WCU。 如果您的GSI超过WCU,则对主表的写入也会受到限制。因此,如果您的记录约为400KB,则2.5左右的请求速率会使您的分区下降。

答案 2 :(得分:0)

  1. 是的,它的工作方式与表分区相同。
  2. 是的,每个分区 10GB,也与表本身相同。
  3. 行为也与主表完全相同。 Dynamo 将开始使用排序键在分区之间传播数据,即不会发生任何特殊情况。

这是一篇很好的博客文章,解释了分区的工作原理:https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/

<块引用>

具有相同分区键的所有项目存储在一起,对于复合分区键,按排序键值排序。如果集合大小超过 10 GB,DynamoDB 会按排序键拆分分区。