NoSql与关系数据库
最近NoSQL获得了巨大的普及。
NoSQL与传统RDBMS相比有哪些优势?
并非所有数据都是关系型的。 对于这些情况,NoSQL可能会有所帮助。
这样说,NoSQL代表“不只是SQL”。 它不是要敲SQL或取而代之。
SQL有几个非常大的优点:
- 强大的math基础。
- 声明语法。
- 结构化查询语言(SQL)中一个众所周知的语言。
那些还没有消失。
把这个想法看成是一个或者两个论点是错误的。 NoSQL是人们需要考虑的一个select,就是这一切。
文档可以存储在非关系数据库中,如CouchDB。
也许阅读这将有助于。
历史看起来像这样:
-
Google需要为其倒排search索引build立一个存储层。 他们认为传统的RDBMS不会削减它。 所以他们在GFS文件系统之上实现了一个NoSQL数据存储BigTable。 主要部分是成千上万便宜的商品硬件机器提供速度和冗余。
-
其他人都意识到Google刚刚做了什么。
-
Brewers CAP定理被certificate。 所有使用的RDBMS系统都是CA系统。 人们也开始玩CP和AP系统。 K / V店是非常简单的,所以他们是研究的主要工具。
-
软件即服务系统通常不提供类似于SQL的存储。 因此,人们对NoSQLtypes商店更感兴趣。
我认为这个起飞的很大一部分可能与这个历史有关。 Google扩大了Google的一些新想法,其他人也纷纷效仿,因为这是他们现在唯一解决扩展问题的解决scheme。 因此,您愿意对Google的分布式数据库理念进行重新修改,因为这是扩大超过一定规模的唯一方式。
C – 一致性
A – 可用性
P – 分区容差
K / V – 键/值
由于NoSQL的以下原因/特性,NoSQL比RDBMS更好
- 它支持半结构化数据和易失性数据
- 它没有模式
- 读/写吞吐量非常高
- 横向扩展性可以轻松实现
- 将支持Bigdata大量的Terra字节和Peta字节
- 为Bigdata之上的分析工具提供良好的支持
- 可以在更便宜的硬件机器中托pipe
- 内存中caching选项可用于提高查询的性能
- 为开发人员提供更快的开发周期
编辑:
要回答“为什么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更好
- 具有ACID特性的交易 – primefaces性,一致性,隔离性和耐久性
- 坚持强大的数据写/读模式
- 实时查询pipe理 (在数据大小<1 0 10 Tera字节的情况下)
- 执行复杂查询,涉及连接和分组的子句
我们必须根据业务情况和要求使用RDBMS(SQL)和NoSQL(不仅是SQL)
与关系数据库模型相比,NOSQL没有特别的优势。 NOSQL确实解决了当前SQL数据库pipe理系统的某些限制,但并不意味着比以前的数据模型有任何根本的新function。
NOSQL意味着只有没有SQL (或“不只是SQL”),但这并不意味着没有关系 。 一个关系数据库原则上会成为一个非常好的NOSQL解决scheme – 只不过是当前的一套NOSQL产品都不使用关系模型。
如果您需要处理大量的高性能数据
要么
如果数据模型不是预定的
然后
NoSQL数据库是一个更好的select。
RDBMS更关注关系, NoSQL更多地关注存储。
当您的RDBMS达到瓶颈时,您可以考虑使用NoSQL 。 NoSQL使RDBMS更加灵活。
NoSQL优于RDBMS的最大优点是可扩展性。 NoSQL数据库可以轻松地向外扩展到许多节点,但是对于RDBMS来说非常困难。 可伸缩性不仅可以提供更多的存储空间,而且还可以提高性能,因为许多主机可以同时工作。