您当前的位置:首页 > 电脑百科 > 数据库 > 百科

2020年MongoDB的三大替代方案,各自的优缺点比较

时间:2020-08-13 16:24:22  来源:  作者:
2020年MongoDB的三大替代方案,各自的优缺点比较

 

来源:公众号《前端全栈开发者》

JAM Stack,PostgreSQL和Amazon的DynamoDB都是MongoDB的竞争替代品。

NoSQL是用于描述与SQL关系模型不对应的任何类型的数据库的名称。

NoSQL数据库起源于2009年,当时MySpace等网站规模不断扩大,之所以出现NoSQL,是因为当时的数据库无法满足所需的规模。

MongoDB是最著名的NoSQL数据库。JAVAScript开发人员经常使用它,尤其是那些使用MERN Stack或MEAN Stack(将Mongo与Express,Angular或React和Node结合使用)的开发人员。

人们为什么要离开MongoDB

一般来说,NoSQL与以往的数据库架构有很大的不同,会造成记录丢失,性能下降。NoSQL放弃了一些数据库的核心功能,这些功能使它们具有高性能且易于使用。作为响应,许多开发人员正在考虑从MongoDB和NoSQL转向其他替代方案,例如JAM Stack,PostgreSQL或DynamoDB。

2020年MongoDB的三大替代方案,各自的优缺点比较

 

《卫报》离开MongoDB是出了名的

在线出版物和英国报纸《卫报》在其2018年11月关于退出MongoDB的文章中获得了100,000多次观看。在这篇文章中,进行转换的开发人员透露,他们的团队在使用Mongo的数据库管理软件OpsManager时遇到了问题,而Mongo的支持代理在两次宕机期间并没有提供多大帮助。

MongoDB的三种选择

当许多人继续使用Mongo时,软件开发人员和数据库工程师可以使用许多替代方法,例如:

  1. JAM Stack:快速,安全和动态的网站无需Web服务器即可提供服务。
  2. PostgreSQL:SQL数据库以其可靠性,功能和性能而闻名。
  3. DynamoDB:Amazon Web Services(AWS)创建的NoSQL数据库。

这三个选项是当前MongoDB的最佳替代方案,在下一节中,我们将详细介绍每种选择的利弊。

MongoDB替代方案1:JAM Stack

2020年MongoDB的三大替代方案,各自的优缺点比较

 

JAM Stack是JavaScript、API和prerendered Markup的简称,它是一种完全避免需要数据库的无服务器架构。

JAM Stack甚至可以取一个文档数据库,只要数据可以移动到一大堆用Markdown写的JSON文件中。

使用JAM Stack时,通常使用Gatsby之类的工具来编译(或构建)整个应用程序。

不幸的是,这意味着任何更改都需要重建站点。

另一方面,如果通过API访问动态内容,则动态内容可以实时更改,例如通过Disqus处理的评论。

/ JAM Stack的优势 /

闪电般快速的内容交付是JAM Stack的最大优势,因为它没有服务器,整个应用程序都在客户端运行。

同时,还具有最大的seo——因为该应用程序已经过预编译,因此被当作静态页面使用,而不是按需生成。

JAM Stack的另一个优势是最小的托管成本。例如,静态页面基本上可以免费托管在AWS上。

/ JAM Stack的缺点 /

每个更改都必须重新构建,这意味着需要重新编译应用程序,然后该更改才能在线上可用。

并且,网站越大,构建时间越长。

因此,对于需要频繁发布,大量数据或实时编辑数据记录的应用程序,通常认为JAM Stack不适合。

MongoDB替代方案2:PostgreSQL

2020年MongoDB的三大替代方案,各自的优缺点比较

 

提倡使用SQL的人提到了SQL架构的流行和在SQL数据库上执行操作分析的卓越能力,关系型数据库已经发展起来了,它们可以处理几乎所有的工作负载,并满足现代应用程序所要求的可扩展性、可靠性和可用性。它们可以处理几乎所有的工作负载,并具有现代应用所要求的可扩展性、可靠性和可用性。

