过去几年, 使用 NoSQL 数据库的网站和应用数量激增. MongoDB 无处不在. 现代网络如何偏离传统的基于 SQL 的数据库确实令人着迷. MongoDB 和其他 NoSQL 数据库在存储和检索数据方面有一种新方法. 那么让我们来看看 MongoDB 与 MySQL 不同的一些关键因素.
数据建模
使用像 MySQL 这样的传统 SQL 数据库, 我们需要一个固定的数据结构. 我们希望知道将记录哪些不同类型的数据. 我们必须事先创建数据库, 必需的表, 列, 甚至为每列指定数据类型. MongoDB 不是这种情况. 使用 MongoDB, 开发人员可以稍微悠闲一点. 忘记表和数据类型, 甚至不需要创建数据库. MongoDB 会自动为您完成大部分初始繁重工作.
MongoDB 致力于集合的思想. 这些集合类似于表, 但没有任何固定数量的列. 因此, 集合中的每个文档 (文档是行 / 记录的 MySQL 等价物) 可以具有不同的结构. 它们可能具有相同数量的字段, 也可能不具有相同数量的字段(字段是 MySQL 的等效列). 因此可以说 MySQL 具有固定模式, 而 MongoDB 具有灵活的模式.
搜索数据
在 MySQL 中搜索数据库中的数据可能是一项非常简单的任务. 我们支持诸如可以帮助组合来自多个表的数据的连接之类的东西. 但这再次要求您非常了解您的数据模型. 像外键这样的概念允许您在不同数据集之间创建关系. 这有助于保持数据完整性.
由于其灵活的架构, MongoDB 在搜索数据方面有着截然不同的方法. 搜索数据非常有限, 因为 Mongo 中没有联接. 由于允许嵌套, 因此您需要在一个文档中放置所需的任何数据. 这是真正困扰在 mongo 上工作的新开发人员的事情之一. 总的来说, 我会说 SQL 在搜索数据方面非常丰富而且 MongoDB 非常有限.
约束和数据完整性
由于您必须使用 SQL 预定义数据模型, 因此无需担心完整性. 数据库不接受任何不符合标准的数据类型. 像外键, 主键和唯一索引这样的约束会让开发人员感到很麻烦.
另一方面, 尽管 MongoDB 落后了. 它确实提供了几种类型的基于完整性的索引, 包括唯一索引, 但是数据类型没有约束. 它完全被理解, 因为这些领域本身并没有固定. 因此, 非常常见的是, ORM(对象关系映射器)经常与 MongoDB 一起使用. 它们用于对服务器端代码执行完整性检查. 总而言之, SQL 是非常严格且丰富的数据完整性, 而 MongoDB 则不然.
扩展
每个成功的应用程序都需要在某个时候扩展. 当用户数量增长时, 需要多个服务器. 这是能够扩展的因素. 传统上, SQL 数据库是为垂直扩展而构建的, 即通过增加同一台机器上的硬件进行扩展. 如果该服务器由于某种原因崩溃, 这将导致麻烦.
另一方面, MongoDB 是为了水平扩展而构建的. 您可以设置多个节点, 这些节点将自动复制, 没有单点故障. 虽然 MySQL 已经看到了 MySQL Cluster 的巨大改进, 但它仍然无法与 MongoDB 相媲美. 在扩展方面, MongoDB 的性能远远优于 MySQL.
结论
MongoDB 和 MySQL 有两个完全不同的数据库系统. 在数据库方面, MySQL 一直是并且仍然是许多人的默认选择. 但是, 我们看到变化和, 更多的人们选择 MongoDB.
MongoDB 比 MySQL 更能满足现代应用程序的需求但 MySQL 在处理关系数据方面具有更好的优势. 在一天结束时, 这只是你想要做的事情. 这两个选项都非常可靠, 并且被互联网上的一些大公司使用. 我希望我已经明确了 MySQL 和 MongoDB 之间的主要区别. 如果您仍有疑问, 请将其放在评论部分, 我会在那里为您服务.
MongoDB 比 MySQL 更好地满足了现代应用程序的需求, 但 MySQL 在处理关系数据方面有更好的优势. 说到底, 这只是你想做什么的问题. 这两种选择都相当可靠, 一些互联网上最大的公司也在使用它们. 我希望我已经明确了 MySQL 和 MongoDB 之间的主要区别. 如果你仍然有疑问, 请在评论框里畅所欲言吧.
来源: http://www.linuxidc.com/Linux/2018-10/155033.htm