NoSql与关系数据库

最近NoSQL获得了巨大的普及。

NoSQL与传统RDBMS相比有哪些优势?

7 Solutions collect form web for “NoSql与关系数据库”

并非所有数据都是关系型的。 对于这些情况,NoSQL可能会有所帮助。

这样说,NoSQL代表“不只是SQL”。 它不是要敲SQL或取而代之。

SQL有几个非常大的优点:

  1. 强大的math基础。
  2. 声明语法。
  3. 结构化查询语言(SQL)中一个众所周知的语言。

那些还没有消失。

把这个想法看成是一个或者两个论点是错误的。 NoSQL是人们需要考虑的一个select,就是这一切。

文档可以存储在非关系数据库中,如CouchDB。

也许阅读这将有助于。

历史看起来像这样:

  1. Google需要为其倒排search索引build立一个存储层。 他们认为传统的RDBMS不会削减它。 所以他们在GFS文件系统之上实现了一个NoSQL数据存储BigTable。 主要部分是成千上万便宜的商品硬件机器提供速度和冗余。

  2. 其他人都意识到Google刚刚做了什么。

  3. Brewers CAP定理被certificate。 所有使用的RDBMS系统都是CA系统。 人们也开始玩CP和AP系统。 K / V店是非常简单的,所以他们是研究的主要工具。

  4. 软件即服务系统通常不提供类似于SQL的存储。 因此,人们对NoSQLtypes商店更感兴趣。

我认为这个起飞的很大一部分可能与这个历史有关。 Google扩大了Google的一些新想法,其他人也纷纷效仿,因为这是他们现在唯一解决扩展问题的解决scheme。 因此,您愿意对Google的分布式数据库理念进行重新修改,因为这是扩大超过一定规模的唯一方式。

C – 一致性
A – 可用性
P – 分区容差
K / V – 键/值

由于NoSQL的以下原因/特性,NoSQL比RDBMS更好

  1. 它支持半结构化数据和易失性数据
  2. 它没有模式
  3. 读/写吞吐量非常高
  4. 横向扩展性可以轻松实现
  5. 将支持Bigdata大量的Terra字节和Peta字节
  6. 为Bigdata之上的分析工具提供良好的支持
  7. 可以在更便宜的硬件机器中托pipe
  8. 内存中caching选项可用于提高查询的性能
  9. 为开发人员提供更快的开发周期

编辑:

要回答“为什么RDBMS无法扩展”,请查看由Stavros Harizopoulos,Daniel J. Abadi,Samuel Madden和Michael Stonebraker撰写的RDBMS Overheads pdf

RDBMS在处理太字节和Peta字节的巨大数据量方面面临挑战 。 即使您拥有独立/廉价磁盘冗余arrays(RAID)和数据粉碎function,对于大量数据也无法很好地进行扩展。 你需要非常昂贵的硬件。

日志logging :汇编日志logging并跟踪数据库结构中的所有更改会降低性能。 如果可恢复性不是必需的,或者通过其他方式(如networking上的其他站点)提供可恢复性,则logging可能不是必需的。

locking :由于所有对数据库结构的访问都由一个单独的实体Lock Manager来pipe理,因此传统的两阶段locking带来了相当大的开销。

锁存 :在multithreading数据库中,许多数据结构在被访问之前必须被锁存。 删除此function并转到单线程方法会有明显的性能影响。

缓冲区pipe理 :主内存数据库系统不需要通过缓冲池访问页面,消除了每个logging访问的间接级别。

这并不意味着我们必须使用NoSQL over SQL。

尽pipe如此,由于RDBMS的以下原因/属性,RDBMS比NoSQL更好

  1. 具有ACID特性的交易 – primefaces性,一致性,隔离性和耐久性
  2. 坚持强大的数据写/读模式
  3. 实时查询pipe理 (在数据大小<1 0 10 Tera字节的情况下)
  4. 执行复杂查询,涉及连接和分组的子句

我们必须根据业务情况和要求使用RDBMS(SQL)和NoSQL(不仅是SQL)

与关系数据库模型相比,NOSQL没有特别的优势。 NOSQL确实解决了当前SQL数据库pipe理系统的某些限制,但并不意味着比以前的数据模型有任何根本的新function。

NOSQL意味着只有没有SQL (或“不只是SQL”),但这并不意味着没有关系 。 一个关系数据库原则上会成为一个非常好的NOSQL解决scheme – 只不过是当前的一套NOSQL产品都不使用关系模型。

如果您需要处理大量的高性能数据

要么

如果数据模型不是预定的

然后

NoSQL数据库是一个更好的select。

RDBMS更关注关系, NoSQL更多地关注存储。

当您的RDBMS达到瓶颈时,您可以考虑使用NoSQLNoSQL使RDBMS更加灵活。

NoSQL优于RDBMS的最大优点是可扩展性。 NoSQL数据库可以轻松地向外扩展到许多节点,但是对于RDBMS来说非常困难。 可伸缩性不仅可以提供更多的存储空间,而且还可以提高性能,因为许多主机可以同时工作。

  • SQL JOIN和不同types的JOIN
  • 何时不使用Cassandra?
  • 何时使用CouchDB与RDBMS