换句话说,如果SQL数据库可以扩展,那么它比NoSQL更可取。

PostgreSQL(也称为Postgres)是一种流行的免费SQL数据库,在其网站上称自己为“世界上最先进的开源数据库”。

/ PostgreSQL的优点 /

PostgreSQL是功能强大的软件,已经连续开发了30多年。很多人使用它,并且它有一个充满活力的社区。

它与平台无关。对于使用AWS的用户,可以使用Amazon Relational Database Service(RDS)上的Amazon Aurora托管它。

另外,PostgreSQL正在迅速发展。它的性能优于MySQL,MySQL已经比MongoDB快得多。

/ PostgreSQL的缺点 /

使用SQL本质上增加了任何项目的复杂性,它是团队每天使用的一种全新的编程语言。

从NoSQL迁移到SQL可能很困难。从根本上说,它们是一种不同类型的数据库结构。NoSQL是具有键值对的文档存储,而SQL由表和行组成。

其中一个选项,也是The Guardian在迁移中使用的,是PostgreSQL中的JSONb列类型。然而,使用JSON blobs感觉有点像黑客,就像把NoSQL数据库塞进了SQL格式。

MongoDB替代方案3:DynamoDB

2020年MongoDB的三大替代方案,各自的优缺点比较

 

DynamoDB是亚马逊网络服务(AWS)的NoSQL产品。MongoDB和DynamoDB都可以存储类似JSON的数据,具有任意的模式。

DynamoDB最近增加了一个名为rest加密的特性,现在它仍然是一个NoSQL数据库,与MongoDB竞争非常激烈。

这意味着从MongoDB迁移到DynamoDB确实非常容易。

/ DynamoDB的优点 /

DynamoDB是AWS上的旗舰NoSQL数据库,所以它的先天优势是AWS平台的成本、速度和可靠性。

作为AWS产品,它可以轻松地与AWS Lambda和API Gateway集成。

对于目前使用Mongo的人来说,DynamoDB的最大优势就是用户可以直接从MongoDB进行实时迁移到DynamoDB。

最好的部分是没有可管理的基础架构——Amazon负责管理。

/ DynamoDB的缺点 /

如果我认为NoSQL丢失记录的可能性太大,那么DynamoDB对我来说不是一个好选择。

DynamoDB可能存在可扩展性问题,比如那些与所谓的hotkeys相关的问题,这些记录的评估频率远远高于其他记录。

此外,与MongoDB相比,DynamoDB支持较少复杂的数据类型,并且是AWS专有的产品。

/ DynamoDB不是MongoDB /

Samantha Atkins和Fredrik Erasmus等有益的读者花时间对本文进行了回复,并提出了DynamoDB的其他缺点。

  • 用DynamoDB做索引是很困难的,没有全表扫描就没有一般的查询支持。
  • DynamoDB使得很难从集合中检索甚至简单的文档计数,并且它不使用游标。
  • DynamoDB的热键和热分区需要专业技术才能有效使用。
  • 使用AWS上的DynamoDB,你必须用RCU(读容量单位)和WCU(写容量单位)来指定“吞吐量容量”,这给你的项目增加了很大的复杂性。

DynamoDB被称为“我曾经使用过的最不友好的持久化解决方案”。事实上,MongoDB自己的广告文案列出了MongoDB相对于DynamoDB的十几项优势。

所以,在从MongoDB切换到DynamoDB之前,一定要三思而后行,尽管两者之间有明显的相似之处。

我的看法

JAM Stack是当今最酷的技术之一。它的速度快得离谱,易于访问,对SEO也很友好,另外静态文件在AWS上是免费托管的。

然而,JAM Stack只有对于那些有能力有一个构建步骤并重新编译每一个变化的应用程序才是正确的选择。

如果你问我,我会说,即使是非常大的网站也可以通过预定的编译,比如说每小时一次,在JAM Stack上构建。JAM Stack很激进。

