据我了解,DynamoDB 会尝试将具有相同分区键的项目放入同一分区。我的问题是,当分区已满并分成 2 个不同的分区时,散列如何工作?
例如,一个表有一个分区键A
,DynamoDB将所有分区键为A
的项目放入同一个分区P
,然后 P
已满,dynamo 会将 P
拆分为 P1
和 P2
,现在是一个新项目 I
带有分区键 A
由客户端插入,dynamo 如何决定插入哪个分区(即 P1
和 P2
) 我
?
最佳答案
All items with the same partition key are stored together, and for composite partition keys, are ordered by the sort key value. DynamoDB splits partitions by sort key if the collection size grows bigger than 10 GB.
来源:https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/
所以在那种情况下,他们将使用排序键来决定元素存储在哪个分区中。
但是,我不知道他们如何处理没有排序键的情况。
我还猜测访问一个分区的时间将不再是常量,因为需要根据该分区键的分区数以对数时间找到合适的分区。因为如果您使用带有分区键的排序键来计算“合并”哈希键,您将无法保持元素排序(具有连续排序键的元素将位于不同的分区中)。
关于amazon-web-services - DynamoDB 中相同分区键的数据分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44983013/