【发布时间】:2013-04-24 22:15:11
【问题描述】:
我们正在考虑将 DynamoDB 用于预期的大型数据集。我来自强大的 SQL 背景,因此 No-SQL 的思维方式对我来说是新的。
我有一个问题和设计,但遇到了似乎是死胡同。
文档说要确保您的哈希键被广泛分布以帮助提高性能,这是有道理的。
我将为用户记录各种数据点/操作。对我来说,哈希键应该是用户 ID,而我的范围键可以是执行的操作。
现在,如果我想要用户 #1 执行的所有操作,我可以轻松查询。
但是,如果我想要所有执行操作 X 的用户,那么如果没有表扫描,我就无法做到这一点。来自Query documentation:
查询操作使用表主键直接访问表中的项目,或使用索引键从索引中访问项目。 您必须提供特定的哈希键值。
因此,我似乎仅限于从特定用户获取数据,除非我愿意执行 table scan,这会更慢并消耗许多容量单位。
我认为,我的问题归根结底是一个设计问题。也许我在 No-SQL 方面遗漏了一些东西?我的哈希键应该是别的吗?或者仅仅是我的要求不适合 No-SQL(更具体地说,DynamoDB)?
哈希键几乎就像是与 DynamoDB 的一种分组。我考虑将哈希键更改为我们打算实施的操作,但后来我没有广泛分发我的键...
【问题讨论】:
-
你很幸运,仅在 6 天前宣布了对二级索引(索引?)的支持。见here。
标签: nosql amazon-dynamodb