最近 NoSQL 获得了极大的欢迎。
NoSQL 相对于传统 RDBMS 有什么优势?
答案 0 :(得分:121)
并非所有数据都是关系型的。对于这些情况,NoSQL可能会有所帮助。
据说,NoSQL代表“Not Only SQL”。它并不打算敲取SQL或取代它。
SQL有几个非常大的优点:
那些还没有消失。
将此视为一个或两个参数是错误的。 NoSQL是人们在适合时需要考虑的替代方案,就是这样。
文档可以存储在非关系数据库中,如CouchDB。
也许阅读this会有所帮助。
答案 1 :(得分:90)
历史看起来像这样:
Google的反转搜索索引需要一个存储层。他们认为传统的RDBMS不会削减它。因此,他们在GFS文件系统之上实现了NoSQL数据存储,BigTable。主要是成千上万的廉价商品硬件机提供速度和冗余。
其他人都意识到Google刚刚做了什么。
酿酒师CAP theorem已被证实。所有使用的RDBMS系统都是CA系统。人们也开始玩CP和AP系统。 K/V stores非常简单,因此它们是研究的主要工具。
软件即服务系统通常不提供类似SQL的存储。因此,人们对NoSQL类型商店更感兴趣。
我认为起飞的大部分可能与这段历史有关。扩展谷歌在谷歌采取了一些新的想法,其他所有人都跟进,因为这是他们现在知道的缩放问题的唯一解决方案。因此,您愿意重新设计Google的分布式数据库概念,因为这是扩展到特定大小的唯一方法。
C - 一致性
A - 可用性
P - 分区容差
K / V - 键/值
答案 2 :(得分:37)
NoSQL优于RDBMS,因为以下原因/ NoSQL的特性
编辑:
要回答“为什么RDBMS无法扩展”,请查看由Stavros Harizopoulos,Daniel J. Abadi,Samuel Madden和Michael Stonebraker撰写的RDBMS Overheads pdf
RDBMS在处理Terabytes&的大量数据方面遇到了挑战。 Peta字节。即使你有独立/廉价磁盘冗余阵列(RAID)&数据粉碎,对于大量数据而言,它不能很好地扩展。您需要非常昂贵的硬件。
记录 :组装日志记录并跟踪数据库结构中的所有更改会降低性能。如果不要求可恢复性或通过其他方式(例如,网络上的其他站点)提供可恢复性,则可能不需要记录。
锁定 :传统的两阶段锁定会产生相当大的开销,因为对数据库结构的所有访问都由一个单独的实体Lock Manager管理。
锁定 :在多线程数据库中,必须先锁存许多数据结构才能访问它们。删除此功能并采用单线程方法会对性能产生显着影响。
缓冲区管理 :主内存数据库系统不需要通过缓冲池访问页面,从而消除了每个记录访问的间接级别。
这并不意味着我们必须使用NoSQL而不是SQL。
但是,由于以下原因/ RDBMS属性,RDBMS优于NoSQL
我们必须使用RDBMS(SQL)和NoSQL(不仅仅是SQL),具体取决于业务案例&要求
答案 3 :(得分:14)
NOSQL与关系数据库模型相比没有特别的优势。 NOSQL确实解决了当前SQL DBMS的某些限制,但它并不意味着比以前的数据模型具有任何基本的新功能。
NOSQL仅表示没有 SQL (或“不仅仅是SQL”),但这并不意味着与关系相同。原则上,关系数据库将构成一个非常好的NOSQL解决方案 - 只是当前的一组NOSQL产品都没有使用关系模型。
答案 4 :(得分:3)
如果您需要以高性能处理大量数据
OR
如果没有预先确定数据模型
然后
NoSQL数据库是更好的选择。
答案 5 :(得分:3)
RDBMS 更关注关系, NoSQL 更关注存储。
当 RDBMS 遇到瓶颈时,您可以考虑使用 NoSQL 。 NoSQL 使 RDBMS 更加灵活。
答案 6 :(得分:3)
NoSQL优于RDBMS的最大优势是可扩展性。 NoSQL数据库可以轻松扩展到许多节点,但对于RDBMS来说,这非常困难。可伸缩性不仅可以为您提供更多的存储空间,而且还可以提供更高的性能,因为许多主机可以同时工作。
答案 7 :(得分:1)
来自mongodb.com:
NoSQL数据库在四个主要方面与旧的关系技术不同:
数据模型:NoSQL数据库允许您构建应用程序而无需先定义架构,这与使您在向系统添加任何数据之前定义架构的关系数据库不同。当您的数据和需求发生变化时,没有预定义的模式可以使NoSQL数据库更容易更新。
数据结构:关系数据库是在数据结构合理且由关系明确定义的时代构建的。 NoSQL数据库旨在处理非结构化数据(例如,文本,社交媒体帖子,视频,电子邮件),这些数据构成了当今存在的大部分数据。
扩展:扩展NoSQL数据库比关系数据库便宜得多,因为您可以通过在廉价的商用服务器上扩展来增加容量。另一方面,关系数据库需要单个服务器来托管整个数据库。要扩展,您需要购买更大,更昂贵的服务器。
开发模型:NoSQL数据库是开源的,而关系数据库通常是封闭源,其软件使用时需要支付许可费。使用NoSQL,您可以开始使用项目,而无需在软件费用方面进行任何大量投资。
答案 8 :(得分:1)
只需添加以上给出的所有信息
NoSql的优点:
1)NoSQL很好,因为它支持无模式和面向对象的体系结构,因此希望快速投入生产。
2)NoSql数据库最终是一致的,这在简单的语言中意味着它们不会像RDBMS那样对数据(文档)提供任何锁定,这意味着最新的数据快照始终可用,从而增加了延迟您的应用程序。
3)它使用MVCC(多视图并发控制)策略来维护和创建数据(文档)快照。
4)如果要建立索引数据,则可以创建视图,该视图将根据您提供的视图定义自动为数据建立索引。
NoSql的缺点:
1)它绝对不适合大型的大型事务应用程序,因为它最终会保持一致并且不支持ACID属性。
2)此外,由于它使用MVCC方法进行并发控制,因此还会创建数据(文档)的多个快照(修订),其结果是比以前更快地消耗了空间,这使得压缩和重新索引更加频繁,并且它将随着应用程序中数据和事务的增长,会降低应用程序响应速度。 为了解决这个问题,您可以水平扩展节点,但是再次比较比较sql数据库,成本会更高。