dynamodb 中分区键和分区有什么关系

问题描述 投票:0回答:1

我试图了解分区在 dynamodb 表中的工作原理。基于 AWS 文档:

A DynamoDB partition can support 3000 read operations and 1000 write operations. It keeps a divider between read and write ops so they do not interfere with each other. If you had a table that was configured to support 18000 reads and 6000 writes, you'd have at least 12 partition, but probably a few more for some head room.

A partition can be added when the storage size larger than 10GB.

分区数好像是由表数据大小和吞吐量决定的。

让我困惑的是这个分区与表中使用的

partition key
有何关系。对于具有不同
partition key
的项目,它们可以位于同一分区中并共享相同的RCU/WCU限制。如果是这样,我怎样才能让项目跨越不同的分区?我有一个解决方案,通过在项目的分区键值上附加随机数来解决查询性能。

例如,表中所有项目的

partition key
值为
TEST
。如果我查询这个 PK
TEST
,它会命中所有可能会很慢的项目。因为每个分区的 RCU 限制为 3000 个。我的解决方案是在所有项目上附加一个随机数,例如
TEST_01, TEST_02 ... TEST_10
。当我需要查询所有项目时,我会并行发送 10 个查询,每个查询对应一个分区键。我预计 10 个值会分布到 10 个分区中,以绕过 3000 RCU 限制。但如果它们都在同一个分区中,则没有必要在 PK 上附加随机数。

所以我的问题是解决查询性能更好的解决方案是什么。还是我理解错了什么?

amazon-web-services amazon-dynamodb
1个回答
0
投票

拥有多个 PK 绝对是一个好主意,因为您可以从拥有多个分区以及更多 RCU 中受益。如果您只选择一个 PK,例如

Test
,您可能会(取决于您的负载)获得一些 热分区

这是我最喜欢的关于分区和优化的文章之一。我喜欢使用多个 GSI 来提高读取性能的想法。

© www.soinside.com 2019 - 2024. All rights reserved.