我有一个具有默认容量的表,即5个RCU和5个WCU。根据文档,这将导致Dynamo DB仅创建一个分区。

表结构:

  • 分区键:item_type
  • 排序键:item_id

  • 我有一些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

    09-25 19:47