当前情景
使用的数据存储:Dynamo Db。
数据库大小:15-20 MB
问题:对于存储数据我打算使用公共哈希作为分区键(并将时间戳作为排序键),这样整个表只保存在一个分区中。这将为我提供表格的未分割吞吐量。
但我还打算创建用于查询的GSI,所以我想知道将GSI用于单个分区是否错误。我也可以使用Local SI。
这是错误的方法吗?
答案 0 :(得分:1)
在幕后,GSI基本上只是另一个DynamoDB表。它遵循与主表相同的分区规则。主表中的分区与GSI的分区无关。因此,如果您的表具有单个分区,则无关紧要。
在整个DynamoDB中使用单个分区是一个糟糕的架构选择,但我认为对于20 Mb的数据库并不重要。
答案 1 :(得分:0)
DynamoDB自动管理表分区,添加新分区 必要时进行分区并分配预配置的吞吐量 容量均匀分布在他们身上。
如果分区键值不同,则无法确定项目应该去哪个分区。
我猜你要做的是为具有不同排序键值(时间戳)的所有项目提供相同的分区键值。在这种情况下,我相信数据将存储在单个分区中,但我并不了解您对未分割吞吐量的看法。
如果您想在单一分区中保留索引的所有项目,我认为LSI(本地二级索引)最适合此处。 LSI基本上具有分区键的备用排序键。
本地二级索引维护给定的备用排序键 分区键值。
您的单个分区规则不适用于索引,并且您需要不同的分区密钥,那么您需要GSI。