计算具有相同字段的分区中的文档
Counting documents in partition with identical field
假设我有一个具有以下架构的分区:
{ type: "car", failure: "gas-pedal" }
{ type: "truck", failure: "clutch" },
{ type: "motorbike", failure: "gas-pedal" }
...
假设我想高效地访问给定 failure
类型的出现次数(在本例中为 2
)。
最简单的方法是什么?
编辑:type
将是主分区键,failure
是排序键。
DynamoDB 不支持聚合。 DynamoDB 没有 SQL 等同于
select count(*) from <mytable> where <attribute> = ...
作为 NoSQL 数据库,DynamoDB 要求您根据应用程序访问模式设计数据模型。在这种情况下,如果您的应用程序需要按类型对属性进行计数,您有几个选择:
执行 scan
操作以按故障类型获取所有属性并计算返回的记录数。对于常见的访问模式或大型数据集,通常应避免使用 scan
操作,因为它会检查数据库中的每个项目。这可能效率低下且成本高昂,但却是实现您想要的目标的最简单方法。
维护失败类型的计数,当失败为 inserted/updated 时您将更新这些失败类型。例如,您可以使用 PK=FAILURE 和 SK= 以及计数属性创建记录:
PK
SK
count
FAILURE
gas-pedal
2
FAILURE
clutch
1
每次插入失败类型的记录时,都会使用 atomic counter 更新 FAILURE 分区中该类型的计数。您可以在 insert/update 具有 failure
属性的项目(例如,在批处理或事务操作中)或使用 DynamoDB 流处理包含 failure
属性的记录的同时执行此操作。
这两种方法都与您在 SQL 数据库中执行此操作的方式不同,这是使用 DynamoDB 和 NoSQL 数据库时的常见主题。
假设我有一个具有以下架构的分区:
{ type: "car", failure: "gas-pedal" }
{ type: "truck", failure: "clutch" },
{ type: "motorbike", failure: "gas-pedal" }
...
假设我想高效地访问给定 failure
类型的出现次数(在本例中为 2
)。
最简单的方法是什么?
编辑:type
将是主分区键,failure
是排序键。
DynamoDB 不支持聚合。 DynamoDB 没有 SQL 等同于
select count(*) from <mytable> where <attribute> = ...
作为 NoSQL 数据库,DynamoDB 要求您根据应用程序访问模式设计数据模型。在这种情况下,如果您的应用程序需要按类型对属性进行计数,您有几个选择:
执行
scan
操作以按故障类型获取所有属性并计算返回的记录数。对于常见的访问模式或大型数据集,通常应避免使用scan
操作,因为它会检查数据库中的每个项目。这可能效率低下且成本高昂,但却是实现您想要的目标的最简单方法。维护失败类型的计数,当失败为 inserted/updated 时您将更新这些失败类型。例如,您可以使用 PK=FAILURE 和 SK= 以及计数属性创建记录:
PK | SK | count |
---|---|---|
FAILURE | gas-pedal | 2 |
FAILURE | clutch | 1 |
每次插入失败类型的记录时,都会使用 atomic counter 更新 FAILURE 分区中该类型的计数。您可以在 insert/update 具有 failure
属性的项目(例如,在批处理或事务操作中)或使用 DynamoDB 流处理包含 failure
属性的记录的同时执行此操作。
这两种方法都与您在 SQL 数据库中执行此操作的方式不同,这是使用 DynamoDB 和 NoSQL 数据库时的常见主题。