当前位置:  开发笔记 > 数据库 > 正文

NoSql vs Relational数据库

如何解决《NoSqlvsRelational数据库》经验,为你挑选了4个好方法。

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

NoSQL相对于传统RDBMS有哪些优势?



1> duffymo..:

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

话虽如此,NoSQL代表"Not Only SQL".它并不打算敲取SQL或取代它.

SQL有几个非常大的优点:

    强大的数学基础.

    声明性语法.

    结构化查询语言(SQL)中的一种众所周知的语言.

那些还没有消失.

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

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

也许读这个会有所帮助.


你能举一些非关系数据的例子吗?
文档和图像也可以像SQL Server和Oracle一样存储在RDBMS中?那为什么NoSQL?
半结构化数据就是这样一个类.它包含XML,电子邮件,JSON等.请参阅维基百科页面.一般规则是结构存在,但是松散定义和动态可扩展(后者倾向于使用关系模型进行分类 - 虽然模型并非不可能,但它确实很麻烦).另一类是"自然数据":一种小说,一种图像,两者都没有附加元数据.
那么,你不能做`SELECT blob FROM images WHERE blob CONTAINS('red car')`.因此,虽然您可以将数据原始数据存储在数据库中,但如果不附加元数据,则无法进行搜索.RDBMS系统中的全文搜索模块弥合了一些半结构性差距.

2> I GIVE CRAP ..:

历史看起来像这样:

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

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

    酿酒商CAP定理得到证实.所有使用的RDBMS系统都是CA系统.人们也开始玩CP和AP系统.K/V商店非常简单,因此它们是研究的主要工具.

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

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

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


什么是CAP,CP,AP,K/V?
在维基百科上查找CAP定理.CA和CP来自那里.K/V是Key/Value的缩写,是从键到值的(分布式)有限映射.

3> Ravindra bab..:

由于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数据库支持ACID事务。

4> nvogel..:

与关系数据库模型相比,NOSQL没有特别的优势.NOSQL确实解决了当前SQL DBMS的某些限制,但它并不意味着比以前的数据模型具有任何基本的新功能.

NOSQL仅表示没有SQL(或"不仅仅是SQL"),但这并不意味着没有关系.原则上,关系数据库将构成一个非常好的NOSQL解决方案 - 只是当前的一组NOSQL产品都没有使用关系模型.


似乎在最近的O'Reilly Strata会议上,Mark Madsen在他的[数据库历史中]创造了对"NoSQL"的新解释(http://www.nosql-vs-sql.com/# no-tation)取代"Not Only SQL".它现在是:"不,SQL";-)
推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有