Amazon SimpleDB与Amazon DynamoDB

我对Amazon SimpleDB有一些基本的了解,但根据Amazon DynamoDB的描述,它似乎几乎是一样的: NoSQL Key-value存储服务。

有人可以简单地解释他们之间的主要区别 ,并告诉在哪些情况下select一个在另一个之上

这是由各自的常见问题解答Q:Amazon DynamoDB与Amazon SimpleDB有什么不同? 我应该用哪个? (哈希链接不再起作用,但是使用页内查找来查找页面内的问题)已经在某种程度上已经在段落结尾处的最紧凑的总结:

尽pipeSimpleDB具有扩展性限制,但它可能非常适合需要查询灵活性的较小工作负载。 Amazon SimpleDB自动索引所有项目属性,从而支持以性能和规模为代价的查询灵活性。

因此,在性能/可伸缩性和简单性/灵活性之间进行权衡,也就是说,对于更简单的场景,使用SimpleDB可以更轻松地避免为DynamoDB构build应用程序的复杂性(参见下面的不同视angular)。

链接的FAQ条目参考了Werner Vogel的Amazon DynamoDB – 一种快速和可伸缩的NoSQL数据库服务,专为Internet Scale应用程序而devise ,这实际上是一个精心devise的,因此强烈推荐阅读有关亚马逊NoSQL历史和尤其是Dynamo; 它还包含更多的见解来解决你的问题,例如

很明显,开发者(甚至是亚马逊工程师)都非常喜欢简单的细粒度控制,因为他们“投入了自己的力量”,并采用基于云的AWS解决scheme,比如Amazon S3和亚马逊SimpleDB,而不是Dynamo。 [另外我的]

很显然,DynamoDB已经被引入解决这个问题,因此可以被定义为SimpleDB的inheritance者,而不仅仅是修改现有的NoSQL产品:

我们得出结论:理想的解决scheme是将原始的Dynamodevise(增量可伸缩性,可预测的高性能)的最佳部分与SimpleDB的最佳部分(易于pipe理云服务,一致性和基于表的数据模型比纯粹的键值存储更丰富)。

Werner的总结build议DynamoDB现在适合任何大小的应用程序:

Amazon DynamoDB旨在保持可预测的高性能,并且对于从最小规模到最大规模的互联网规模应用的任何规模的工作负载都具有极高的成本效益。

使用SimpleDB或DynamoDB,这取决于您的使用情况,我在一些情况下使用SimpleDB而不是DynamoDB分享了我的一些经验。 在另一个产品中,我使用SimpleDB和DynamoDB来存储不同的数据。

过去的一个分歧是(正如@Mason Zhang在他上面的文章中所指出的)在索引中。 DynamoDB用于限制您在创build表时创build索引。 但是,现在(从2014年初开始)就有了全球二级指数(Global Secondary Index,GSI)的概念。 GSI可以随时在桌面上创build。 Upto 5支持。 因此,对于许多用例来说,索引不再是阻塞问题。

您还应该知道SimpleDB具有大小和性能限制。 (10GB和25个请求/秒)

也许最终,DynamoDB将在最简单的用例中取代SimpleDB。

SimpleDB现在似乎没有从亚马逊那里获得任何爱,甚至很难在AWS控制台中find它的configuration。 看起来像SimpleDB不再被迭代 – 使用DynamoDB作为您在AWS上的文档数据库的首选。

SimpleDb不再是真正的“迭代”。 这意味着simpledb将来没有新的发展。 这是“维护和支持”,但不会有所好转。

简单来说,两个数据存储都是NoSql。

不同之处在于可扩展性(和其他一些方面,但在我看来,扩展性是最大的价值)。 SimpleDB与MongoDB非常相似,但在缩放方面有一些限制 。

但是,DynamoDB可以让您提供较小的规模,并且可以扩展您所需的预置吞吐量。 当不需要时缩小。 (即在推广过程中,名人推荐注册等场景会有硬件要求的时间基础)

我相信简单的DB与Dynamo DB的主要区别在于

  1. 在延迟方面具有可预测的性能,能够在不影响延迟和吞吐量的前提下处理大量的数据。 DynamoDB通过使用分区键来实现这一点
  2. 读取,写入可以自定义的优化
  3. 更好的最终一致性模型,因为使用一致的哈希algorithm