TRDB
TRDB:“Traditional Relational Database”,即“传统关系型数据库”。
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。
TRDB技术设计最初基于单机集中管理数据概念而进行的,所以受单机物理性能的限制。TRDB技术是建立在数据库管理系统(DBMS)上的.
TRDB无法解决的问题:
- 传统大型关系型数据库无法很好的解决问题
- 在互联网上的应用
- 面对的是大量数据存储和使用问题
- 大数据
代表Oracle、SQL Server、MySQL。
TRDB遵循的原则
-
1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。 -
2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。 -
3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。 -
4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
TRDB优缺点
1.优点:
-
非常完备的关系理论基础
-
具有事务性机制的之处
-
高效的查询优化机制
2.缺点:
-
无法满足海量数据的管理需求
-
无法满足高并发的需求
-
无法满足高可扩展性和高可用性的需求
NoSQL
NoSQL:“Not only SQL” ,即“不仅仅是SQL”
根据前面我们所提到的传统关系型数据库无法很好的解决大数据问题,因此引入了NoSQL。NoSQL用于超大规模数据的存储.
NoSQL的产生:
- 解决TRDB无法解决的数据库存储和访问问题。
- 解决大数据应用问题
- 解决互联网上的应用问题
NoSQL遵循的原则
BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:
- 1.BA(Basically Availble) 基本可用
NoSQL允许分布系统中某些部分出现故障,而系统中其他的部分正常工作。 - 2.S(Soft-state) 软状态。
“Soft state” 可以理解为"无连接"的,允许NoSQL在数据处理过程种,存在数据状态暂时不一致的情况,但是经过纠错,最后会一致。 - 3.E(Eventual Consistency) 最终一致性
NoSQL的软状态允许数据处理过程状态的暂时不一致,但是最终处理的结果将是一直的,也是 ACID 的最终目的。
NoSQL的优缺点
1.优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
2.缺点:
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
NoSQL的存储类型
类型 | 部分代表 | 特点 |
---|---|---|
键值存储 | Memcached/Redis | 基于内存数据处理,相对速度最快;可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收,Redis具有大数据管理能力,事物能力处理弱。 |
文档存储 | MongoDB/Couchbase | MongoDB基于硬盘数据处理,速度比SQL数据库提高几十倍,Couchbase基于内存处理;两者都有很强的横向扩展能力。具有大数据处理能力,无事务处理能力。 |
列族存储 | Cassandra、Hbase | 基于硬盘数据处理,由于主要面向大数据处理,所以写速度明显快于读速度,整体读写速度慢于前面两个存储类型,具有较大的数据查询统计功能,无事务处理能力。 |
图存储 | Neo4j、OrientDB | 基于硬盘的数据处理,侧重图数据查询计算。具有ACID事物能力,但使用设计不方便。 |
其他类型 | MarkLogic等 | 略 |
这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
TRDB与NoSQL的区别
- 1.技术上:
TRDB | NoSQL |
---|---|
使用强存储模式技术 | 使用弱存储模式技术 |
采用SQL技术标准定义和操作数据库 | 没有采用SQL技术标准定义和操作数据库 |
采用强事务保证可用性及安全性 | 采用弱事务保证数据可用性 |
主要采用单机集中式处理CP | 主要采用多机分布式处理DP |
- 2.事务上:
上面在技术上其实已经提到了,但还是单独的拿出来说说,TRDB遵循ACID原则,不仅要遵循最终一直性,还要中途不能变。NoSQL遵循BASE原则,只需要保证最终一致性,NoSQL在数据处理过程中,允许状态暂时不一致。 - 3.处理类型上:
NoSQL在处理网页、网站访问量、大量的视频存储等,这些数据允许插入出错,给用户带来的损失往往是能接受的。而TRDB所要面对的数据,如财务数据,如果少记录一笔甚至记错一个数字,就可能损失上百万,这都是承受不起的损失。
选择使用ACID还是BASE,或者是说选择TRDB还是NoSQL,取决于他们的优缺点。灵活的运用他们的优势,避开劣势。