Dynamo DB单分区,Global Secondary索引

时间:2017-04-26 22:33:22

标签: indexing amazon-dynamodb

当前情景

使用的数据存储:Dynamo Db。

数据库大小:15-20 MB

问题:对于存储数据我打算使用公共哈希作为分区键(并将时间戳作为排序键),这样整个表只保存在一个分区中。这将为我提供表格的未分割吞吐量。

但我还打算创建用于查询的GSI,所以我想知道将GSI用于单个分区是否错误。我也可以使用Local SI。

这是错误的方法吗?

2 个答案:

答案 0 :(得分:1)

在幕后,GSI基本上只是另一个DynamoDB表。它遵循与主表相同的分区规则。主表中的分区与GSI的分区无关。因此,如果您的表具有单个分区,则无关紧要。

在整个DynamoDB中使用单个分区是一个糟糕的架构选择,但我认为对于20 Mb的数据库并不重要。

答案 1 :(得分:0)

  

DynamoDB自动管理表分区,添加新分区   必要时进行分区并分配预配置的吞吐量   容量均匀分布在他们身上。

如果分区键值不同,则无法确定项目应该去哪个分区。

我猜你要做的是为具有不同排序键值(时间戳)的所有项目提供相同的分区键值。在这种情况下,我相信数据将存储在单个分区中,但我并不了解您对未分割吞吐量的看法

如果您想在单一分区中保留索引的所有项目,我认为LSI(本地二级索引)最适合此处。 LSI基本上具有分区键的备用排序键。

  

本地二级索引维护给定的备用排序键   分区键值。

您的单个​​分区规则不适用于索引,并且您需要不同的分区密钥,那么您需要GSI。