它可能不适用于新闻站点,但是许多动态站点不需要比这更频繁地更新内容,静态站点当然也不需要。

SQL vs. NoSQL

如果说需要编译步骤是一个项目的决定性因素,那么就会归结为SQL与NoSQL:PostgreSQL或DynamoDB。

PostgreSQL不一定要托管在Amazon上,不过可以托管在Amazon RDS上。DynamoDB是由亚马逊开发的,是亚马逊的独家产品。

SQL数据库本身功能更强大,但也更复杂。它们的优势在于业务分析和搜索。

NoSQL数据库更容易设置,对很多项目来说足够了。这也是为什么The Guardian考虑用DynamoDB来写他们的230万篇文章。

最终,他们选择了PostgreSQL,因为DynamoDB在2017年的时候并没有提供加密功能,但如果他们今天考虑从MongoDB转移到PostgreSQL,他们很可能会做出不同的决定。

总结

JAM Stack(无服务器架构)是一个很好的选择,特别是对于任何一个以静态为主的网站,也是一个很好的技术,需要注意。

PostgreSQL拥有一个庞大的社区,并在一个可靠的、功能丰富的、性能卓越的开源软件包中提供了SQL的所有功能。

DynamoDB是MongoDB的即插即用的替代产品,它为你提供了规模、安全性和速度,而无需维护任何基础设施。



