我有一些基本的理解Amazon SimpleDB是什么,但根据Amazon DynamoDB描述它似乎几乎相同:一个NoSQL Key-value store服务 .
有人可以简单解释它们之间的 main differences 并告诉在哪些情况下选择 one over the other .
我有一些基本的理解Amazon SimpleDB是什么,但根据Amazon DynamoDB描述它似乎几乎相同:一个NoSQL Key-value store服务 .
有人可以简单解释它们之间的 main differences 并告诉在哪些情况下选择 one over the other .
7 回答
3个主要差异:
索引
SimpleDB在表中为"EVERY"字段创建索引 .
DynamoDB您必须在创建数据库之前设置索引字段,并且无法修改 .
定价:
SimpleDB定价基于机器小时数和存储容量
DynamoDB按每秒读/写记录的容量收费 .
可扩展性:
如果数据存储超过10GB,SimpleDB需要手动分区 .
DynamoDB自动分配数据,从而提供非常高的可扩展性 .
如今,SimpleDB似乎没有从亚马逊获得任何爱 - 很难找到在AWS控制台中配置它的位置 . Seems like SimpleDB is no longer being iterated on - 使用DynamoDB作为AWS上文档数据库的首选 .
使用SimpleDB或DynamoDB,这取决于你的用例,我分享了一些使用SimpleDB in some cases instead of DynamoDB的经验 . 在另一个产品中,我使用SimpleDB和DynamoDB来存储不同的数据 .
之前的差异之一(正如@Mason Zhang在上面的文章中所述)在索引中 . DynamoDB用于限制您在创建表时创建索引 . 但是,现在(自2014年初以来),存在全球二级指数(GSI)的概念 . 可以随时在桌面上创建GSI . 支持最多5个 . 因此,索引不再是许多用例的阻塞问题 .
您还应该知道SimpleDB具有大小和性能限制 . (10GB,比方说,25个请求/秒)
也许最终,DynamoDB将取代除最简单用例之外的所有SimpleDB .
这可以通过相应的常见问题解答Q: How does Amazon DynamoDB differ from Amazon SimpleDB? Which should I use?(哈希链接不再有效,但使用页内查找以在页面内查找问题)在某种程度上解决,并在段落末尾使用最紧凑的摘要:
因此,在性能/可伸缩性和简单性/灵活性之间进行权衡,即对于更简单的场景,使用SimpleDB可能仍然更容易,以避免为DynamoDB构建应用程序的复杂性(请参阅下面的不同视角) .
链接的FAQ条目也引用了Werner Vogel的Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications,这确实是一篇精心制作的,因此备受推荐的关于亚马逊NoSQL历史和特别是Dynamo的阅读 . 它还包含更多有关您的问题的见解,例如:
显然,DynamoDB已经被引入来解决这个问题,因此可以作为SimpleDB的继承者,而不是“仅仅”修改他们现有的NoSQL产品:
Werner的摘要表明,DynamoDB现在非常适合任何规模的应用程序:
简单来说,两个数据存储都是NoSql .
不同之处在于可扩展性(以及其他一些方面,但在我看来,扩展具有最大的 Value ) . SimpleDB与MongoDB非常相似,但在扩展方面有一堆limitations .
但是,DynamoDB允许您进行小规模配置,并扩展所需的预配置吞吐量 . 并且在不需要时缩小 . (即在促销期间,名人推荐注册等场景会有基于时间的硬件要求)
我相信Simple DB与Dynamo DB的主要区别在于
在延迟方面具有可预测的性能,能够在不影响延迟和吞吐量的情况下处理大量数据 . DynamoDB通过使用分区键实现此目的
读取,写入可以的优化定制
更好的最终一致性模型,因为使用了一致的哈希算法