首页 > 解决方案 > DynamoDB 架构设计:组合排序键与 LSI

问题描述

我查看了很多 DynamoDB 教程和 SO 问题,但没有一个涵盖我的用例。

我有 3

子类别属于一个类别,项目是唯一的唯一值。

我已经读过( Dynamodb 中的3 个字段复合主键(唯一项))我应该根据我想要执行的查询类型来设计我的 DynamoDB 表:

我的第一种方法是

类别 + 子类别不是唯一的,所以这就是我将项目连接到子类别的原因。

由于我通常想一起查询同一类别中的项目,因此最好将同一分区中的相同类别项目也按子类别排序,所以这样(如果我做对了)我的“获取子类别中的所有项目” “会表现良好,我可以使用“ begins_with(子类别)”根据排序键轻松查询它

这种方式的缺点是,在我从 Dynamo 获得数据后,我需要对其进行聚合以将项目名称与子类别名称分开。

我的第二种方法:

因此,这样“获取类别中的所有项目”查询将很简单,同一类别中的项目也将位于同一分区上,并且由于 LSI,“获取子类别中的所有项目”也将变得简单并且快速地。

我的问题:

标签: amazon-web-servicesnosqlamazon-dynamodbdynamodb-queriesamazon-dynamodb-index

解决方案


这种方式的缺点是,在我从 Dynamo 获得数据后,我需要对其进行聚合以将项目名称与子类别名称分开。

为什么?除了串联的排序键值之外,只需将子类别和项目名称作为独立属性包括在内。

我有点惊讶你不需要一个get single item by name不知道的类别或子类别。


推荐阅读