当前位置:首页 > 编程语言 > 正文内容

DynamoDB与MongoDB:二选一,向SQL说不

a811625533年前 (2023-07-17)编程语言18

数据库是大多数应用程序和网站的关键组成部分。它们存储内容和用户详细信息等关键数据,并可能捕获应用程序中发生的事件。目前有许多不同的数据库技术,您所选择的数据库技术会影响到从应用架构到开发流程的方方面面。

在此,我们将仔细研究DynamoDB和这两种非传统关系数据库的流行产品。您可以决定这种 “NoSQL” *** 是否适合您的应用,以及这两种数据库平台中哪一种最适合您。

了解技术:DynamoDB与MongoDB

在过去十年中,NoSQL数据库越来越受欢迎,以满足对更灵活和可扩展技术的需求。社交 *** 和用户生成内容的增长在一定程度上推动了这一需求。

多年来,大多数应用都使用传统的SQL数据库,其中每一行数据都描述了一个不同的实体及其与其他实体的关系。在响应查询时,关系数据库将不同行的数据连接起来,然后返回给客户端应用程序。这种架构经过优化,可减少存储并消除重复数据,因为结果集中的每个元素通常只在数据库中存储一次。

相比之下,NoSQL数据库通常将基本实体和相关数据存储在单个文档中。这意味着某些数据被记录多次,增加了存储需求。但是,随着存储成本的下降,NoSQL解决方案的可扩展性在许多用例中占据了优先地位。其底层架构使NoSQL数据库特别适合在集群中运行,数据分布在多个节点上。

什么是DynamoDB?

DynamoDB是一种无服务器NoSQL数据库,由亚马逊开发,用于支持其著名的在线购物目的地,并于2012年在其云托管平台上提供给。与亚马逊的商店一样,DynamoDB在响应查询时无需像关系数据库那样进行复杂的连接。

DynamoDB针对规模进行了优化,是一种键值项存储,与特定键相关的所有数据都存储在其中。无需连接!由于消除了这一要求,工程师对DynamoDB进行了优化,以快速返回数据。

亚马逊通过AWS将DynamoDB作为完全托管服务提供。这就是DynamoDB受到开发人员欢迎的原因,开发人员可以使用DynamoDB,而数据库开销极小。此外,该服务可随着应用程序用户的增加而轻松扩展。而且,如果公司使用其他AWS工具,DynamoDB可以无缝地插入其中。

DynamoDB徽标

DynamoDB如何工作?

DynamoDB是一个NoSQL键值项存储,由于它是一个托管服务,其底层架构和基础设施对开发人员是抽象的。

在DynamoDB的引擎盖下,数据使用主键进行分区,每个分区包含三个节点,每个节点保存一份数据副本。由于数据分布在多台服务器上,因此这种分区可以轻松实现扩展。此外,如果某个节点出现故障,数据复制还可提供冗余。

三个节点中的一个节点被指定为领导节点,所有写入数据在复制到其他两个节点之前首先在该节点发出。首先写入领导节点使DynamoDB能够保持一致的写入。为获得更佳读取一致性,所有 DynamoDB 读取也必须使用领导节点。

在读取繁重的应用程序中,这种 *** 会带来性能代价,因此DynamoDB为用户提供了选择 “最终 “一致性的能力。这使得读取可以分散到所有节点。然而,如果数据在读取操作之前尚未传播到所有节点,则此选项可能会牺牲准确性。

DynamoDB的优缺点

DynamoDB的主要优点是无服务器、可扩展和快速。你可以在几分钟内配置好它,只需最小的基础设施开销。AWS负责安全、升级、服务器管理和确保高可用性。此外,DynamoDB可以在按使用付费的模式下无限扩展(仅受限于AWS的物理大小)。最后,DynamoDB提供快速读取和写入,其扩展能力可确保在数据存储增长时保持快速性能。

DynamoDB的缺点是查询选项极少。关键字查询很有帮助,但如果需要更复杂的查询(如聚合),则必须将数据导出到外部数据库进行分析。此外,DynamoDB仅通过AWS提供。如果您已经集成到AWS生态系统中,那就不成问题。如果您的公司希望在内部部署,则必须另寻他处。

