MongoDB和MySQL对比(译)

一、概要

几十年来,关系型数据库已经成为企业应用程序的基础,自从MySQL在1995年发布以来,它已经成为一种受欢迎并且廉价的选择。然而随着近年来数据量和数据的不断激增,非关系数据库技术如MongoDB应运而生,以满足新应用的需求。 MongoDB用于新的应用程序,以及扩充或替换现有的关系型基础设施(关系型数据库)。

二、什么是Mysql

MySQL是由Oracle公司开发,发布和支持的受欢迎的开源关系数据库管理系统(RDBMS)。像其他关系系统一样,MySQL将数据存储在表中,并使用结构化查询语言(SQL)来进行数据库访问。在MySQL中,您可以根据需要预先定义数据库模式,并设置规则来管理表中字段之间的关系。在MySQL中,相关信息可能存储在单独的表中,但通过使用关联查询来关联。通过使用这种方式,使得数据重复量被最小化。

三、 什么是MongoDB

MongoDB是由MongoDB,Inc.开发的开源数据库。MongoDB将数据存储在类似JSON的文档中,并且文档中每个json串结构可能有所不同。相关信息存储在一起,通过MongoDB查询语言进行快速查询访问。 MongoDB使用动态模式,这意味着您可以在不首先定义结构的情况下创建记录,例如字段或其值的类型。您可以通过添加新字段或删除现有记录来更改记录的结构(我们称之为文档)。该数据模型可以让您轻松地代表层次关系,存储数组和其他更复杂的结构。集合中的文档不需要具有相同的一组字段,数据的非规范化是常见的。 MongoDB还设计了高可用性和可扩展性,并提供了即用型复制和自动分片功能。

四、 术语和概念

MySQL中的许多概念在MongoDB中具有相近的类比。本表概述了每个系统中的一些常见概念。

MySQL

MongoDB

集合

文档

字段

joins

嵌入文档或者链接

五、 特色对比

像MySQL一样,MongoDB提供了丰富的远远超出了简单的键值存储中提供的功能和功能。 MongoDB具有查询语言,功能强大的辅助索引(包括文本搜索和地理空间),数据分析功能强大的聚合框架等。相比使用关系数据库使用MongoDB,您还可以使用这些功能,跨越更多样化的数据类型和数据规模。

MySQL

MongoDB

丰富的数据模型

动态Schema

数据类型

数据本地化

字段更新

易于编程

复杂事务

审计

自动分片

六、 查询语言

MySQL和MongoDB都有丰富的查询语言。在MongoDB文档https://docs.mongodb.com/manual/reference/sql-comparison/?_ga=2.97293983.1414641971.1500188964-1583439788.1500188964 中可以找到一个完整的语句列表。

image.png

七、 为什么要使用MongoDB而不是MySQL?

各种规模的组织企业都采用MongoDB,因为它能够更快地构建应用程序,处理高度多样化的数据类型,并更有效地管理应用程序。

简化了开发,因为MongoDB文档自然映射到现代的面向对象编程语言。使用MongoDB可以避免将代码中的对象转换为关系表的复杂对象关系映射(ORM)层。

MongoDB的灵活数据模型也意味着您的数据库模式可以随业务需求而发展。例如,在天气频道的MySQL数据库中花费数周时间的模式更改可能会在短短几个小时内由MongoDB进行。 MongoDB还可以在多个分布式数据中心之间进行扩展,提供以前MySQL等关系数据库无法实现的新的可用性和可扩展性。随着在数据量和吞吐量方面的增长,MongoDB可轻松扩展,无需停机,无需更改应用程序。相比之下,要实现与MySQL的规模往往需要大量的定制工程。百度从MySQL迁移到MongoDB,以支持其快速增长的业务。中国互联网服务巨头现在拥有超过100个应用程序,并使用MongoDB集群管理超过1PB的数据。

八、 MongoDB场景使用场景?

MongoDB是用于各种用例的通用数据库。 MongoDB最常见的用例包括单视图,物联网,移动,实时分析,个性化,目录和内容管理。

九、 何时用MySQL比较合适

虽然大多数现代应用程序需要一个灵活的可扩展系统,如MongoDB,但是有一些关系数据库(如MySQL)将更适合使用的情况。需要复杂的多行事务的应用程序(例如双记录bookkeep系统)将是很好的例子。 MongoDB不是围绕关系数据模型和SQL构建的遗留应用程序的替代方法。

