存储系统
什么是存储系统?
一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统一个提供了读写、控制类接口,能够安全有效地把数据持久化的软件,就可以称为存储系统
存储系统特点
作为后端软件的底座,性能敏感
存储系统软件架构,容易受硬件影响
存储系统代码,既“简单”又“复杂”
存储系统 — RAID技术
RAID出现的背景:
- 单块大容量磁盘的价格 > 多块小容
- 单块磁盘的写入性能 < 多块磁盘的并发写入性能
- 单块磁盘的容错能力有限,不够安全
- 多块磁盘简单组合
- 数据条带化存储,提高磁盘带宽
- 没有额外的容错设计
- 一块磁盘对应一块额外镜像盘
- 真实空间利用率仅50%
- 容错能力强
- 结合了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等)
- ......