MongoDB与MySQL:怎样挑选
分类:互联网事 热度:

MongoDB和MySQL划分是当先的开源NoSQL和关系数据库。谁人最合适您的应用程序?

MongoDB与MySQL:若何挑选

在1990年月的互联网泡沫期间,用于Web应用程序的一种通用软件客栈是LAMP,它最初代表Linux(OS),Apache(Web服务器),MySQL(关系数据库)和PHP(服务器编程语言)。MySQL是首选的数据库,重要是因为它是免费的开源代码,而且拥有精良的读取机能,非常适合从数据库动态天生网站的“Web 2.0”应用程序。

以后,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Node.js(后端JavaScript运转时)的MEAN客栈最先盛行。除其余缘故外,MEAN仓库很有吸引力,由于您须要领会的仅有说话是JavaScript。与等效的LAMP仓库比拟,它还必要更少的RAM。

甚么是MySQL / MariaDB?

MySQL AB的Monty Widenius和David Axmark最初于1994年开端开辟MySQL。产品名称中的“My”是指Widenius的女儿,而不是英语单词“ my”。MySQL旨在与mSQL(别名Mini)兼容。SQL),并增加了SQL盘问层和开放源代码答应(实际上是专有和GPL两重允许)。MySQL的大众发行版于1996年末入手,而且每一年或每两年延续刊行一次。MySQL是当前最受欢迎的关系数据库。

Sun Microsystems于2008年以10亿美元的代价收买了MySQLAB,Oracle于2010年收买了Sun。在Oracle收买MySQL的普遍关注中,Widenius在收买Oracle以前就将MySQL5.5兼并到了MariaDB中。MariaDB勤奋保护与Oracle MySQL版本的兼容性。

与功效更壮大的贸易关系数据库(比方Oracle数据库,IBM DB / 2和Microsoft SQLServer)比拟,MySQL最初是一个至关低端的关系数据库,虽然它足以成为动态网站的后备存储。多年来,它增多了您愿望从关系数据库获取的大多数功效,包罗事件,参照完整性束缚,存储历程,游标,全文索引和搜寻,地舆索引和搜寻以及聚集。

虽然MySQL如今支撑“大数据库”功效,比方主从布置,与Memcached一块儿运用以及程度分片,但它仍平日用于中小型布置。将MySQL扩大到多个隶属服务器能够进步读取机能,然则只有主服务器才气担当写拜托。

AWS供应了两种模式的MySQL即办事,即Amazon RDS和AmazonAurora。后者拥有更高的机能,能够解决TB级的数据,更新副本的延迟时间更短,而且能够直接与Oracle数据库和SQL Server合作。

甚么是MongoDB?

MongoDB是高度可伸缩的操纵文档数据库,可在开源版本和贸易企业版本中运用,它能够在本地运转或作为托管云效劳运转。托管云效劳称为MongoDBAtlas。

MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员供给了极大的灵活性,而其分布式体系结构则供给了很好的可伸缩性。因而,平常挑选MongoDB用于必需治理大量数据,得益于程度可伸缩性并解决不得当干系模子的数据结构的应用程序。

MongoDB是一个基于文档的存储,在其之上还拥有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(二进制JSON),该扩大了JSON表现(字符串)以包含其余范例,比方int,long,date,浮点,decimal128和地舆空间坐标。

MongoDB能够应用数据的范例天生精确的索引范例,从而在数据的单个副本上天生多形式图形,地舆空间,B树和全文本索引。MongoDB使您能够在任何文档字段上创立索引。MongoDB4具备多文档事件,这意味着即便必需标准化数据计划,您依然能够得到ACID属性。

默许环境下,MongoDB应用动态形式,偶然称为无形式。单个聚集中的文档不需求拥有雷同的字段集,而且字段的数据类型能够在荟萃中的分歧文档之间有所不同。您能够随时利用动态形式变动文档构造。

然则,能够利用架构管理。从MongoDB 3.6起头,MongoDB支撑JSON形式考证,您能够在考证器表达式中将其翻开。

LAMP和MEAN货仓

