【发布时间】:2012-02-26 05:18:02
【问题描述】:
我正在研究 Amazon 的 DynamoDB,因为它看起来消除了维护和扩展数据库服务器的所有麻烦。我目前正在使用 MySQL,维护和扩展数据库是一件非常头疼的事情。
我已经浏览了文档,但我很难理解您将如何构建数据以便轻松检索。
我对 NoSQL 和非关系型数据库完全陌生。
从 Dynamo 文档看来,您只能在主哈希键和主范围键上查询具有有限数量的比较运算符的表。
或者您可以运行全表扫描并对其应用过滤器。问题是它一次只能扫描 1Mb,因此您可能需要重复扫描才能找到 X 个结果。
我意识到这些限制使它们能够提供可预测的性能,但似乎很难将您的数据取出。并且执行全表扫描似乎会非常低效,而且随着表的增长,效率只会随着时间的推移而降低。
例如,假设我有一个 Flickr 克隆。我的图片表可能类似于:
- 图像 ID(数字,主哈希键)
- 添加日期(数字,主范围键)
- 用户 ID(字符串)
- 标签(字符串集)
- 等
因此,使用查询我将能够列出过去 7 天的所有图像,并且很容易将其限制为 X 个结果。
但是,如果我想列出来自特定用户的所有图像,我需要进行全表扫描并按用户名过滤。标签也是如此。
因为您一次只能扫描 1Mb,您可能需要进行多次扫描才能找到 X 个图像。我也没有看到一种方法可以轻松地停在 X 个图像上。如果您尝试抓取 30 张图像,您的第一次扫描可能会找到 5 张,第二次可能会找到 40 张。
我有这个权利吗?它基本上是一种权衡吗?您可以获得真正快速、可预测的数据库性能,几乎无需维护。但权衡是您需要构建更多逻辑来处理结果?
或者我完全不在这儿了?
【问题讨论】:
标签: database nosql amazon-dynamodb