AWS DynamoDB和AWS DocumentDB(新推出的服务)之间的区别是什么?

105

AWS最近推出了新服务DocumentDB,它与MongoDB接口类似。
AWS DynamoDB和DocumentDB服务有什么区别?


7
根据 infoq 的说法,DocumentDB 的 SLA 只有99.9%的可用时间,而 DynamoDB 则承诺 99.999%。 - jaco0646
3
这个还没有出现在产品常见问题解答中,有点奇怪。通常文档会很好地强调类似的AWS服务之间的区别和使用案例。例如,Aurora和标准RDS、SNS和SQS和Kinesis等都有很好的说明它们之间的区别以及为什么你可能会考虑选择其中一个。 - markdsievers
1个回答

148
  • 主要区别在于DocumentDB是MongoDB和DynamoDB之间的中间步骤。

  • DynamoDB是一个完全托管的可扩展服务,您可以设置其潜力的上限。

  • DocumentDB需要稍微更多的操作,您需要为群集选择实例数量和实例大小。这意味着您需要关注它们的使用/性能,但不会像MongoDB那样频繁。

  • MongoDB可能是最灵活的,但也需要最多的维护。

  • 所有都取决于应用程序的性能,但取决于您希望多灵活以换取更多维护所花费的成本。

  • 另一个因素是定价模型。MongoDB(Atlas)和DocumentDB都按小时付费(DocumentDB还包括使用)。DynamoDB可以基于预配资源或按需付费(按使用量付费)。

  • 编辑:我根据我对这三个服务的经验编写了一篇更详尽的文章: https://medium.com/@caseygibson_42696/difference-between-aws-dynamodb-vs-aws-documentdb-vs-mongodb-9cb026a94767

  • 一些关键差异

  • Amazon DynamoDB 是一种全托管的 NoSQL 数据库服务,提供快速和可预测的性能和可扩展性。您可以使用 Amazon DynamoDB 创建一个数据库表,用于存储和检索任意量的数据,并支持任何级别的请求流量。

  • Document DB 基于开源文档数据库 MongoDB 和领先的 NoSQL 数据库而设计。Document DB 建立在开源 MongoDB 基础上,是一种专为开发和扩展设计的文档数据库。

  • DynamoDB 使用表、项目和属性作为核心组件来处理数据。表是项目的集合,每个项目都是属性的集合。DynamoDB 使用主键来唯一标识表中的每个项目,使用辅助索引来提供更灵活的查询功能。

  • MongoDB/Document DB 使用类 JSON 的文档来存储无模式数据。在 Document DB 中,文档集合不需要预定义的结构,不同文档的列可以有所不同。Document DB 具有许多关系型数据库的特征,包括表达性强的查询语言和强一致性。由于没有模式,MongoDB/Document DB 允许您创建文档而无需事先创建文档结构。

  • 在DynamoDB中,您可以创建和使用所谓的辅助索引(secondary index),用于类似RDBMS中的相同目的。创建辅助索引时,您必须指定其键属性。创建后,您可以像查询或扫描表一样查询或扫描该索引。由于DynamoDB没有查询优化器,因此只有在查询或扫描时才使用辅助索引。
  • MongoDB/Document DB更加偏好索引。如果缺少索引,查询请求需要搜索集合中的每个文档以选择所需的文档。这可能会减慢读取时间。

    1. DynamoDB在游戏行业以及物联网(IoT)行业中很受欢迎。

    总之,如果您需要实时分析的可扩展性和缓存,则Document DB可能是一个不错的选择;然而,它并不适用于事务性数据(会计系统等)。Document DB可用于移动应用程序、内容管理、实时分析和物联网应用程序。如果您的情况没有明确定义的模式定义,则DocumentDB可能是一个不错的选择。


    14
    这指的是AWS DocumentDB,而不是Azure改名后的DocumentDB。 - Casey Gibson
    3
    有益的文章!谢谢。 - nightElf91
    5
    @KcGibson,您能否将您的文章发布到dev.to上? - eliashdezr

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接