带你认识存储&数据库(一)| 青训营笔记

90 阅读3分钟

一、经典案例

1.数据的产生

手机上产生的用户注册数据 -> 后端服务器 -> 数据库其他系统)

2.数据的持久化

  • 校验数据的合法性
  • 修改内存
  • 写入存储介质

3.潜在的问题

  • 数据库怎么保证数据不丢?
  • 数据库怎么处理多人同时修改的问题?
  • 为什么用数据库,除了数据库还能存到别的存储系统吗?
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式,要用什么编程语言?

二、存储&数据库简介

1.什么是存储系统?

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

2.系统特点:

  • 作为后端软件底座,性能敏感
  • 存储系统代码,既“简单”又“复杂“
  • 存储系统软件,容易受硬件影响

3.存储器层级结构

  • 第一层:通用寄存器堆
  • 第二层:指令与数据缓冲栈
  • 第三层:高速缓冲存储器
  • 第四层:主储存器(DRAM)
  • 第五层:联机外部储存器(硬磁盘机)
  • 第六层:脱机外部储存器(磁带、光盘存储器等)

image.png

图片来源于百度百科

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

  • 缓存很重要,贯穿整个存储体系
  • 拷贝很昂贵,应该尽量减少
  • 硬件设备五花八门,需要有抽象统一的接入层

5.RAID技术

(1)单机存储系统怎么做到高性能/高性价比/高可靠性?

  • Redundant Array of Inexpensive Disk(RAID)
  • RAID(独立磁盘冗余阵列)是把相同的数据存储在多个硬盘的不同的地方的方法。
  • 通过把数据放在多个硬盘上,输入输出操作能以平衡的方式交叠,改良性能。因为多个硬盘增加了平均故障间隔时间(MTBF),储存冗余数据也增加了容错。(资料来源于百度百科)

(2)RAID出现的背景:

  • 单块大容量磁盘的价格>多块小容量磁盘
  • 单块磁盘的写入性能<多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限,不够安全

(3)RAID的分类

RAID 0

  • 多块磁盘简单组合
  • 数据条带存储,提高磁盘带宽
  • 没有额外的容错设计

RAID1

  • 一块磁盘对应一款额外镜像盘
  • 真是空间利用率仅50%
  • 容错能力强

RAID 0+1

  • 结合了RAID0 和RAID1
  • 真实空间利用率仅50%
  • 容错能力强,写入带宽好

6.难道数据库和存储系统不一样嘛?

存储系统和数据库系统是两个不同的概念。

数据库可以分为关系型数据库和非关系型数据库。

存储系统和数据库系统之间的区别在于,存储系统是用于存储数据的硬件和软件系统,而数据库系统是用于组织,存储和管理数据的软件系统。

7.关系又是什么?

  1. 1970年提出关系模型
  2. 关系=集=任意元素组成的若干有序偶对反应了事物间的关系
  3. 关系代数=对关系做运算的抽象查询语言
  4. SQL=一种DSL=方便人类阅读的关系代数表达形式

8.关系型数据库

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

  • 结构化数据友好
  • 支持事务ACID
  • 支持复杂查询语言

9.非关系型数据库

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

  • 半结构化数据友好
  • 可能支持事务ACID
  • 可能支持复杂查询语言

10.数据库VS经典存储——结构化数据管理

一条用户注册数据

  • -> 写入关系型数据库以表形式管理
  • -> 写入文件,自行定义,管理结构(定义结构体之类)

11.数据库VS经典存储——事务能力

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

事务(ACID)具有:

  • A事务内的操作要么全做,要么不做
  • C事务执行前后,数据状态是一致的 (示例:微信转账的总金额不发生变化,A向B转账,A微信中总金额为1000元,B微信中金额为0元,A转账B500元,此时A微信中总金额为500元,B微信中总金额为500元,转账前后AB两人微信总金额不发生变化,体现了数据一致性。)
  • I可以隔离多个并发事务,避免影响
  • D事务一旦提交成功,数据保证持久性

12.数据库VS经典存储——复杂查询能力

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

->关系型数据库使用查询语句轻松应对

13.数据库使用方式

Everything is Domain Specific Language

增删改查

  • Insert
  • Update
  • Select
  • Delete
  • Where子句
  • GroupBy
  • OrderBy