为DynamoDB表中的所有项分配相同的分区键



我需要能够在DynamoDB表上运行一些基于范围的查询,例如int_attribute > 5starts_with(string_attribute, "foo")。可以通过创建全局或本地辅助索引,然后向这些索引提交查询来回答所有这些问题但是,运行查询需要还提供一个分区键值来限制查询集。这两个查询都没有严格的相等条件,因此我考虑给Dynamo表中的所有项相同的分区键,并仅使用排序键来区分它们。我的数据集将在10GB分区大小限制内。

如果我这样做,会发生什么灾难性的问题吗?

是的,您可以创建一个GSI,其中每个项都位于同一分区键下。需要注意的是,您通常会将所有这些写操作放入同一个物理分区,每个分区的最大更新率为1000 WCU。

如果您的更新率低于此值,请继续。如果您的更新率高于此,您将希望遵循对GSI分区键值进行分片的模式,使其分布在更多的分区中。

假设GSI需要10000 WCU。您可以将每个项目的GSI PK值分配给一个随机的value-{x},其中x为0到9。然后是的,在查询时,您可以执行10个查询,并自己将结果重新组合在一起。这种方法可以根据需要进行扩展。

最新更新