最近NoSQL获得了极大的欢迎.
NoSQL相对于传统RDBMS有哪些优势?
并非所有数据都是关系数据.对于这些情况,NoSQL可能会有所帮助.
话虽如此,NoSQL代表"Not Only SQL".它并不打算敲取SQL或取代它.
SQL有几个非常大的优点:
强大的数学基础.
声明性语法.
结构化查询语言(SQL)中的一种众所周知的语言.
那些还没有消失.
将此视为一个或两个参数是错误的.NoSQL是人们在适合时需要考虑的替代方案,就是这样.
文档可以存储在非关系数据库中,如CouchDB.
也许读这个会有所帮助.
历史看起来像这样:
Google需要一个存储层用于反转搜索索引.他们认为传统的RDBMS不会削减它.因此,他们在GFS文件系统之上实现了NoSQL数据存储,BigTable.主要部分是成千上万的廉价商品硬件机提供速度和冗余.
其他人都意识到Google刚刚做了什么.
酿酒商CAP定理得到证实.所有使用的RDBMS系统都是CA系统.人们也开始玩CP和AP系统.K/V商店非常简单,因此它们是研究的主要工具.
软件即服务系统通常不提供类似SQL的存储.因此,人们对NoSQL类型商店更感兴趣.
我认为很多起飞可能与这段历史有关.扩展谷歌在谷歌采取了一些新的想法,其他所有人都跟进,因为这是他们现在知道的缩放问题的唯一解决方案.因此,您愿意重新设计Google的分布式数据库概念,因为它是扩展到特定大小的唯一方法.
C - 一致性
A - 可用性
P - 分区容差
K/V - 键/值
由于NoSQL的以下原因/特性,NoSQL优于RDBMS
它支持半结构化数据和易失性数据
它没有架构
读/写吞吐量非常高
可以轻松实现水平可扩展性
将支持Bigdata的Terra Bytes和Peta Bytes
为Bigdata之上的分析工具提供良好的支持
可以托管在更便宜的硬件机器上
内存中缓存选项可用于提高查询性能
开发人员的开发生命周期更快
编辑:
要回答"为什么RDBMS无法扩展",请查看由Stavros Harizopoulos,Daniel J. Abadi,Samuel Madden和Michael Stonebraker撰写的RDBMS Overheads pdf
RDBMS在处理Terabytes和Peta字节的大量数据方面存在挑战.即使您拥有独立/廉价磁盘冗余阵列(RAID)和数据粉碎,它也无法很好地扩展到大量数据.您需要非常昂贵的硬件.
日志记录:组装日志记录并跟踪数据库结构中的所有更改会降低性能.如果不要求可恢复性或通过其他方式(例如,网络上的其他站点)提供可恢复性,则可能不需要记录.
锁定:传统的两阶段锁定会产生相当大的开销,因为对数据库结构的所有访问都由一个单独的实体Lock Manager控制.
锁存:在多线程数据库中,必须先锁存许多数据结构才能访问它们.删除此功能并采用单线程方法会对性能产生显着影响.
缓冲区管理:主内存数据库系统不需要通过缓冲池访问页面,从而消除了每个记录访问的间接级别.
这并不意味着我们必须使用NoSQL而不是SQL.
但是,由于RDBMS的以下原因/属性,RDBMS优于NoSQL
具有ACID属性的事务- 原子性,一致性,隔离性和耐久性
坚持写入/读取数据的强模式
实时查询管理(如果数据大小<1 0 10 Tera字节)
执行涉及join和group by子句的复杂查询
我们必须使用RDBMS(SQL)和NoSQL(不仅仅是SQL),具体取决于业务案例和要求
与关系数据库模型相比,NOSQL没有特别的优势.NOSQL确实解决了当前SQL DBMS的某些限制,但它并不意味着比以前的数据模型具有任何基本的新功能.
NOSQL仅表示没有SQL(或"不仅仅是SQL"),但这并不意味着没有关系.原则上,关系数据库将构成一个非常好的NOSQL解决方案 - 只是当前的一组NOSQL产品都没有使用关系模型.