2015-10-17 117 views
-1

我是NoSQL的新手,并试图理解它的含义。我曾在许多不同的网站上看到许多文章重复“SQL数据库垂直缩放(通过添加CPU /内存),而NoSQL数据库水平缩放(通过添加更多可执行分布式计算的机器)”。为什么sql可以垂直扩展和水平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

现代SQL数据库和NoSQL数据库都可以利用多个处理器和多个磁盘。两者通常都可以利用更多的内存。对于这两种情况,将新硬件添加到现有配置时可能会有问题,但这取决于数据库。在较高的层面上,文章具有误导性或您的解释不完整。 –

+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等数据库的例子则认为关系数据库不能跨多个独立处理器进行扩展。