[存储与数据库系统 | 青训营笔记]

56 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第 15 天

存储与数据库系统

经典案例:数据是如何在系统中流动的?

数据的产生:

某一天,小明下载了一个新的APP,并填写注册表格进行了注册,按下注册按钮。数据就这样产生了,并在几十毫秒的时间内就到达了软件公司的服务器中。

数据的流动: 手机->后端服务器(内存)->数据库(持久化) -> [其他系统]

数据如何持久化?

  • 校验数据合法性(例如用户名是否已经存在)
  • 修改内存(在内存中准备好数据结构)
  • 写入存储介质(按照寿命/性能友好的方式写入存储介质)

存在哪些潜在的问题呢?

  • 数据库如何保证数据不丢失?
  • 数据库如何处理多人同时修改的问题?
  • 除了数据库还有哪些存储系统?
  • 数据库只能处理结构化数据吗?
  • 有哪些操作数据库的方式?

存储系统

  • 什么是存储系统?

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

  • 存储系统有哪些特点?

    • 性能敏感

    • 受硬件影响

    • 代码必须简单&复杂

      • IO路径上必须简单以保证性能
      • 非IO路径上需要保证异常安全性等等
  • 存储系统的层次结构如何?

    • Hierarchy:Cache -> Memory -> HDD -> Tape
    • 存储速度越来越慢,速度和单位价格越来越低

RAID技术

单机存储如何同时做到:高性能、高性价比、高可靠性?

RAID技术出现时的一些背景:

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

RAID0 : 多块磁盘简单组合,数据条带化存储,写入性能加倍但容错性没有保证

RAID1:一块磁盘对应一块镜像,容错能力强,但是空间利用率低也没有性能提升

结合上述两种RAID方式就可以得到高性能、高性价比、高可靠的磁盘系统了。

数据库

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

  • 什么是关系

    描述两个对象之间的关系

  • 关系代数:

    对关系做运算的抽象查询语言

  • SQL

    一种DSL,可读的关系代数表达形式

关系型数据库就是一种存储系统,但是在存储之外还有其他能力:

  1. 结构化数据有好
  2. 支持事务(ACID)
  3. 支持复杂查询语言(如SQL)