AWS最近启动了类似于MongoDB接口的新服务DocumentDB。
AWS DynamoDB与DocumentDB服务之间有什么区别?
哪项服务的性能更好?
答案 0 :(得分:7)
DynamoDB和DocumentDB是AWS提供的两项服务,它们在很多方面有所不同。因此,在迁移到它们中的任何一个之前,我希望您详细了解它们之间的区别,以便您可以确定哪种最适合您的用例。下面,我试图阐明它们之间的区别,并说明如何迁移到它们。
Amazon DynamoDB 是一项完全托管的NoSQL数据库服务。它具有可扩展性,可提供快速且可预测的性能。您可以使用Amazon DynamoDB创建一个数据库表,该表可以存储和检索任何数量的数据,并可以处理任何级别的请求流量。 文档数据库基于开源文档数据库Mongo DB和领先的NoSQL数据库。文档数据库基于开源Mongo DB,并且是为减少开发和扩展而设计的文档数据库。
DynamoDB 使用表,项目和属性作为您使用的核心组件。表是项目的集合,每个项目是属性的集合。 DynamoDB使用主键来唯一标识表中的每个项目,并使用辅助索引来提供更大的查询灵活性。 文档数据库使用类似JSON的文档来存储无模式数据。在Document DB中,文档集合不需要预定义的结构,并且不同文档的列可能会有所不同。文档数据库具有关系数据库的许多功能,包括表达性查询语言和强一致性。由于它是无架构的,因此MongoDB / Document DB允许您创建文档,而不必先为文档创建结构。
在 DynamoDB 中,您可以创建和使用所谓的二级索引,用于与RDBMS中类似的目的。创建二级索引时,必须指定其键属性,创建二级索引后,可以像查询表一样对其进行查询或扫描。 DynamoDB没有查询优化器,因此二级索引仅在查询或扫描时使用。 在文档数据库中首选索引。如果缺少索引,则必须搜索集合中的每个文档以选择查询所请求的文档。这会减慢读取时间。
DynamoDB 在游戏行业以及物联网(IoT)行业中都很流行。
答案 1 :(得分:2)
主要区别在于DocumentDB是MongoDB和DynamoDB之间的中间步骤。
DynamoDB是一项完全托管的可扩展服务,您可以在其中设置其潜力的上限。
DocumentDB需要更多操作,您必须选择集群的实例数和实例大小。这意味着您需要关注它们的使用/性能,而不是MongoDB的扩展。
MongoDB将是最灵活的,但也需要最多的维护。
根据应用程序的不同,所有这些都对性能有好处,但这取决于您想要的灵活性与更多的维护成本。
另一个因素是定价模型。 MongoDB(Atlas)和DocumentDB都是您每小时支付的(加上DocumentDB的使用费)。您可以根据预配置的资源或按需支付DynamoDB的费用(按使用量付费)。
答案 2 :(得分:1)
文档数据库是一种非关系数据库,旨在将半结构化数据存储为文档。文档数据库对于开发人员来说很直观,因为应用程序层中的数据通常表示为JSON文档。开发人员可以使用与他们的应用程序代码相同的文档模型格式来保留数据。在文档数据库中,每个文档可以具有相同或不同的数据结构,并且每个文档都是自描述的(包括其唯一的架构),并且不一定依赖于任何其他文档。文档被分组为“集合”,其目的类似于关系数据库中的表。
Amazon DocumentDB(具有MongoDB兼容性)是一种快速,可扩展,高度可用且完全托管的文档数据库服务,支持MongoDB工作负载。开发人员可以使用相同的MongoDB应用程序代码,驱动程序和工具来运行,管理和扩展Amazon DocumentDB上的工作负载,并享受改进的性能,可伸缩性和可用性,而不必担心管理基础基础架构。
Amazon DynamoDB是一个非关系数据库,可在任何规模上提供可靠的性能。它是一个完全托管的,多区域,多主数据库,可提供一致的单位毫秒毫秒的延迟,并提供内置的安全性,备份和还原以及内存中缓存。 DynamoDB支持本机JSON,因此您可以将JSON文档直接写入DynamoDB表中。 DynamoDB的最大项目大小为400 KB,可让您在一次交易中存储大型JSON文档和嵌套对象。
1)Amazon DynamoDB是一项完全托管的NoSQL数据库服务。它具有可扩展性,可提供快速且可预测的性能。您可以使用Amazon DynamoDB创建一个数据库表,该表可以存储和检索任何数量的数据,并可以处理任何级别的请求流量。
文档数据库基于开源文档数据库Mongo DB和领先的NoSQL数据库。文档数据库基于开源Mongo DB,并且是为减少开发和扩展而设计的文档数据库。
2)DynamoDB使用表,项目和属性作为您使用的核心组件。表是项目的集合,每个项目是属性的集合。 DynamoDB使用主键来唯一标识表中的每个项目,并使用辅助索引来提供更大的查询灵活性。
MongoDB /文档数据库使用类似JSON的文档来存储无模式数据。在Document DB中,文档集合不需要预定义的结构,并且不同文档的列可能会有所不同。文档数据库具有关系数据库的许多功能,包括表达性查询语言和强一致性。由于它是无架构的,因此MongoDB / Document DB允许您创建文档,而不必先为文档创建结构。
3)在DynamoDB中,出于类似于RDBMS的目的,可以创建和使用所谓的二级索引。创建二级索引时,必须指定其键属性,创建二级索引后,可以像查询表一样对其进行查询或扫描。 DynamoDB没有查询优化器,因此二级索引仅在查询或扫描时使用。
在MongoDB / Document DB中首选索引。如果缺少索引,则必须搜索集合中的每个文档以选择查询所请求的文档。这样会减慢读取时间。
4)DynamoDB在游戏行业以及物联网(IoT)行业中都很流行。
总而言之,如果您需要实时分析的可伸缩性和缓存,Document DB是一个不错的选择。但是,它不是为交易数据(会计系统等)构建的。 Document DB可用于移动应用,内容管理,实时分析和物联网应用。如果您的案例没有明确的架构定义,那么DocumentDB是一个不错的选择。
关于AWS DynamoDB和DocumentDB服务之间的更好性能,这完全取决于工作负载的类型和所涉及的数据,因此我们无法在不了解实际用例和数据类型的情况下基于性能来决定服务之间的关系。 。展望未来,我建议您同时测试AWS DynamoDB和DocumentDB服务,并根据它们决定哪种服务最适合您的用例并提供更好的性能。