我们正在考虑将 DynamoDB 用于预期的大型数据集。我来自强大的 SQL 背景,所以 No-SQL 的思维方式对我来说是新的。
我有一个问题和设计,但遇到了似乎是死胡同。
文档说要确保您的哈希键被广泛分布以帮助提高性能,这是有道理的。
我将为用户记录各种数据点/操作。对我来说,哈希键应该是用户 ID,而我的范围键可以是执行的操作。
现在,如果我想要用户 #1 执行的所有操作,我可以轻松查询。
但是,如果我想要所有执行操作 X 的用户,那么如果没有表扫描,我就无法做到这一点。从查询文档:
Query 操作使用表主键直接访问表中的项目,或使用索引键从索引中访问项目。您必须提供特定的哈希键值。
因此,我似乎仅限于从特定用户获取数据,除非我愿意进行表扫描,这会更慢并且消耗许多容量单位。
我认为,我的问题最终是一个设计问题。也许我在 No-SQL 方面遗漏了一些东西?我的哈希键应该是别的吗?或者仅仅是我的要求不适合 No-SQL(更具体地说,DynamoDB)?
就好像散列键是 DynamoDB 的一种分组。我考虑将哈希键更改为我们打算实施的操作,但后来我并没有广泛分发我的密钥......