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在线,因此
传统关系型数据库逐渐面临瓶颈:
- 并发性比较高,可能达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈;
- 每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率非常低。
- 数据库横向扩展比较困难,当用户量和访问量与日俱增的时候,数据库没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展代价较大,往往需要停机维护和数据迁移。
传统关系型数据库通常有2种解决方法:
- 升级服务器硬件:虽然提升了性能,但有天花板。
- 数据分片,使用分布式集群结构:对单点数据库进行数据分片,存放到分布式集群里。可扩展性更好,但也带来了新的问题,以前在一个库里的数据,现在跨了多个库,应用系统不能自己去多个库中操作,需要使用数据库分片中间件。分片中间件做简单的数据操作时还好,但涉及到跨库join、跨库事务时就较难处理,因此很多人在业务层处理,复杂度较高。
Nosql放弃了传统SQL的强事务保证和关系模型,重点放在数据库的高可用性和可扩展性。
noSQL 的主要优势:
- 高可用性和可扩展性,自动分区,轻松扩展
- 不保证强一致性,性能大幅提升
- 没有关系模型的限制,极其灵活
缺点:
-
noSQL不保证强一致性,对于普通应用没问题,但金融行业的应用一般都有强一致性的需求。
-
noSQL不支持SQL语句,兼容性较差,不同的noSQL数据库都有自己的 api 操作数据,比较复杂。
newSQL 提供了与 noSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了ACID事务特性。
总结
关于各种数据库的应用场景:
- 不需要要事务:
- 数据量不大:MongoDB
- 数据量大:HBase
- 需要事务:
- 数据量不大,接受分库分表: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 - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。