RDBMS、NoSql、NewSql区别

主要讲述Sql、NoSql、NewSql的区别以及特性等。

特点

RDBMS(Sql)

关系型数据库是将复杂的数据结构以行和列的形式进行存储及展示,如Excel中的数据形式。在关系型数据中,对数据的操作几乎都是建立在一个或多个关系表的基础上。通过表的关系来实现数据库的管理。典型的关系型数据库有 Oracle、MySql、SQL Server等。

NoSql

NoSQL,指的是非关系型的数据库。NoSQL用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。常见的有Redis、Hbase、MongoDB等

NewSql

NewSQL目标是将SQL的ACID保证与NoSQL的可扩展性和高性能相结合。可以简单地把NewSQL理解为:在NoSQL基础上,加入了事务能力。从实现上来说,主要是SQL+事务+分布式系统。NewSQL的相关产品有TiDB,OceanBase等。


RDBMS特点:

  • 高度组织化结构化数据
  • 结构化查询语言(SQL)
  • 数据和关系都存储在单独的表中
  • 数据操纵语言,数据定义语言
  • 遵循ACID特性:A (Atomicity) 原子性)、C (Consistency) 一致性、I (Isolation) 独立性、D (Durability) 持久性。

NoSql特点:

  • 没有声明性查询语言
  • 没有预定义的模式
  • 键 - 值对存储,列存储,文档存储,图形数据库
  • 最终一致性,而非ACID属性
  • 非结构化和不可预知的数据
  • CAP定理
  • 高性能,高可用性和可伸缩性

NewSql:

  • 基于内存的存储引擎
  • 基于数据分区的水平扩展性
  • 全局索引
  • 基于MVCC的分布式事务
  • 强一致的数据复制(多副本)
  • 自动容灾高可用
Sql NoSql NewSql
关系模型 yes no yes
SQL语句 yes no yes
ACID yes no yes
水平扩展 no yes yes
无结构化 no yes no

现状

   随着互联网应用的大规模快速发展,应用的用户规模、数据量越来越大,并且要求7*24在线,因此
传统关系型数据库逐渐面临瓶颈:

  1. 并发性比较高,可能达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈;
  2. 每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率非常低。
  3. 数据库横向扩展比较困难,当用户量和访问量与日俱增的时候,数据库没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展代价较大,往往需要停机维护和数据迁移。

传统关系型数据库通常有2种解决方法:

  1. 升级服务器硬件:虽然提升了性能,但有天花板。
  2. 数据分片,使用分布式集群结构:对单点数据库进行数据分片,存放到分布式集群里。可扩展性更好,但也带来了新的问题,以前在一个库里的数据,现在跨了多个库,应用系统不能自己去多个库中操作,需要使用数据库分片中间件。分片中间件做简单的数据操作时还好,但涉及到跨库join、跨库事务时就较难处理,因此很多人在业务层处理,复杂度较高。

Nosql放弃了传统SQL的强事务保证和关系模型,重点放在数据库的高可用性和可扩展性。

  noSQL 的主要优势:

  • 高可用性和可扩展性,自动分区,轻松扩展
  • 不保证强一致性,性能大幅提升
  • 没有关系模型的限制,极其灵活

缺点

  • noSQL不保证强一致性,对于普通应用没问题,但金融行业的应用一般都有强一致性的需求。

  • noSQL不支持SQL语句,兼容性较差,不同的noSQL数据库都有自己的 api 操作数据,比较复杂。


newSQL 提供了与 noSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了ACID事务特性。

总结


关于各种数据库的应用场景:

  1. 不需要要事务:
    • 数据量不大:MongoDB
    • 数据量大:HBase
  2. 需要事务:
    • 数据量不大,接受分库分表:Mysql
    • 数据量大/当前数据量不大但增长速度高:OceanBase,TiDB



概念说明

CAP定理(CAP theorem)

在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
  • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
  • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

  • CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
  • CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
  • AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
posted @ 2022-04-28 00:42  GJ_Albert  阅读(824)  评论(0编辑  收藏  举报