认识存储与数据库 | 青训营笔记

122 阅读4分钟

认识存储与数据库

数据存储和数据库在整个计算机体系中是必不可少的东西(不然你的信息怎么保存),下面我们就根据认识存储与数据库这节课,来了解一下有关存储与数据库方面的知识吧!

01.经典案例

一条数据从产生,到数据流动,最后持久化的全生命周期。

数据的产生:

DB-case-data-general.png

数据的流动

DB-data-flows.png

小明在手机上操作,产生了一条结构化的用户注册数据,这条数据往开发APP的后端服务器而去,去到数据库系统。到了这一步才算真正持久化下来。

如果不持久化,只存储在内存里,那么用户每次使用都得重新注册。所以需要把需要记忆、持久化的数据储存下来。

数据的持久化

  • 校验数据的合法性:“小明”是否已存在?

  • 修改内存:用高效的数据结构组织数据

  • 写入存储介质:以寿命&性能又好的方式写入硬件

潜在的问题:

DB-case-question.png


02. 储存 & 数据库简介

2.1 储存系统

什么是存储系统?

一个提供读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统。(包含 User、Medium、Memory、Network)

存储系统 系统特点

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

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

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

存储器层级结构:

DB-storage-structures.png

塔尖 Layer1:Samll size、small capacity、processor registers、vary fast、vary expensive

塔底 Layer6:Large size、tape backup,very slow,affordable

Persistent Memory:在中间层兼顾持久化介质、兼顾内存介质的新型存储器。

数据怎么从应用到存储介质

DB-data-apply-to-storage.png 如何把想写的数据持久化到介质上。摘自《Linux Programming》,用户数据从产生到持久化到单机介质上的链路图。

从 User Data 到 Disk,中间有很多个 buffer 或者说 cache。

硬件设备 可能只提供 Btye 级别的读取,这样有 cache 很重要。

Buffer 可以以应用层友好的,跟软件或硬件进行交互。

拷贝的越多,CPU 消耗越多,关键路径希望减少拷贝。

避免硬件切换更改了,软件要重构。


  • 缓存 很重要,贯穿着整个存储体系

  • 拷贝 很昂贵,应该尽量减少

  • 硬件设备五花八门,需要有抽象统一的接入层

RAID 技术:

单机存储系统如何做到 高性能/高性价比/高可靠性

RAID(Redundant Aeeay of Inexpensive Disks)

RAID出现的背景:
  • 单块大容量磁盘的价格 > 多块小容量磁盘

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

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

RAID 0:

  • 多块磁盘简单组合

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

  • 没有额外的容错设计

RAID 1:

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

  • 真实空间利用率仅50%

  • 容错能力强

RAID 0+1:

  • 结合了 RAID 0 和 RAID 1

  • 真实空间利用率仅50%

  • 容错能力强,写入带宽好


2.2 数据库

关系型数据库非关系型数据库

Edgar.F.Codd 于 1970提出 关系模型

关系(Relation)又是什么?

关系=集合=任意元素组成的若干有序偶对反应了事物间的关系

关系代数=对关系作运算的抽象查询语言

  • 交、并、笛卡尔积……

SQL = 一种 DSL(Domain Specific Language) = 方便人类阅读的关系代数表达形式

关系型数据库特点

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

  • 结构化数据优化

  • 支持事务(ACID)

  • 支持复杂查询语言

非关系型数据库特点

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

  • 半结构化数据友好

  • 可能支持事务(ACID)

  • 可能支持复杂查询语言


2.3 数据库 vs 经典存储

结构化数据管理:

DB-structure-data-manage.png

把一个数据写入数据库,用关系型数据库是很自然的写入。

而使用传统文件存储,得写入到文件,然后执行定义和管理结构。定义8 bytes 长度 因为不固定,然后才定义数据。

从上述对比可见,使用文件存储的方式非常麻烦,而且如果数据要删除,操作起来更麻烦。

事务能力:

凸显出数据库支持事务的优越性。

事物具有ACID:

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

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

  • I(Isolation),可以隔离多个并发事务,避免影响

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

复杂查询能力

写入数据之后,想做很复杂的查询怎么办?

DB-Complex-query.png

左边灵活、简洁,右边僵化、复杂。


2.4 数据库的使用方式

DB-usage.png

对数据定义进行修改时:

  • Create user

  • Create database

  • Crate table

  • Alter table

  • ……