在选择数据库时,最大的决策之一是选择关系(SQL)或非关系(NoSQL)数据结构。虽然两者都是可行的选择,但在做出决定时必须牢记两者之间存在某些关键差异。
在这里,我们分解了最重要的区别,并讨论了关系与非关系争论中的两个关键角色:MySQL和MongoDB。
你的Quora问题:MongoDB死了吗?
大局差异
语言
考虑一个小镇-我们称之为A镇,每个人都说同一种语言。所有的业务都是围绕它建立的,每种形式的沟通都使用它 - 简而言之,这是居民理解周围世界并与之互动的唯一方式。在一个地方改变这种语言会让每个人感到困惑和破坏。
现在,想想另一个城镇B镇,每个家庭都可以说不同的语言。每个人都以不同的方式与世界互动,并且没有“普遍”理解或设定组织。如果一个家庭不同,它根本不会影响其他任何人。
这有助于说明SQL关系数据库和NoSQL非关系数据库之间的根本区别之一,这种区别具有重大意义。我们来解释一下:
SQL数据库使用结构化查询语言(SQL)来定义和操作数据。一方面,这是非常强大的:SQL是最通用和最广泛使用的选项之一,使其成为一个安全的选择,尤其适用于复杂的查询。另一方面,它可能是限制性的。SQL要求你在使用之前使用预定义模式来确定数据的结构。此外,你的所有数据都必须遵循相同的结构。这可能需要大量的前期准备,而且,与A镇一样,这可能意味着结构的变化既困难又会对整个系统造成破坏。
另一方面,NoSQL数据库具有非结构化数据的动态模式,数据以多种方式存储:它可以是面向列的,面向文档的,基于图的,也可以组织为KeyValue存储。这种灵活性意味着:
· 你无需先定义其结构即可创建文档
· 每个文档都可以有自己独特的结构
· 语法可能因数据库而异,并且
· 你可以随时添加字段。
可扩展性
在大多数情况下,SQL数据库是可垂直扩展的,这意味着你可以通过增加CPU,RAM或SSD等功能来增加单个服务器上的负载。另一方面,NoSQL数据库是水平可伸缩的。这意味着你可以通过分片或在NoSQL数据库中添加更多服务器来处理更多流量。这就像在同一建筑物中增加更多楼层,而不是在附近增加更多建筑物。后者最终可以变得更大,更强大,使NoSQL数据库成为大型或不断变化的数据集的首选。
结构
SQL数据库是基于表的,而NoSQL数据库是基于文档的,键值对,图数据库或宽列存储。这使得关系SQL数据库成为对于需要多行事务的应用程序(例如会计系统)或为关系结构构建的遗留系统的更好选择。
SQL数据库的一些示例包括MySQL,Oracle,PostgreSQL和Microsoft SQL Server。NoSQL数据库示例包括MongoDB,BigTable,Redis,RavenDB Cassandra,HBase,Neo4j和CouchDB。
SQL与NoSQL:MySQL与MongoDB
现在我们已经确定了SQL和NoSQL数据库之间的关键结构差异,让我们深入研究两者之间的关键功能差异,特别是以MySQL和MongoDB为例。
MySQL:SQL关系数据库以下是MySQL的一些优点和优点:
· 成熟:MySQL是一个非常成熟的数据库,意味着有一个庞大的社区,广泛的测试和相当多的稳定性。
· 兼容性: MySQL适用于所有主要平台,包括Linux,Windows,Mac,BSD和Solaris。它还具有Node.js,Ruby,C#,C ,Java,Perl,Python和PHP等语言的连接器,这意味着它不仅限于SQL查询语言。
· 成本:数据库是开源的,免费的。
· 可复制: MySQL数据库可以跨多个节点进行复制,这意味着可以减少工作负载,并且可以提高应用程序的可伸缩性和可用性。
· 分片:虽然在大多数SQL数据库上无法进行分片,但可以在MySQL服务器上完成分片。这既符合成本效益又有利于企业发展。
MongoDB:NoSQL非关系数据库
以下是MongoDB的一些优点和优势:
· 动态模式:如上所述,这使你可以灵活地更改数据模式,而无需修改任何现有数据。
· 可扩展性: MongoDB可横向扩展,有助于减轻工作量并轻松扩展业务。
· 易管理:不需要数据库管理员。由于它以这种方式对用户非常友好,因此开发人员和管理员都可以使用它。
· 速度:它对于简单查询来说效果很好。
· 灵活性:你可以在MongoDB上添加新列或字段,而不会影响现有行或应用程序性能。
那么哪个数据库适合你的业务?
对于任何将从预定义结构和集合模式中受益的企业而言,MySQL是一个强有力的选择。例如,需要多行事务的应用程序(如会计系统或监视库存的系统)或在遗留系统上运行的应用程序将在MySQL结构中蓬勃发展。
另一方面,对于快速增长的企业或没有明确模式定义的数据库,MongoDB是一个不错的选择。更具体地说,如果你无法为数据库定义架构,如果你发现自己对数据架构进行了规范化,或者你的架构仍在不断变化 - 通常情况下,移动应用程序,实时分析,内容管理系统等等, MongoDB对你来说是一个很好的选择。