day17:认识存储与数据库 | 青训营

72 阅读3分钟

一、经典案例:一条数据从产生,到数据流动,最后持久化的全生命周期是什么样的。

以用户注册数据流动为例:数据(含username、password等数据)传递给后端服务器,服务器往数据库中存入数据。

1.1数据的持久化过程:

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

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

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

1.2潜在问题:

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

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

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

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

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

二.存储&数据库简介

2.1数据库和存储系统背景知识,它们是什么,有哪些特点?

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

系统特点:

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

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

  • 「缓存」很重要,贯穿整个存储体系;
  • 「拷贝」很昂贵(要使用CPU资源),应该尽量减少;
  • 硬件设备五花八门,需要有抽象统一的接入层。

2.2RAID技术

Q:单机存储系统怎么做到高性能/高性价比/高可靠性?

A : R(edundant) A(rray) of l(nexpensive) D(isks)

2.2RAID出现的背景:

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

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

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

2.3为解决以上问题,采用RAID容错

方法一:RAID 0

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

方法二:RAID 1

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

方法三:RAID0+1

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

2.4难道数据库和存储系统不一样吗?先了解关系型数据库和非关系型数据库。

2.4.1关系型数据库是存储系统,但是在存储之外,又发展出其他能力。
  • 1.结构化数据友好;
  • 2.支持事务(ACID)
  • 3.支持复杂查询语言
2.4.2非关系型数据库也是存储系统,但是一般不要求严格的结构化。
  • 1.半结构化数据友好
  • 2.可能支持事务(ACID)
  • 3.可能支持复杂查询语言
2.4.3数据库具有支持事务的优越性。事务有:
  • A(tomicity),事务内的操作要么全做,要么不做
  • C(onsistency),事务执行前后, 数据状态是一致的
  • I(solation),可以隔离多个并发事务, 避免影响
  • D(urability),事务- -旦提交成功, 数据保证持久性