我有一个具有默认容量的表,即5个RCU和5个WCU。根据文档,这将导致Dynamo DB仅创建一个分区。
表结构:
我有一些item_types带有一个或两个项目ID,另一些带有100,000。我们总共有大约一千万条记录。
我试图了解是否只有一个分区,这将如何产生热键问题?一般而言,什么是热键?
最佳答案
我知道这是一个旧答案,但是我发现了一些有用的信息。
如Partitions and Data distributions中所述:
这意味着您无法假设正在使用多少个分区。实际上,DynamoDB的文档从来没有谈论物理分区。相反,他们专注于表的partitionKey
。
如果您在页面上进行更多挖掘,那么将详细说明dynamoDB如何使用partionKey
对逻辑/物理分区进行哈希处理。
如何使用partitionKey
避免热键?
如Designing Partition Keys to Distribute Your Workload Evenly中所述:
过于简化意味着通常必须设计partitionKey才能最大化分区/记录因子。
并非总是如此:例如,您可以在相同的partitionKey
下拥有大量记录,这些记录几乎从不读取或更新,并且很少写入该partitionKey
。
在您的情况下:如果您希望对同一item_type进行大量读/写操作,则最好以不同的方式对数据进行建模。
更有用的链接:
Best Practices for Designing and Using Partition Keys Effectively
Using Write Sharding to Distribute Workloads Evenly