什么是MongoDB?

MongoDB是一种NoSQL文档存储,最初于2009年作为发布,并提供商业支持包。它将 *** ON文档存储为二进制 *** ON()对象,可以存储嵌套属性和数组等复杂的数据结构。

MongoDB可在Windows、macOS和Linux平台上运行,支持多种编程语言。您还可以在亚马逊、谷歌和微软等流行的云平台上找到MongoDB。

MongoDB之所以流行,主要是因为其灵活性。它具有NoSQL数据库的所有优点,同时还能满足更复杂的要求,如用于数据完整性、和数据集连接的。而且,由于MongoDB原生支持,因此对于使用这种流行编程语言的网站来说,MongoDB是一种越来越受欢迎的后端数据库。

MongoDB徽标

MongoDB如何工作?

MongoDB存储包含一个或多个键值对的BSON对象。这些值可以是简单的数据类型,如字符串和时间戳,也可以是复杂的数据类型,如嵌套对象和数组。

MongoDB将文档存储在 *** 中,类似于表格中的行。通常的做法是,一个 *** 中的文档共享一个相似的模式,但即使具有相同键的文档也可能具有不同的模式–具有相同名称的键并不需要存储相同的数据类型。当插入或更新记录时,MongoDB可以对属性进行强制验证,并且要求某些键中的数据必须是特定类型的。

MongoDB还提供分片功能,这与DynamoDB中的分区功能类似。分片根据分片键将数据分布到多个服务器上。分发数据可以将读写操作分散到多台服务器上,防止单台服务器过载。

MongoDB的优缺点

除了NoSQL的典型优势之外,MongoDB还支持多种平台–这对于那些希望灵活选择或能够托管内部数据库的公司来说至关重要。

MongoDB还通过其聚合管道支持复杂的查询和聚合。与其他NoSQL相比,MongoDB异常灵活,因为它支持分析查询、文档搜索和数据连接。不过,在大规模使用时,性能可能会下降。此外,MongoDB Atlas还为寻求消除基础设施管理负担的公司提供了无服务器选项。

MongoDB的缺点之一是其数据占用空间可能相当大,因为文档必须同时存储数据和密钥。此外,尽管MongoDB的聚合管道是强大的工具,但由于使用了定制的语法,其编写和构建异常复杂。

最后,对于不使用的用户来说,尤其是对于使用复制和分片技术来确保系统性能的生产系统来说,存在基础设施开销。这包括监控、管理数据偏差、执行升级以及安全管理。

DynamoDB vs MongoDB

尽管DynamoDB和都是,但它们有很大的不同。您的用例将在很大程度上决定使用哪一个。

首先,DynamoDB在模式级别的可用数据类型选项较少。例如,DynamoDB不支持日期,这意味着开发人员必须在应用程序中维护解析和处理日期的逻辑。MongoDB支持更多数据类型,包括日期。

其次,DynamoDB能够通过键值查找和表扫描进行查询。但是,它的表扫描性能不足。对于更复杂或特殊类型的查询,您的更佳选择是导出到其他数据库。相比之下,MongoDB支持分析查询和数据连接之上的键值查询。它提供更灵活的索引支持,因为您可以为任何字段添加二级索引。虽然DynamoDB支持二级索引,但它们受到概念复杂性和可创建数量的限制。

在安全方面,DynamoDB受益于AWS平台。DynamoDB的身份验证通过AWS用户访问控制进行。这使得DynamoDB数据库的安全性变得相当简单。

而使用MongoDB,您需要负责所有的安全限制,包括创建用户账户和管理 *** 访问。这意味着开销要高得多。然而,MongoDB Atlas将MongoDB变成了托管解决方案,从而消除了这些挑战。

作为一个托管解决方案,DynamoDB具有内置备份和恢复功能,包括多区域复制能力和简单的备份恢复。默认情况下,MongoDB不会管理这些流程,需要手动配置。MongoDB Atlas在一定程度上简化了这一过程,但需要进行额外的配置。

DynamoDB与MongoDB一览

