认识存储的本质 | 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天,今天我学习了存储的本质-状态,是偏高级的内容,还需要在实践中慢慢学习。

带你认识存储的本质 - 状态:

 

经典案例存在的问题:

数据库怎么保证数据不丢?

数据库怎么处理多人同时修改的问题?

为什么用数据库,除了数据库还能存到别的存储系统吗?

数据库只能处理结构化数据吗?

有哪些操作数据库的方式,要用什么编程语言?

 

存储系统:

存储系统是指一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统

 

存储系统的特点:

作为后端软件的底座,性能敏感

存储系统软件架构,容易受硬件影响

存储系统代码,既“简单"又“复杂”

 

RAID出现的背景:

单块大容量磁盘的价格>多块小容量磁盘

单块磁盘的写入性能<多块磁盘的并发写入性能

单块磁盘的容错能力有限,不够安全

RAID 0

多块磁盘简单组合

数据条带化存储,提高磁盘带宽

没有额外的容错设计

RAID 1

一块磁盘对应一块额外镜像盘

真实空间利用率仅50%

容错能力强

RAID 0 +1

结合了RAID O和RAID 1

真实空间利用率仅50%

容错能力强,写入带宽好

 

关系型数据库是存储系统,但是在存储之外,又发展出其他能力:

结构化数据友好

支持事务(ACID)

支持复杂查询语言

 

非关系型数据库也是存储系统,但是一般不要求严格的结构化:

半结构化数据友好

可能支持事务(ACID)

可能支持复杂查询语言

事务具有:

A(tomicity),事务内的操作要么全做,要么不做

C(onsistency),事务执行前后,数据状态是一致的

l(solation),可以隔离多个并发事务,避免影响

D(urability),事务一旦提交成功,数据保证持久性

 

以SQL为例,要操作数据时,支持以下操作:

lnsert

Update

Select

Delete

Where子句

GroupBy

OrderBy

 

要对数据定义做修改时,支持以下操作:

Create user

Create database

Create table

Alter table