SQL(Structured Query Language):数据库,指关系型数据库。主要代表:SQL Server、Oracle、MySQL、PostgreSQL。

  NoSQL(Not Only SQL):泛指非关系型数据库。主要代表:MongoDB、Redis、CouchDB。

  NewSQL:对各种新的可扩展/高性能数据库的简称。主要代表:Clustrix、GenieDB。

二:对比

  SQL:

好处来源于它的统一性和易用性,缺点是面对大量的数据时,他的性能会随着数据库的增大而急剧下降。

NoSQL:

以放宽ACID原则为代价,NoSQL采取的是最终一致性原则,而不是像关系型数据库那样地严格遵守着ACID的原则,这意味着如果在特定时间段内没有特定数据项的更新,则最终对其所有的访问都将返回最后更新的值。 这就是这样的系统通常被描述为提供基本保证的原因(基本可用,软状态,最终一致性) — 而不是ACID。

NewSQL:

NewSQL选择汲取了SQL和NewSQL的优点,希望将ACID和可扩展性以及高性能结合,但是目前而言,不适用于所有的场景。

三:Let's think

  根据CAP原则,

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance(分区容错)

  这三点不能够同时做到,所以我们可以猜想,未来的很多年里,是不会有这样一个能够满足所有场景的数据库存在,现在主流的关系型数据库+NoSQL的组合是一种解决方案,不断涌现出来的NewSQL也能够满足一定场景中的业务需求。

从NoSQL到NewSQL数据库

OldSql:传统关系型数据库

NewSql:也是关系型数据库,吸收了传统关系型数据库和NoSql数据库的优点。可实现强一致性(传统关系型DB优点),具有强的水平可扩展性(NoSql DB优点)

NoSql:面向互联网应用,如web2.0,半结构化,非结构化数据的存储

图5-6 大数据引发数据处理架构变革

图5-7 关系数据库、NoSQL和NewSQL数据库产品分类图

SQL

SQL是关系型数据库管理系统(RDBMS),顾名思义,它是围绕关系代数和元组关系演算构建的。 70年代以来,它一直是主要的数据库解决方案,只是最近才有了其他产品的空间。 不管有些人说什么,这意味着它一直能出色地执行广泛的任务。 其主要优点如下:

  • 不同的角色(开发者,用户,数据库管理员)使用相同的语言。
  • 不同的RDBMS使用统一标准的语言。
  • SQL使用一种高级的非结构化查询语言。.
  • 它坚持 ACID 准则 (原子性,一致性,隔离性,持久性),,这些准则保证了数据库尤其是每个事务的稳定性,安全性和可预测性。

如你所见,许多SQL的好处来源于它的统一性,舒适性和易用性。 即使你只有非常有限的SQL知识(或完全没有,如果需要),你可以在像 online SQL Query Builder 这样的特殊工具帮助下使用它。

然而,它的缺点使得它非常不适合某些类型的项目。 SQL的主要问题是它难以扩展,因为它的性能随着数据库的变大而快速下降。 分布式也是有问题的。

NoSQL和NewSQL出现的原因之一是,以前的RDBMS的设计不能满足现代数据库每秒处理的事务数量。 像亚马逊或阿里巴巴等需要处理惊人数据量的巨头,以前的RDBMS会在几分钟内出现问题。

NoSQL (Not Only SQL)

NoSQL越来越受欢迎,其中最重要的实现是Apache Cassandra,MongoDB等产品。 它主要用于解决SQL的可扩展性问题。 因此,它是没有架构的并且建立在分布式系统上,这使得它易于扩展和分片。

然而,这些好处是以放宽ACID原则为代价的:NoSQL采取最终一致性原则,而不是所有四个参数在每个事务中保持一致。 这意味着如果在特定时间段内没有特定数据项的更新,则最终对其所有的访问都将返回最后更新的值。 这就是这样的系统通常被描述为提供基本保证的原因(基本可用,软状态,最终一致性) — 而不是ACID。

虽然这个方案极大地增加了可用时间和伸缩性,它也会导致数据丢失----这个问题的严重程度取决于数据库服务器的支持情况和应用代码质量.在某些情况下,这个问题十分严重.

另一个NoSQL出现的问题是现在有很多类型的NoSQL系统,但它们之间却几乎没有一致性.诸如灵活性,性能,复杂性,伸缩性等等特性在不同系统间差别巨大,这使得甚至是专家在他们之间都很难选择.不过,当你根据项目特点作出了合适的选择,NoSQL可以在不显著丢失稳定性的情况下提供一个远比SQL系统更高效的解决方案.

NewSQL

NewSQL是一种相对较新的形式,旨在使用现有的编程语言和以前不可用的技术来结合SQL和NoSQL中最好的部分。 NewSQL目标是将SQL的ACID保证与NoSQL的可扩展性和高性能相结合。

显然,因为结合了过去仅单独存在的优点,NewSQL看起来很有前途; 或许,在未来的某个时候,它将成为大多数人使用的标准。 不幸的是,目前大多数NewSQL数据库都是专有软件或仅适用于特定场景,这显然限制了新技术的普及和应用。

除此之外,NewSQL在每个方面比较均匀,每个解决方案都有自己的缺点和优势。 例如,SAP HANA可以轻松处理低到中等的事务性工作负载,但不使用本机集群,MemSQL对于集群分析很有用,但在ACID事务上表现出较差的一致性,等等。 因此,在这些解决方案变得真正普及之前,可能还需要一段时间。

