DynamoDB 使用二级索引获取最后的项目数
DynamoDB get count of items in last using secondary index
我在 DynamoDB 中有一个 table,它有列(1.id、2.item、3.entry time),其中 id 是主键。我需要在过去 24 小时内输入 table 的所有一种物品的数量(有两种类型的物品,分别是 A 和 B,我需要 A 的数量)。有什么办法可以使用二级索引来做到这一点吗?我找不到太多与此相关的信息。
全局二级索引会帮助您聚合相同类型的项目,但不会为您提供这些项目的数量。虽然这可能对您的应用程序有用,但它并不能完全解决您的访问模式。
与其 SQL 对应物不同,DynamoDB 不提供开箱即用的聚合操作。如果您想要总计、最小值、最大值、平均值等,您将需要自己维护这些聚合。
实现此功能的常见模式是使用 DynamoDB streams 在您的 table 中维护聚合。
当您在 table 上启用 DynamoDB 流时,您可以配置一个 lambda 以在每次对 table 执行操作(例如插入、删除、更新等)时执行。当此 lambda 收到您关心的事件的通知时(例如,A 类的新项目是 inserted/deleted),您将 increment/decrement 您的 table 中 A 类项目的总数。如果您遵循此模式,则可以通过非常快速的 getItem
操作来支持您的访问模式。
我在 DynamoDB 中有一个 table,它有列(1.id、2.item、3.entry time),其中 id 是主键。我需要在过去 24 小时内输入 table 的所有一种物品的数量(有两种类型的物品,分别是 A 和 B,我需要 A 的数量)。有什么办法可以使用二级索引来做到这一点吗?我找不到太多与此相关的信息。
全局二级索引会帮助您聚合相同类型的项目,但不会为您提供这些项目的数量。虽然这可能对您的应用程序有用,但它并不能完全解决您的访问模式。
与其 SQL 对应物不同,DynamoDB 不提供开箱即用的聚合操作。如果您想要总计、最小值、最大值、平均值等,您将需要自己维护这些聚合。
实现此功能的常见模式是使用 DynamoDB streams 在您的 table 中维护聚合。
当您在 table 上启用 DynamoDB 流时,您可以配置一个 lambda 以在每次对 table 执行操作(例如插入、删除、更新等)时执行。当此 lambda 收到您关心的事件的通知时(例如,A 类的新项目是 inserted/deleted),您将 increment/decrement 您的 table 中 A 类项目的总数。如果您遵循此模式,则可以通过非常快速的 getItem
操作来支持您的访问模式。