Tags:MongoDB   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
MongoDB 简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的最大特点是:•特别适合存储大量的无结...【详细内容】
2021-06-25  Tags: MongoDB  点击:(122)  评论:(0)  加入收藏
什么是MongoDB?mongodb是一个基于分布式文件储存的数据库,由C++编写。是一个文档型数据库,提供好的性能,领先的非关系型数据库MongoDB的储存形式类似于python的字典,以{‘...【详细内容】
2021-03-05  Tags: MongoDB  点击:(107)  评论:(0)  加入收藏
一、NoSQL的简介NoSQL比关系型数据库性能高数倍。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场。CP型分布式数据库,能够保证数据的强一致性和分区...【详细内容】
2021-02-25  Tags: MongoDB  点击:(446)  评论:(0)  加入收藏
我加入 MongoDB 还不到一年,但学到了很多东西。在面试这家公司前,我从未真正使用过 MongoDB,尽管我听过一些有关它的演讲,并且它的简单易用给我留下深刻印象。...【详细内容】
2021-01-26  Tags: MongoDB  点击:(203)  评论:(0)  加入收藏
需求:promethus对mongodb进行监控, 准备步骤:安装一个简单mongodb服务 下载MongoDB的插件 promethus 配置文件修改关联。一、快速简易安装一个mongodb服务 1、安装部署cat >/et...【详细内容】
2020-12-15  Tags: MongoDB  点击:(186)  评论:(0)  加入收藏
Redis定位在"快",MongoDB定位在"灵活",HBase定位于"大"。在一般使用情况下,MongoDB可以当作简单场景下的但是性能高数倍的MySQL,Redis基本只会用来做缓存,HBase用来存储海量数据...【详细内容】
2020-11-11  Tags: MongoDB  点击:(173)  评论:(0)  加入收藏
首先,如果用yum安装mongodb数据库的话,后期是无法使用自带mongodump工具进行导入导出的,另外MongoDB Compass工具无法整个库导出,很不方便,这里就会用到一个mongodb很实用的可视...【详细内容】
2020-09-25  Tags: MongoDB  点击:(1195)  评论:(0)  加入收藏
MongoDB作为一款NoSQL数据库,常应用在游戏开发领域。 作为一个后端程序,进行CRUD操作是家常便饭,但如果不看源码,便不会知道MongoDB底层是如何实现的,对自己写的CRUD代码,心里就没...【详细内容】
2020-09-23  Tags: MongoDB  点击:(190)  评论:(0)  加入收藏
导入和导出命令太枯燥了,让大家看看妹子mongoimport命令可以把一个特定格式文件中的内容导入到指定的collection中。该工具可以导入JSON格式数据,也可以导入CSV格式的数据。mo...【详细内容】
2020-09-21  Tags: MongoDB  点击:(108)  评论:(0)  加入收藏
MongoRocks 是基于著名的开源KV数据库RocksDB实现的一个MongoDB存储引擎,借助rocksdb的优秀特性,MongoRocks能很好的支持一些高并发随机写入、读取的应用场景。 MongoDB 与 Mo...【详细内容】
2020-08-21  Tags: MongoDB  点击:(133)  评论:(0)  加入收藏
▌简易百科推荐
1增1.1【插入单行】insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values (&#39;开心朋朋&#39;,&#39;男&#39;,&#39;1980/6/15&#3...【详细内容】
2021-12-27  快乐火车9d3    Tags:SQL   点击:(1)  评论:(0)  加入收藏
最近发现还有不少做开发的小伙伴,在写存储过程的时候,在参考已有的不同的写法时,往往很迷茫, 不知道各种写法孰优孰劣,该选用哪种写法,以及各种写法的优缺点,本文以一个简单的查询...【详细内容】
2021-12-23  linux上的码农    Tags:sql   点击:(9)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的HasorDB 是一个全功能数据库访问工具,提供对象映射、丰...【详细内容】
2021-12-22  GitHub精选    Tags:HasorDB   点击:(5)  评论:(0)  加入收藏
作者丨Rafal Grzegorczyk译者丨陈骏策划丨孙淑娟【51CTO.com原创稿件】您是否还在手动对数据库执行各种脚本?您是否还在浪费时间去验证数据库脚本的正确性?您是否还需要将...【详细内容】
2021-12-22    51CTO  Tags:Liquibase   点击:(3)  评论:(0)  加入收藏
场景描述:由于生产环境的表比较复杂,字段很多。这里我们做下简化,只为说明今天要聊的问题。有两张表 tab1,tab2: tab1 数据如下: tab2 数据如下: 然后给你看下,我用来统计 name=&#3...【详细内容】
2021-12-20  Bald    Tags:SQL   点击:(5)  评论:(0)  加入收藏
前言知识无底,学海无涯,知识点虽然简单,但是比较多,所以将MySQL的基础写出来,方便自己以后查找,还有就是分享给大家。一、SQL简述1.SQL的概述Structure Query Language(结构化查...【详细内容】
2021-12-16  谣言止于独立思考    Tags:SQL基础   点击:(13)  评论:(0)  加入收藏
前言作为一名测试工程师,工作中在对测试结果进行数据比对的时候,或多或少要和数据库打交道的,要和数据库打交道,那么一些常用的 SQL 查询语法必须要掌握。最近有部分做测试小伙...【详细内容】
2021-12-14  柠檬班软件测试    Tags:SQL   点击:(15)  评论:(0)  加入收藏
话说C是面向内存的编程语言。数据要能存得进去,取得出来,且要考虑效率。不管是顺序存储还是链式存储,其寻址方式总是很重要。顺序存储是连续存储。同质结构的数组通过其索引表...【详细内容】
2021-12-08  小智雅汇    Tags:数据存储   点击:(17)  评论:(0)  加入收藏
概述DBConvert Studio 是一款强大的跨数据库迁移和同步软件,可在不同数据库格式之间转换数据库结构和数据。它将成熟、稳定、久经考验的 DBConvert 和 DBSync 核心与改进的现...【详细内容】
2021-11-17  雪竹聊运维    Tags:数据库   点击:(26)  评论:(0)  加入收藏
一、前言 大家好,我是小诚,《从0到1-全面深刻理解MySQL系列》已经来到第四章,这一章节的主要从一条SQL执行的开始,由浅入深的解析SQL语句由客户端到服务器的完整执行流程,最...【详细内容】
2021-11-09  woaker    Tags:SQL   点击:(35)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条