特征 DynamoDB MongoDB
数据类型 除日期外的大多数标准数据类型 BSON规范中的任何数据类型,包括日期
查询 通过有限的多文档查询进行关键字查询 关键字查找、查询、连接和聚合
安全 内置AWS,开销小 自我管理,除非使用MongoDB Atlas
可扩展性 内置AWS,开销小 自管理,除非使用MongoDB Atlas
备份和恢复 内置AWS,开销小 自管理,除非使用MongoDB Atlas

总体而言,MongoDB是更灵活的选择–它可以部署在任何地方,并提供更丰富的数据存储和查询工具。然而,如果要选择一个与AWS紧密集成、减少基础设施和安全开销的精简数据库,DynamoDB可能是一个不错的选择。

小结

MongoDB和DynamoDB都是高性能的NoSQL产品,它们的相对优势使其适用于截然不同的用途。对于精简而简单的解决方案,DynamoDB是一个强有力的选择。但是,如果您需要更复杂的模式、聚合查询和更好的索引支持,那么MongoDB将是您的不二之选。

请记住,灵活性的代价是基础设施开销的增加。但是,如果您需要MongoDB的灵活性并希望减少开销,那么MongoDB Atlas往往是一个经济实惠的折中方案。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://2345hao.cn/blog/index.php/post/8046.html

分享给朋友:

“DynamoDB与MongoDB:二选一,向SQL说不” 的相关文章

什么是JavaScript?网络上最流行的脚本语言一瞥

什么是JavaScript?网络上最流行的脚本语言一瞥

谁在尝试访问某些网站时没有遇到过更新Java的请求? 虽然许多人通过交互式网站功能熟悉Java,但用户可能不太熟悉JavaScript——或者,实际上,他们可能错误地认为两者是相同的。 在本文中,我们将讨论JavaScript 是什么以及Java和JavaScript之间的区别。然后我们将概...

宝塔面板教程之计划任务篇

宝塔面板教程之计划任务篇

宝塔面板的计划任务,主要用于安排和管理需要定时执行的任务,如备份、内存清理等。其实对于大部分站长来说,主要使用该板块的备份网站、备份数据库及释放内存的三个定时任务计划。   Shell脚本的添加 输入任务名称,选择执行周期,输入执行的脚本内容。 注意事项: 输入脚本内容...

如何成为一名出色的Java开发人员

如何成为一名出色的Java开发人员

美国劳工统计局估计在美有超过软件开发人员。根据2021年的数据,其中,这是世界上使用最广泛的五种编程语言之一。 自然,学习Java并成为Java开发人员对于任何对软件开发感兴趣的人来说都是明智的职业选择。 在本综合指南中,您将学习成为Java开发人员所需的一切知识。我们将分解您需要的技能、工...

PostgreSQL与SQL Server之间的16个关键差异

PostgreSQL与SQL Server之间的16个关键差异

市场上有各种各样的数据库可供选择,用户通常可以仔细考虑PostgreSQL与SQL Server,以便为他们的用例找出更好的选择。使用PostgreSQL进行运营的组织可能希望切换到像Microsoft SQL Server这样的数据库,因为它主要迎合不同的数据仓库解决方案、电子商务和其他业务线...

PHP 8.2年内将发布,一起来看看都有什么新特征

PHP 8.2年内将发布,一起来看看都有什么新特征

PHP 8.2预计将于今年11月发布,最新的稳定版本是PHP 8.1.5。虽然现在还为时过早,但对更新的接受程度参差不齐。 但是,知道会发生什么可以帮助您。通过了解新功能和不推荐使用的功能,您可以了解更新可能如何影响开发。这些知识还可以帮助您为最终发布做好准备。 在这篇文章中,我们将回顾最新...

安装DragonflyDB内存数据存储以提升网站性能

安装DragonflyDB内存数据存储以提升网站性能

DragonflyDB是一个内存数据存储应用程序,可以帮助提高网站性能。 DragonflyDB DragonflyDB是一个免费的内存数据存储应用程序,运行在Linus OS上。它使用每核线程架构来减少延迟。Dragonfly与Redis和Memcached兼容。它是KeyDB的合...