存储系统和数据库系统 | 青训营

58 阅读3分钟

存储系统和数据库系统

  1. 存储系统和数据库系统往往是后端服务的最后一环,提供数据存储、查询能力。

  2. RDBMS(关系型数据库)是目前使用最为广泛的数据库之一,同时也是整个信息化时代的基石。

    ACID:

    原子性(Atomicity):事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生

    一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性

    隔离性(isolation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其他事务运行效果

    持久性(Durability):在事务完成之后,该事务对数据库所做的更改可持久的保存在数据库之中,并不会被回滚。

  3. 发展历史

    网状模型:用有向图表示实体和实体之间的联系的数据结构模型

    优点:直接描述现实世界;存取效率高

    劣势:结构复杂;用户不易访问;访问程序设计复杂

    层次模型:用树状<层次>结构来组织数据的数据模型

    优点:结构简单;查询效率高;可以提供较好的完整性支持

    劣势:无法表示M:N的关系插入;删除限制多、遍历子节点必须经过父节点;访问程序设计复杂

    关系模型:使用表格表示实体和实体之间关系的数据模型

    优点:实体及实体间的联系都通过二维表结构表示,可以方便的表示M:N关系;数据访问路径对用户透明

    劣势:关联查询效率不够高;关系必须规范化

  4. SQL执行过程

    需要经历SQL引擎、存储引擎、事务引擎等模块

    SQL引擎包括:

    Paser:经词法分析、语法分析生成语法树,然后对语法树进行合法性校验

    Optimizer:从语法树,根据规则或代价产生执行计划树

    Executor:根据计划树执行,常见方式为火山模型

    存储引擎:负责了数据的底层存储、管理和访问工作。以MySQL的InnoDB为例:

    Buffer Pool:位于内存中的重要结构,用于缓存数据,减少磁盘IO的开销

    Page:数据存储的最基本单位,一般为16KB

    B+u Tree:最常用的索引结构

    事务引擎:实现了数据库的ACID能力。以MySQL的InnoDB为例:

    Atomicity:通过undo日志实现了数据库的原子性,通过Undo Log,数据库可以回滚到事务开始的状态

    Consistency:一致性本质上是一种业务层的限制

    Isolation:通过Undo Log实现MVCC(多版本并发控制),降低读写冲突

    Durability:通过Redo Log(一种WAL实现方式)来保证事务在提交后一定能持久化到磁盘中