NoSql vs Relational数据库

时间:2010-11-12 00:57:54

标签: database database-design nosql relational-database rdbms

最近 NoSQL 获得了极大的欢迎。

NoSQL 相对于传统 RDBMS 有什么优势?

9 个答案:

答案 0 :(得分:121)

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

据说,NoSQL代表“Not Only SQL”。它并不打算敲取SQL或取代它。

SQL有几个非常大的优点:

  1. 强大的数学基础。
  2. 声明性语法。
  3. 结构化查询语言(SQL)中的一种众所周知的语言。
  4. 那些还没有消失。

    将此视为一个或两个参数是错误的。 NoSQL是人们在适合时需要考虑的替代方案,就是这样。

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

    也许阅读this会有所帮助。

答案 1 :(得分:90)

历史看起来像这样:

  1. Google的反转搜索索引需要一个存储层。他们认为传统的RDBMS不会削减它。因此,他们在GFS文件系统之上实现了NoSQL数据存储,BigTable。主要是成千上万的廉价商品硬件机提供速度和冗余。

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

  3. 酿酒师CAP theorem已被证实。所有使用的RDBMS系统都是CA系统。人们也开始玩CP和AP系统。 K/V stores非常简单,因此它们是研究的主要工具。

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

  5. 我认为起飞的大部分可能与这段历史有关。扩展谷歌在谷歌采取了一些新的想法,其他所有人都跟进,因为这是他们现在知道的缩放问题的唯一解决方案。因此,您愿意重新设计Google的分布式数据库概念,因为这是扩展到特定大小的唯一方法。

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

答案 2 :(得分:37)

NoSQL优于RDBMS,因为以下原因/ NoSQL的特性

  1. 它支持半结构化数据和易失性数据
  2. 它没有架构
  3. 读/写吞吐量非常高
  4. 可以轻松实现水平可扩展性
  5. 将支持Bigdata的Terra Bytes& Peta Bytes
  6. 为Bigdata
  7. 之上的分析工具提供良好支持
  8. 可以托管在更便宜的硬件机器上
  9. 内存缓存选项可用于提高查询性能
  10. 开发人员更快的开发生命周期
  11. 编辑:

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

    RDBMS在处理Terabytes&的大量数据方面遇到了挑战。 Peta字节。即使你有独立/廉价磁盘冗余阵列(RAID)&数据粉碎,对于大量数据而言,它不能很好地扩展。您需要非常昂贵的硬件。

    记录 组装日志记录并跟踪数据库结构中的所有更改会降低性能。如果不要求可恢复性或通过其他方式(例如,网络上的其他站点)提供可恢复性,则可能不需要记录。

    锁定 :传统的两阶段锁定会产生相当大的开销,因为对数据库结构的所有访问都由一个单独的实体Lock Manager管理。

    锁定 :在多线程数据库中,必须先锁存许多数据结构才能访问它们。删除此功能并采用单线程方法会对性能产生显着影响。

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

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

    但是,由于以下原因/ RDBMS属性,RDBMS优于NoSQL

    1. 使用 ACID 属性进行交易 - 原子性,一致性,隔离&耐久性
    2. 坚持强模式正在写入/读取的数据
    3. 实时查询管理(如果数据大小< 1 0 10 Tera字节)
    4. 执行涉及加入&的复杂查询group by clause
    5. 我们必须使用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数据库,成本会更高。