在LAMP和MEAN客栈上存在良多变革。比方,您能够在Windows(WAMP)或MacOS(MAMP)上运转而不是LinuxOS。您能够运转IIS(WIMP),而不是Windows上的Apache Web服务器。

您能够运转PostgreSQL或SQLServer,而不是LAMP仓库中的MySQL关系数据库。要是您必要环球散布,则能够运转CockroachDB或Google CloudSpanner。能够应用Perl或Python取代PHP说话。若是要运用Java或C#举行编码,则须要思量独自的客栈系列。

您能够运转Couchbase或Azure CosmosDB以获取更好的全局漫衍,而不是MEAN仓库中的MongoDB文档数据库。能够利用十二个Node.js Web服务器框架中的任何一个来取代Express。除了AngularJS前端框架,您还能够运转Angular 2或React。

怎样为您的应用程序挑选数据库

挑选数据库时要问的最紧张的题目是:

  • 您但愿在应用程序成熟时存储几何数据?
  • 您但愿在顶峰负载下同时解决几何个用户?
  • 您的应用程序必要甚么可用性,可伸缩性,耽误,吞吐量和数据一致性?
  • 您的数据库架构多久变动一次?
  • 您的用户群体的地理分布是甚么?
  • 您的数据的天然“外形”是甚么?
  • 您的应用程序须要在线事务处理(OLTP),阐明查问(OLAP)仍是同时必要二者?
  • 您希冀出产中的读写比例是几许?
  • 您必要地舆查问和/或全文盘问吗?
  • 您首选的编程语言是甚么?
  • 你有估算吗?要是是如许,它将涵盖允许和撑持条约吗?

这些题目中的几个会趋于缩小数据库的挑选规模,然则与拟定LAMP客栈时比拟,咱们有更多挑选。要是您要构建一个应用程序,而且该应用程序必需在99.999%的工夫内对全世界的用户都拥有高度的一致性,那末只有少数几个数据库得当您。若是您的应用程序将在工作日的上午9点至下昼6点在一个国度/地域应用,而且能够容忍终究的一致性,那末简直一切数据库都能够运用,虽然某些数据库对付开发人员和操作员而言更轻易,而某些数据库则能够为您的重要运用场景供应更好的机能。

固然LAMP和MEAN仓库一次是Web应用程序的精良解决方案,但此刻都不是最好挑选。而不是自觉采取任何一种,您该当认真思索用例,并找到一种可在可预感的未来为您的应用程序办事的体系结构。

SQL仍是NoSQL?

您甚么时分需求关系数据库(比方MySQL)用于新应用程序?除了对规范SQL的显着支撑外,关系数据库自身将数据强迫为拥有同等的强范例字段的表格形式,而且只要您使用规范化就能够协助您防止数据反复。

要是需求防止失落数据,则能够NOTNULL在建立或修正表时声明字段。要是您须要由开放地舆空间同盟界说的地舆盘问,则大多数关系数据库都将供应靠得住的实现。并且,假如您需求全文搜寻,则大多数关系数据库都许可您在文本字段上界说倒摆列表索引,FULLTEXT在MySQL中称为索引。

另一方面,假如您还须要偶然的自在款式文档,则MySQL和很多其余关系数据库也撑持RFC7159界说的JSON数据。若是您还想运用XML文档和XPath或XSLT,则大多数关系数据库都能够供应这类威力。

您什么时候须要像MongoDB如许的文档数据库?要是您的首要用例须要答应运用自在款式的数据,在文档之间变动范例的字段,随工夫变革的架构或嵌套的文档,则NoSQL数据库将满足要求。别的,若是您的应用程序是用JavaScript编写的,那末文档数据库的JSON花式将很天然。

作者:MartinHeller是InfoWorld的特约编辑和审稿人。他曾担当Web和Windows编程参谋,从1986年至2010年开辟数据库,​​软件和网站。近来,他担负AlphaSoftware技能和教诲副总裁以及Tubifi董事长兼首席执行官。

【编辑保举】

上一篇:Android中的权限题目 下一篇:聪明物流的憧憬
猜你喜欢
各种观点
热门排行
精彩图文