本文整理自网络,侵删。
目录
- 什么是 MySQL?
- 什么是 MongoDB?
- MongoDB 与 MySQL 的差异
- 数据模式和容量
- 性能和速度
- 安全性
- 事务的特性:原子性、一致性、隔离性和持久性
- 查询
- MongoDB vs. MySQL:分别在什么情况下使用
- 结论
MongoDB 和 MySQL 都是不错的数据库,都具有优良的性能。然而,它们是否成功取决于应用场景。首先应当了解它们各自不同的运行环境,而不能只比较各自的优点和缺点。因此,在本文中,我们将探讨 MongoDB 和 MySQL 各自的关键特性、差别和优势。
坚持把本文看完,你就能更深入了解两种数据库的差异(有很大的不同),从而作出合适的选择。
什么是 MySQL?
MySQL 是一个开源的 RDBMS,即关系数据库系统。更确切地说,关系数据库系统是一个用于更新、管理和设计关系数据库的应用程序,它很有用,也有利于程序的编码。关系数据库是一种数据库(数据通常以表格形式呈现),它支持在同一个数据库中根据数据间的关联关系来查询数据。MySQL、PostgreSQL 和 SQL 都属于关系数据库系统,它们都有各自的 SQL(结构化查询语言) 标准。
MySQL 是最常用的开源 RDBMS 之一,它于 1995 年面世,因其可靠性持续受到业界的好评。而且它使用很方便。由于数据库模式是根据某种规则预先定义的,数据以行和列的形式存在,还能体现不同表的字段间的关系。
什么是 MongoDB?
MongoDB 也是开源的,但它是一种基于文件存储的数据库,这点跟 MySQL 不同。它把文档存储在数据集合中,而不是存储于关系表中。
使用 MongoDB 时,数据模式不是固定的。在一个集合内部删除或修改文档的某些属性是可行的,这就提供了很大的灵活性。而且,同一集合内的文档,其结构可以是完全不同的。
MongoDB 与 MySQL 的差异
正如前文所述,这两种开源数据库的主要差别在于,MySQL 是关系型的,MongoDB 是基于文件存储的。在本章中,我们将研究这种差异代表什么,包括数据模式和容量、性能和速度、安全性和查询语言等方面。
数据模式和容量
在 MongoDB 中,数据是以类似于 JSON 文件的名值对形式存在的,因其模式设计,它对数据的约束条件较少。因此如果数据是快速变化的,MongoDB 就很有优势。另外,MongoDB 还提供了预定义的结构,如果需要也可以使用。
关于数据模式,MySQL 就不一样了。在 MySQL 中虽然可以改变模式,但是其灵活性和动态性比基于文件存储的数据库差。在存入任何数据之前,MySQL 都会强制进行检查,如果存入数据后表和列符合预先定义的规则,才会真正执行。更改数据模式也需要重新设计数据库的 DDL(数据定义语言)和 DML(数据建模语言)。
关系型数据库和文档型数据库都使用了 DDL 和 DML 的概念。然而,在关系数据库中,DDL 和 DML 的定义很重要。反之,MongoDB 的数据模式的扩展性较强,不像 MySQL 那样关注数据结构。虽然这似乎是一个很大的缺点,但这种一致性实际上是 MySQL 最大的优势,因为它确保了数据的结构化,维持了数据的清洁性。
每个 MongoDB 数据库都包含了若干个集合,或者更准确的说,是由一些文档组成的。这些文档可能包含各种各样的信息字段和类型,并支持存储各种内容和大小的数据。在 MySQL 中,由于数据模式比较具有约束力,一个表中的每条数据都有同样的列,因此当数据库体量很大时,就很难对它进行管理。所以,如果数据库太大且很复杂的情况下,MySQL 处理能力就不如 MongoDB 了。
换句话说,基于文件存储的 MongoDB 比 关系型的 MySQL 更适合处理大量的、结构多变的复杂数据。
性能和速度
MongoDB 接收任何数据都比 MySQL 快,而且能接收的数据量也比 MySQL 多。然而,猜想这样一种业务,数据量很小,数据结构也不那么多变,因此不必过于追求快速,那么其他特性(像可靠性和一致性)就成为优先考虑的因素了。
我们需要比较每一种数据库的速度,但更重要的是了解在业务或项目的需求约束下,哪种数据库更合适或性能更优。
如果项目需求侧重于数据的隐私性和完整性,MySQL 就是成熟且合理的方案。由于数据模式是明确的,MySQL 凭借数据表使数据类型系统化,使数据中各自的值都能充分查询并且容易搜索,所以使用 MySQL 意味着数据库结构是稳定不变的。但是,对于非结构化的数据,它就不适合。MySQL 最大的优点(也可以说是缺点)在于需要事先定义数据结构,这就避免了很多技术债务。但是,在某些情况下,数据太复杂,就难以设计一套合适的模式。
另一方面,MongoDB 在处理非结构化数据时更灵活,速度也快。在数据模式难以预先定义的情况下,基于文件存储的数据库就比较适合。然而,如果数据是多样化的,在数据的某个属性上添加索引是难以实现的。因此数据模式需要不断优化。此时如果片面追求一致性,反而会带来风险。
安全性
MySQL 利用一套基于权限的安全模型,即用户对数据库进行操作需要身份认证,系统也可以授予或禁止用户对某个数据库进行操作的权限。而且如果应用程序需要从数据库获取数据,就需要使用 SSL 这种安全协议建立加密连接。
相关阅读 >>
mongodb 数据类型(null字符串数字日期内嵌文档数组等)
windows下安装mongodb以及node.js连接mongodb实例
更多相关阅读请进入《mongodb》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » 分析MongoDB和MySQL各自的关键特性、差别和优势
相关推荐
评论
管理员已关闭评论功能...