设为首页 加入收藏

TOP

MongoDB 与 MySQL,你选择谁?
2018-10-28 16:08:24 】 浏览:32
Tags:MongoDB MySQL 选择

过去几年,使用NoSQL数据库的网站和应用数量激增。 MongoDB无处不在。 现代网络如何偏离传统的基于SQL的数据库确实令人着迷。 MongoDB和其他NoSQL数据库在存储和检索数据方面有一种新方法。 那么让我们来看看MongoDB与MySQL不同的一些关键因素。


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之间的主要区别。如果你仍然有疑问,请在评论框里畅所欲言吧。



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇PostgreSQL中的大容量空间探索时.. 下一篇表数据量影响MySQL索引选择

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }