数据库技术的分类,大的方向上可以分为关系型数据库和非关系型数据库:
![](https://img.haomeiwen.com/i7298148/bd5fd95fcf3bdc54.png)
1. CAP定理
CAP定理指出对一个分布式计算系统来说,不可能同时满足一下三点:
- 一致性(Consistency), 所有的节点在同一时间具有相同的数据;
- 可用性(Availability),保证每个请求不管成功失败,都有响应;
- 分区容错性(Partition Tolerance), 系统中任意信息的丢失或失败不会影响系统的继续运行;
![](https://img.haomeiwen.com/i7298148/f17b472c0dee55f1.png)
举个例子来描述一下,当存在A和B两个存储节点;当一个client尝试往A节点写入一条数据的时候,A会把这条记录也同步到B,这样的话令一个client就可以从B里面去读取这条记录了;当A和B之间的同步出现了问题,比如说连接段快了,那么A的记录很有可能没法儿同步到B,这个时候就出现了分区,另一个client要从B读取这条信息的时候,你有两个选择
- 系统允许读取,但返回的数据可能不是最新的,也就是牺牲了一致性,保证可用性;
- 系统停止服务,不允许读取,直到A和B节点的状态都同步了。牺牲了可用性,保障了一致性;
据此,可以将数据库分成三大类,
- 满足CA - 单点集群,满足一致性可用性,比如说关系型数据库;
- 满足CP - 满足一致性和分区容忍性,比如说MongoDB和Redis;
- 满足AP - 这种系统对一致性的要求低一点
2. ACID原则
关系型数据库(RDBMS)必须遵循这个原则
- A(Atomicity)原子性
事物的所有操作都是原子性的,要么全部完成,要么全部都不做; - C(Consistency)一致性
数据库要一直处于一致的状态 - I(Isolation)独立性
并发的事物(Transaction)不会互相影响 - D(Durability)持久性
一旦事务提交以后,它所做的修改将会永远保存在数据库上。宕机不丢失数据。
3. BASE原则
BASE是NoSQL数据库对可用性以及一致性的弱要求原则,也就是说分区容忍性是必须的。
- Basically Availability - 基本可用
- Soft state - 软状态/柔性事物
- Eventually Consistency - 最终一致性
4. SQL和NOSQL
SQL | NoSQL |
---|---|
通常称之为关系型数据库(RDBMS) | 是Not Only SQL的缩写,通常也叫做非关系型数据库或者分布式数据库 |
基于表格的数据库,数据存储成一个n行的表格 | 可以是基于文档,基于键值对,或者是基于图的数据结构 |
需要预先定义schema | 可以针对不同非结构化的数据有动态的schema |
可以纵向扩展,只能通过增加硬件能力来增加容量 | 可以横向扩展,可以通过增加资源池里的数据库服务器来降低负载 |
采用SQL(结构化的查询语言)来进行数据的操作 | 不同的数据库有不同的查询格式 |
适合复杂查询 | 复杂查询比较困难 |
不适合分层数据保存 | 适合分层数据,非常适合大数据集 |
5, 不同的数据库技术
- Mongo - 文档存储,JASN格式文档存储;
- Redis - 键值对存储
- MySQL - 表格存储
数据库产品 | 类型 | 简介 |
---|---|---|
Mongo | 文档存储,NoSQL | 使用JSON类型的数据结构,存储内容是文档型;多线程的软件架构,一个连接一个线程 |
Redis | 键值存储,NoSQL | 使用key-value的方式存储,支持String,set,hash,list等类型;单进程单线程线程的软件架构,只支持单核,支持高并发 |
MySQL | 表格存储,SQL | 常用的SQL数据库 |
网友评论