SQL,NoSQL和NewSQL的区别的更多相关文章

  1. SQL,NoSQL和NewSQL

    一:概念 SQL(Structured Query Language):数据库,指关系型数据库.主要代表:SQL Server.Oracle.MySQL.PostgreSQL. NoSQL(Not O ...

  2. 十六款值得关注的NoSQL与NewSQL数据库--转载

    原文地址:http://tech.it168.com/a2014/0929/1670/000001670840_all.shtml [IT168 评论]传统关系型数据库在诞生之时并未考虑到如今如火如荼 ...

  3. 从NoSQL到NewSQL,谈交易型分布式数据库建设要点

    在上一篇文章<从架构特点到功能缺陷,重新认识分析型分布式数据库>中,我们完成了对不同"分布式数据库"的横向分析,本文Ivan将讲述拆解的第二部分,会结合NoSQL与Ne ...

  4. IBatis.Net使用总结(一)-- IBatis解决SQL注入(#与$的区别)

    IBatis解决SQL注入(#与$的区别) 在IBatis中,我们使用SqlMap进行Sql查询时,需要引用参数,在参数引用中可以使用两种占位符#和$.这两种占位符有什么区别呢? (1):#***#, ...

  5. 转 SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题

    SQL Union和SQL Union All两者用法区别效率以及与order by 和 group by配合问题 SQL Union和SQL Union All用法 SQL UNION 操作符 UN ...

  6. 【转】SQL Server与Oracle的区别

    转自:http://soft.chinabyte.com/database/255/12258255.shtml SQL Server与Oracle的区别 2012-02-10 00:00 中国IT实 ...

  7. 数据库SQL,NoSQL之小感悟

    遇到1000万数据表 最近遇到一个问题,就是单表数据过的存储及查询问题.举个例子:1000万的数据存在一个表中,字段4-5个样子,日常 开发中难免要做过滤.排序.分页.如果把这几个放在一起即要过滤又要 ...

  8. SQL表变量与临时表区别 + 非游标临时表遍历

    SQL表变量与临时表区别 + 非游标临时表遍历 分类: SQL Server2009-11-27 17:01 1196人阅读 评论(2) 收藏 举报 sqlinsert存储sql servermicr ...

  9. Oracle与SQL Server等数据库的区别

    Oracle与SQL Server等数据库的区别 在Oracle中提倡使用一个连接 Oracle处理多个并发语句使用一个连接,大大提升系统能支持的并发量 Oracle运行在32为单进程平台上SGA和P ...

随机推荐

  1. Android中自定义环形图

    如图: 自定义view package com.riverlet.ringview; import android.animation.ObjectAnimator; import android.c ...

  2. Java DbUtils 操作数据库

    示例 1.新建项目,把数据库驱动.DbUtils的jar包添加到项目中 2.新建文件夹resource,标识为资源根目录,下面新建数据库连接的配置文件mysql.properties driver=c ...

  3. Spark(火花)快速、通用的大数据处理引擎框架

    一.什么是Spark(火花)? 是一种快速.通用处理大数据分析的框架引擎. 二.Spark的四大特性 1.快速:Spark内存上采用DAG(有向无环图)执行引擎非循环数据流和内存计算支持. 内存上比M ...

  4. 排序算法的c++实现——冒泡排序

    冒泡排序 冒泡排序是我们大多数人接触到的第一种排序算法,原理简单易懂,不多解释.说明三点: 1. 冒泡排序是稳定排序,只有当两个元素不同时才会交换: 2. 冒泡排序是原址排序,不需要借助额外的空间; ...

  5. MVC4 Model View Controller分离成独立项目

    适合人群:了解MVC项目的程序员 开发工具:vs2012 开发语言:C# 小项目或功能比较单一的项目可以直接新建一个MVC基本项目类型即可,但随着需求不断迭代,项目的功能模块越来越多,甚至有些模块可以 ...

  6. NVM 安装(window/mac/linux)

    一.window版 1.nvm-windows下载 [下载地址](https://github.com/coreybutler/nvm-windows/releases),下载 nvm-setup.z ...

  7. PAT 乙级 1012.数字分类 C++/Java

    题目来源 给定一系列正整数,请按要求对数字进行分类,并输出以下 5 个数字: A​1​​ = 能被 5 整除的数字中所有偶数的和: A​2​​ = 将被 5 除后余 1 的数字按给出顺序进行交错求和, ...

  8. 移动端 1px 像素边框问题的解决方案(Border.css)

    前言 关于什么是移动端1像素边框问题,先上两张图,大家就明白了. 解决方案 将以下代码放在border.css文件中,然后引入 常用className border:整个盒子都有边框 border-t ...

  9. HtmlAgilityPack - 详细简介和使用

    HtmlAgilityPack - 简介 HtmlAgilityPack是.net下的一个HTML解析类库.支持用XPath来解析HTML.这个意义不小,为什么呢?因为对于页面上的元素的xpath某些 ...

  10. 斐波那契数性质 gcd(F[n],F[m])=F[gcd(n,m)]

    引理1 结论: \[F(n)=F(m)F(n-m+1)+F(m-1)F(n-m)\] 推导: \[ \begin{aligned} F(n) &= F(n-1)+F(n-2) \\ & ...