DynamoDB的分区在包含排序键时的工作原理

0

【以下的问题经过翻译处理】 我对DynamoDB的问题是关于这个的:https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/

它说:“如果集合大小增长超过10GB,DynamoDB会通过排序键拆分分区。”

这是意味着它会使用排序键进行分区吗?也就是PK+SK将用于计算哈希吗?还是说它将按SK排序,因此一旦一个分区填满,下一个分区将从上一个分区的位置继续?但仍然只使用PK来计算哈希

我想知道我的分区键的基数是由PK还是PK+SK确定的。 如果是后者,那么像“删除所有PK = X项”的操作,不会有太大的热键/热分区问题,因为SK应该在许多分区中分布操作。但是,如果具有相同PK的所有项都捆绑在一个分区(或几个分区)中,那么它绝对是一个问题。

profile picture
EXPERTE
gefragt vor 9 Monaten20 Aufrufe
1 Antwort
0

【以下的回答经过翻译处理】 分区键被散列以确定项将进入哪个分区。在该分区中,每个分区键的项集合根据排序键顺序进行保持。如果项集合变得足够大,则可能会在多个分区之间分割,在这种情况下,会选择一个排序键的分拆点,具有在该点之前的SK的项进入一个分区,而具有在该点之后的SK的项进入另一个分区。

比喻时间。将DynamoDB视为一组电话簿。 PK就像城市名称,它的值确定要使用哪个电话簿。 SK就像每本书中的名称,按线性顺序排列。您希望PK的分散度很好,这样就可以有很多电话簿和许多并行处理。对于像纽约这样的城市,它足够大,您可以将名称分割到几本书籍中,例如A-M和N-Z。

更详细地说,城市名称的哈希值确定了可以找到该城市电话簿的架子。因此,散列PK,找到架子,找到正确的电话簿,使用书中排序的值。这一切都非常高效。一些城市可能需要一个或多个架子。

一些常见的个人名称可以这么常见,以至于为了分散游客流量,它们可以拥有自己的页面架子。

profile picture
EXPERTE
beantwortet vor 9 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen

Relevanter Inhalt