SQL vs NoSQL:你需要知道什么?
Posted 云头条
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL vs NoSQL:你需要知道什么?相关的知识,希望对你有一定的参考价值。
不断演变的数据库生态圈
“SQL过时了。”
“RDBMS再也无法满足公司企业的数据管理要求了。”
“像NoSQL这些新的数据库技术是适合如今企业的解决方案。”
无论在数据库技术行业里面还是外面,诸如此类的论调我们可是听多了。但是它们果真属实吗?SQL真是明日黄花,NoSQL解决方案真是未来出路吗?
我们在本文中将概述SQL和NoSQL之间的区别以及众多NoSQL技术本身之间的一大堆区别,并且探讨关系数据库管理系统(RDBMS)是否真是明日黄花。
SQL vs NoSQL一览表:
SQL |
NoSQL |
|
数据存储 |
存储在关系模型中,有行和列。 行含有关于某一个特定数据项/条目的所有信息,列是所有不同的数据点;比如说,你可能有一行关于某辆车的数据,其中有“型号”、“款式”和“颜色”等列。 |
“NoSQL”这个术语涵盖许多数据库,每个数据库又有不同的数据存储模型。几种主要的数据库有:文档数据库、图形数据库、键值数据库和列式数据库。关于它们之间区别的更多信息详见下文。 |
数据库模式和灵活性 |
每个记录符合固定的数据库模式,这意味着列必须在数据录入前加以确定和锁定,每一行必须含有每一列的数据。这可以修改,但需要修改整个数据库,并且离线操作。 |
模式是动态的。 信息可以实时添加,每一“行”没必要含有每一“列”的数据。 |
可扩展性 |
扩展是纵向的。实际上,更多的数据 意味着更庞大的服务器,成本可能非常高昂。可以跨多台服务器扩展RDBMS,但这是一个困难又费时的 过程。 |
扩展是横向的,这意味着跨服务器扩展。这些多台服务器是便宜的商用硬件或云实例,因而比纵向扩展要经济高效得多。许多NoSQL技术还自动将数据分配到多台服务器上。 |
ACID遵从性 (原子性、 一致性、隔离性和持久性) |
绝大多数的关系数据库遵从ACID。 |
不同技术的遵从性不一样,但是许多 NoSQL解决方案牺牲ACID遵从性, 以换取性能和可扩展性。 |
听到“NoSQL”这个术语后,你可能以为统一属于这个范畴的所有技术都有同样的数据模型,有这种想法也情有可原。实际上,NoSQL是指一整批技术,这些技术存储和处理数据的方式各不相同。一些主要的方式包括如下:
文档数据库
文档数据库解决方案CouchDB的这张图相当清楚地总结了RDBMS和文档数据库之间的区别:
SQL vs NoSQL
数据存储在文档中,这些文档按集合体分门别类,而不是说数据以行和列的形式存储在表中。每个文档可能有全然不同的结构。文档数据库包括上面提到的CouchDB和MongoDB。
键值存储数据库
数据存储在键值对的相关数组中。键是个属性名称,它与值关联起来。知名的键值存储数据库包括Redis、Voldemort(由LinkedIn开发)和Dynamo(由亚马逊开发)。
图形数据库
这种数据库用于使用图形可以清楚表示关系的数据。数据存储在图形结构中,有节点(实体)、属性(关于实体的信息)和线条(实体之间的关系)。这种数据库的例子包括Neo4J和InfiniteGraph。
列式(或宽列)数据库
在列式数据库中,你拥有的是列族、而不是“表”,列族其实是行的容器。不像RDBMS,你不需要事先知道所有的列,每一行没必要拥有数量一样的列。列式数据库最适合分析庞大数据库,知名的列式数据库包括Cassandra和HBase。
如果认为SQL和NoSQL是直接的对立面、彼此竞争,这种想法未免存在缺陷,尤其是由于许多公司决定同时使用两者。与我之前探讨的所有技术一样,确实不存在“一应俱全式”的方法;选择合适的技术取决于具体的使用场合。如果你的技术需求在不断变化,就需要高吞吐量来处理病毒式增长;或者你的数据在快速增长,你需要能够迅速、高效地横向扩展,那么NoSQL可能适合你。但是如果你拥有的数据其结构没有发生变化,面临的又是易于管理的适度增长,那么SQL技术也许就能满足你的需求。当然,SQL还没有完蛋。
云头条编译|未经授权谢绝转载
距离发布会只剩2天,戳阅读原文,可查看七牛直播云发布会详情!
以上是关于SQL vs NoSQL:你需要知道什么?的主要内容,如果未能解决你的问题,请参考以下文章