为什么 MongoDB
智能操作数据平台
-
我们认为 MongoDB 是现代领先通用数据库(或目前市场上最好的数据库)的原因之一是,我们使开发人员能够比替代方案(其他数据库)更容易,更快地构建差异化软件,因为 MongoDB 提供最佳的数据处理方式。
-
使用 MongoDB,我们还允许他们智能地将数据放在他们想要的位置,并让他们可以自由地在任何地方运行,这大大简化了他们将差异化软件推向世界的过程和计划。
-
MongoDB 为开发人员提供了,最佳的数据处理方式、智能的将数据放在您想要的位置、自由的运行在任意地点,借助这些能力,我们可为您构建一个智能操作数据平台。
最佳数据处理方式
JSON 文档模型
左边是大家都熟悉的关系数据模型,右边是一个 JSON 文档模型。
-
目前 99% 的现代网站/移动 App 使用 JSON 来交换数据。大多数 Web/App 开发人员每天的工作是编写代码将 JSON 从一个地方移动到另一个地方,从数据库到移动设备,从另一个服务器,回到移动设备,回到数据库。MongoDB 是JSON 文档数据模型,而且在是数据库保存的就是 JSON 文档,这是现代的 APP 的开发变得及其简单。这通常也是 MongoDB 这么受欢迎的主要原因。
-
通过数字化转型企业可实现数字化业务,但根据一些咨询公司的调查,现有系统的现代化是 90% 企业或组织首要面对的挑战,左边这是个复杂的关系模型,其实这是目前大多组织遇到的难题,在这样复杂的模型上构建现代现代网站/移动 App ,数据从数据库到设备需要将数据转化成 JSON。事实上,这增加了复杂度,开发这不喜欢这么做。
-
那么简单总结 MongoDB 的 JSON 文档模型,简单且直观,与开发思路一致的对象数据模型,可以用业务对象直接映射数据模型,与开发思路一致的对象数据模型,简化开发者的工作,设计无需考虑对象到关系表的转换。MongoDB 将传统表形式转为对 JSON 文档形式,无需对象和表的映射,让程序员开发更顺畅简单
为什么 MongoDB 对开发人员来说非常简单
我们举个例子来说明为什么 MongoDB 对开发人员来说非常简单。
如果我们构建一个客户管理系统会有那些业务对象?一个业务对象的数据会去到几个关系表?
一个 CRM 系统通常需要处理的业务对象有:账户管理、机会管理、联系人管理等。一个业务对象映射到多个表,表的关系模型通常比较复杂;一条业务对象数据会去到多个表中,需要一个 ORM 层,数据的查询通常也是比较复杂。
不同的编程语言都有一些比较流行的 ORM 框架,例如 Java 语言中的 Hibernet。对象到表的映射引入数以千计的代码,这些代码为最终用户提供价值低,还引入了系统结构复杂,增加额外工作量,需要更多的开发人员,软件开发周期长,投资回报率低,不符合现代数字化业务诉求。
如果使用 MongoDB 实现这个客户管理系统,业务对象和数据库中的文档记录 1:1 映射。由于数据存储在一起,因此它有三个主要好处:
-
模型更简单
-
不是成百个表,只有几个集合(MongoDB 中一个集合对应关系数据库中的一张表,一个文档,对应关系数据库中一行)
-
一对一映射是简化整体轮廓
-
-
不需要 ORM 层
-
需要考虑的事情更少
-
MongoDB 的驱动直接可以处理对象,完成 1:1 映射
-
-
查询变得简单,查询语句更短、更简单。
MongoDB 比关系数据库快吗?
通常我们比较两个数据谁快谁慢,需求从如下几个所需能力去比较。
-
关系数据库的 SQL 支持向数据库问复杂的问题,同样 MongoDB 的 MQL 语言支持向数据库问复杂的问题
-
关系数据支持通过 SQL 及聚合方法进行数据分析,MongoDB 同样通过 MQL 和MongoDB 聚合框架进行数据分析
-
关系数据库和 MongoDB 都通过索引加速查询,而且索引底层的原理类似
我们可以清楚看到,这些所属能力不是 MongoDB 所特有的,而且这些能力在关系数据库中存在的时间更久,那么 MongoDB 比关系数据库快吗?我们还是从前面提到的客户管理系统的案例来说吧。
客户管理系统中的业务对象账户,在关系数据库中有多个表模型,目前我们有这样一个需求,需要获取一个账户的详细信息,那么如何从关系数据库中获取一条数据呢?关系数据的Join 操作拉取不同表中的数据,拼接出一条账户数据。
为什么关系数据 JOIN 查询慢?JOIN 需求多次,和磁盘的不同位置交互才能获取一条业务数据。事实上目前 DBA 的工作很大一部分是优化性能让 JOIN 变得更快,这引入了一些额外工作,通过监控,调优,第三方工具告诉数据库如何快速检索数据,这不是一个简单的公族。
一个账户业务对象对应 MongoDB 中的一个文档,数据存储和查取在同一个位置,一次查询,和磁盘上一个位置交互即可获取数据。
这有什么意义吗(so waht)?客户体验不同,一个快的 App 可以客户高兴,慢的 App 会让您的客户生气。
关系数据库需要将所有信息一起提取到一个对象
MongoDB 已将所有信息存储在一起
现代应用开发
MongoDB 是当今满足现代应用程序需求的最优、通用数据库,可适用于任何平台上的任何用例。现代应用程序需要
-
敏捷开发流程
-
灵活且适应性强的基础架构
-
实时用户体验
而 MongoDB 如下特性轻松满足现代应用程序需求:
-
JSON 文档存储模型,处理数据变得更容易;
-
智能分布式系统,实现高可用、工作负载隔离、水平扩展以及将数据地理分布到开箱即用的功能中;
-
使用相同的功能集和 API 在包括大型机到移动终端、本地部署或作为托管服务的任何地方运行。
MongoDB 助力 DevOps
MongoDB 如何助力 DevOps 实施落地,主要从三个层面去延展:
第一,MongoDB 在数字化时代独到的见解,技术的前瞻性和领先性,以及 MongoDB 公司的简单介绍;
第二,MongoDB 的灵活数据模型表达、默认水平扩展能力,云原生高可用等特点,与 DevOps 的敏捷思想,持续实验、协作反馈的文化,精益管理等核心内涵,具有天然匹配,MongoDB 为 DevOps 而生;
第三,MongoDB + DevOps 实现快速开发、快速集成、快速部署。