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. 记一次针对Centos的入侵分析

    离开厂家多年,很久没有碰这类事件了. 回顾: 2017年9月末,接到一个朋友转述的求助信息.他一客户的服务器被黑了.服务器上所跑业务上的金额也全部被人转走了. 朋友的客户加我后,没头没尾的问我能不能做 ...

  2. Web前端面试总结(别人的)

    http://note.youdao.com/noteshare?id=0bfbe45de0de0bc4735f867e5a6c528f&sub=D52F5C079DDE49F99A5118D ...

  3. Ubuntu下映射网络驱动器

    Ubuntu下映射网络驱动器https://www.linuxidc.com/Linux/2013-07/86928.htm linux下samba访问路径: smb://192.168.1.111/ ...

  4. SAP Cloud Platform integration上创建一个最简单的iFlow

    登录SAP CPI控制台,点击这个铅笔图标进入工作区域: 选择一个已经存在的content package: 在这个content package里创建一个新的iFlow: 默认生成的iFlow模型如 ...

  5. 【OS_Windows】Win10应用商店闪退和点击Cortana搜索框闪退的解决方法

    Windows10用户遇到了打开应用商店时闪退和点击Cortana小娜搜索框闪退的问题,并且在微软社区求助,得到了一种可行的解决方法,那就是查看Network List Service(网络列表服务) ...

  6. Redis支持的数据类型

    String字符串: 格式: set key value string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redi ...

  7. 更改 Ubuntu 的 apt 源

    1.在更改apt源之前要先备份官方自带的apt源 cd /etc/apt sudo cp sources.list sources.list.bak 2. 更改 sources.list 文件 sud ...

  8. Python paramiko安装报错

    报错:CryptographyDeprecationWarning 代码引用: import paramiko client = paramiko.SSHClient() client.connect ...

  9. linux 账户控制

    用户 用户是能够获取系统资源的权限的集合. linux用户组的分类: 管理员 root :具有使用系统所有权限的用户,其UID 为0. 普通用户 : 即一般用户,其使用系统的权限受限,其UID为500 ...

  10. jenkins与gitlab集成,分支提交代码后自动构建任务(六)

    一.在gitlab中创建token 复制token,此token只显示一次:6SB8y4jt31NnYG5-nWoi 二.在gitlab上为项目创建trunk分支 三.在jenkins中配置gitla ...