一个具体的例子是旅行预订系统背后的预订引擎,通常还涉及复杂的事务。虽然核心预订引擎可能在MySQL上运行,但是与用户互动的应用程序部分 – 提供内容,与社交网络集成,管理会话 – 将更好地放在MongoDB中

十、 MongoDB和MySQL能否一块使用?

MongoDB和MySQL的混合部署有很多例子。在某些情况下,这是一个使用合适工具的的问题。例如,许多电子商务应用程序使用MongoDB和MySQL的组合。产品目录包括具有不同属性的多个产品,非常适合MongoDB的灵活数据模型。另一方面,需要复杂事务的结帐系统可能建立在MySQL或其他关系数据库技术上。

在其他情况下,新的业务需求推动企业采用MongoDB作为其应用程序的下一代组件。例如,世界领先的业务管理软件和服务供应商之一的Sage集团将MongoDB整合到其适用于中型企业的受欢迎的企业资源规划(ERP)解决方案中。 Sage客户现在享受更高程度的功能和个性化作为一体化的结果。虽然许多Sage产品最初建立在MySQL上并继续运行,但最新的用户体验功能集中在MongoDB周围。 除了这几个例外,我们认为,由于其灵活的数据模型和可扩展架构,MongoDB几乎总是比MySQL更好的选择。

十一、想了解更多?获取RDBMS到MongoDB迁移指南

由于我们今天构建和运行应用程序的方式以及数据源和用户负载的增长,关系数据库被超越了极限。为了应对这些挑战,像MTV和思科这样的公司已经从关系数据库成功迁移到了MongoDB。在本白皮书中,您将学习:

  • 一步一步如何从关系数据库迁移到MongoDB。
  • 相关技术考虑,如关系和文档数据模型之间的差异以及对模式设计的影响。
  • 索引,查询,应用程序集成和数据迁移。

原文发布于微信公众号 - java一日一条(mjx_java)

原文发表时间:2017-07-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA烂猪皮

大型分布式网站架构实战项目分析

distributed system is one in which components located at networked computers com...

1992
来自专栏python开发者

软件开发过程自动化原理及技术(完整示例)

软件开发过程自动化原理及技术 一个简单完整的自动化示例 1   概述 关于本文,最开始只是想写一些关于 软件自动化测试开发 的文章,但是后来写着写着,发现不先在...

2775
来自专栏顶级程序员

谈谈互联网后端基础设施

作者:飒然Hang 原文:www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/ (点击文末阅读原文即可...

4396
来自专栏Java编程技术

MongoDB和MySQL对比(译)

几十年来,关系型数据库已经成为企业应用程序的基础,自从MySQL在1995年发布以来,它已经成为一种受欢迎并且廉价的选择。然而随着近年来数据量和数据的不断激增,...

4821
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–应付账款(158)-3 F110使用付款程序过帐预付款

4.3 F110使用付款程序过帐预付款 对供应商的预付定金可使用付款程序自动过帐。 必须过帐预付款。 必须不激活支付发布清单和直联支付(EPIC)应用程序才能...

37411
来自专栏IT技术精选文摘

大型网站架构总结

一、大型网站的特点 用户多,分布广泛 大流量,高并发 海量数据,服务高可用 安全环境恶劣,易受网络攻击 功能多,变更快,频繁发布 从小到大,渐进发展 以用户为中...

3156
来自专栏前端迷

Node.js初探

首先,我想说:“很荣幸在经历了2个月的努力,第一个Node.js项目落地了”。整个项目做下来,还是算比较顺畅的。

6192
来自专栏非著名程序员

关于Android中设置闹钟的相对比较完善的解决方案

? 前些时候,有人在我「非著名程序员」公众号的后台问我有没有设置闹钟的demo,我当时说承诺为大家写一个,一直没空,直到最近又有人跟我要,我决定抽时间写一个吧...

43010
来自专栏北京马哥教育

小白用Python | 桑心病狂,试试把报警信息发到微信上

? 前言 笔者所在公司项目的报警信息会通过钉钉发送到群组或个人,这样如果服务出现了问题我们都会第一时间收到提醒并进行处理。 某日从钉钉收到报警信息的我突发奇想...

4607
来自专栏瓜大三哥

FPGA中的竞争和冒险现象

冒险往往会影响到逻辑电路的稳定性。时钟端口、清零和置位端口对毛刺信号十分敏感,任何一点毛刺都可能会使系统出错,因此判断逻辑电路中是否存在冒险以及如何避免冒险是设...

2436

扫码关注云+社区

领取腾讯云代金券