为什么sql可以垂直扩展并且nosql水平

时间:2015-10-17 13:03:56

标签: sql scalability horizontal-scaling nosql

我是NoSQL的新手并试图理解它的含义。

我在许多不同的网站上看过许多文章,重复“SQL数据库垂直扩展(通过添加CPU /内存)”而NoSQL数据库水平扩展(通过添加更多可以执行分布式计算的机器)这一事实。

例如这些文章:
http://dataconomy.com/sql-vs-nosql-need-know/
http://www.thegeekstuff.com/2014/01/sql-vs-nosql-db/

事情是我无法理解为什么。

据我所知,SQL和NoSQL之间的主要区别(除了可扩展性问题)是SQL存储在表中,而NoSQL以不同的方式存储(Key-Value / Graph / xml等)。 )。

我似乎无法理解这两个事实(可扩展性和存储策略)之间的联系。这些似乎与我无关(可能是由于缺乏理解)。

1 个答案:

答案 0 :(得分:2)

评论太长了,我承认它包含意见。

这些文章通常是合理的。 NoSQL技术和SQL技术(缺乏更好的术语)现在都扮演着重要的角色 - 正如两篇文章所指出的那样。曾经的讨论有点让人想起分层数据库和关系数据库。

我不同意可伸缩性差异。讨论中遗漏了Hive,PrestoDB和BigQuery等技术,这些技术基于传统RDBMS精神的高度可扩展技术。

RDBMS和NoSQL之间的主要区别(在我看来)是ACID合规性和数据结构。第一个是关系数据库带来的“负担”,无论好坏,对于金融交易来说肯定都很方便,但代价是其他目的的开销。第二个是传统数据库正朝着更好地处理非结构化数据的方向发展,直接支持嵌套表,JSON和XML格式。然而,结构很重要,因为大量的数据科学家可能会在与数据交互时学到很多困难。

大型可扩展键值数据库的设计考虑了“水平”可伸缩性。结合缺乏纯ACID属性有助于重新平衡新硬件的数据 - 假设您已正确设计数据库(这可能是一个很大的假设)。

Oracle,DB2和Teradata等数据库几十年来一直支持并行处理(虽然更偏向于单一服务器,尽管没有共享架构)。他们的技术早于更现代的基于Apache的系统(缺乏更好的术语),但这并不意味着它们无法跨多个处理器扩展。

Hive,Redshift,BigQuery和PrestoDB等新数据库以更现代的“水平”可扩展意义提供基于SQL的界面(至少对于查询而言)。 Postgres世界正在进行大量工作以支持那里的并行处理 - 而像Greenplum,Netezza,Vertica等数据库的例子则认为关系数据库不能跨多个独立处理器进行扩展。