数据库和存储 | 青训营笔记

90 阅读2分钟

存储系统

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

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

存储系统 — RAID技术
 RAID出现的背景:

  • 单块大容量磁盘的价格 > 多块小容
  • 单块磁盘的写入性能 < 多块磁盘的并发写入性能
  • 单块磁盘的容错能力有限,不够安全
 RAID 0
  • 多块磁盘简单组合
  • 数据条带化存储,提高磁盘带宽
  • 没有额外的容错设计
 RAID 1
  • 一块磁盘对应一块额外镜像盘
  • 真实空间利用率仅50%
  • 容错能力强
 RAID 0 + 1
  • 结合了RAID 0 和 RAID多块磁盘简单组合
  • 真实空间利用率仅50%
  • 容错能力强,写入带宽好

事务的特性
 事务具有以下特性:

  • A(tomicity),事务内的操作要么全做,要么不做
  • C(onsistency),事务执行前后,数据状态是一致的
  • I(solation),可以隔离多个并发事务,避免影响
  • D(urability),事务一旦提交成功,数据保证持久性

Linux的本地文件系统
 linux经典哲学:一切皆文件
 文件系统的管理单元:文件
 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
 Linux文件系统的两大数据结构:
  Index Node & Directory Entry
    Index Node 记录文件元数据,如id、大小、权限、磁盘位置等
    inode是一个文件的唯一标识,会被存储到磁盘上
    inode的总数在格式化文件系统时就固定了

    Directory Entry 记录文件名、inode指针,层级关系(parent)等
    dentry是内存结构,与inode的关系是N:1(hardlink的实现)

SQL所需要支持的基本操作

  • Insert(插入)
  • Update(更新)
  • Select(查询)
  • Delete(删除)
  • Where(条件语句)
  • GroupBy(分组)
  • OrderBy(排序)
  • Create user(创建用户)
  • Create database(创建数据库)
  • Create table(创建表格)
  • Alter table(修改表格 drop column,drop constraint等)
  • ......