首页 > 解决方案 > 如何创建数据模型以支持在 DynamoDB 中选择多个分区并对键值进行排序

问题描述

情况是我有很多groupsscore每个categories都有很多day

我需要在给定的两天之间为列表中的scores所有人获取groups列表中的所有人。categories

在 SQL 中,这看起来像SELECT * FROM Table WHERE group IN [...] AND category IN [...] AND date < ? AND date > ?;

我想出了以下内容,但我只能通过单个组或单个类别优雅地查询

pk         | sk              |
-----------------------------
group-name | category + date | score

什么是模拟这种情况的好方法?

标签: amazon-dynamodbdata-modeling

解决方案


我认为这在单个查询中的 DynamoDB 中是不可能的。您必须按单个组或单个类别进行查询。

但也许为了获得更好的性能,您应该将 sk 指定为date + category. 这样,您可以使用日期范围之间的 sk 的 KeyConditions 和使用 IN 子句的类别的过滤条件来查询列表中每个组的表。


推荐阅读