amazon-dynamodb - 如何创建数据模型以支持在 DynamoDB 中选择多个分区并对键值进行排序
问题描述
情况是我有很多groups
,score
每个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
什么是模拟这种情况的好方法?
解决方案
我认为这在单个查询中的 DynamoDB 中是不可能的。您必须按单个组或单个类别进行查询。
但也许为了获得更好的性能,您应该将 sk 指定为date + category
. 这样,您可以使用日期范围之间的 sk 的 KeyConditions 和使用 IN 子句的类别的过滤条件来查询列表中每个组的表。