数据库引擎开发以及常见数据库内部原理学习(2)

管理员,你确定其他的文章比我的更有原创性或者技术性?虽然是一个写非常简陋的NoSQL数据库的文章,虽然是基于别人的教学资料的总结,最主要的引导总结性的部分,我不好展开,原创性和技术性碾压首页上一般文章没有一点问题,移除我的文章很好玩是吗?

线索
  • 数据库调度流程
 
1.记录:
  1. 请求解析
    1. 请求接受
      1. 从网络上接收协议抱--网路
    2. 线程调度
      1. 调度系统资源--进程模型
    3. 解析数据
      1. 得到用户请求信息--协议
    4. 生成数据访问流
      1. 解析SQL生成访问计划--优化
  2. 请求处理--运行库
    1. 生成执行代码
      1. 通过访问计划生成可执行代码
    2. 执行代码
    3. 访问数据,写入日志
      1. 数据访问
  3. 存储访问
    1. 数据扫描--数据管理
    2. 索引扫描--索引管理
    3. 数据插入--数据管理、索引管理
    4. 数据更新--数据管理、索引管理
    5. 数据删除--数据管理、索引管理
  4. 日志访问--日志管理
    1. 记录添加
    2. 记录读取
  5. EmeraldDB功能
    1. 客户端支持多节点集群
    2. 不存表或集合的概念
    3. 数据格式是JSON,存储格式是BSON
    4. 对数据进行插入、搜索与删除
    5. 搜索必须按照_id字段
  6. EDB整体架构
    1. 通过散列算法放在指定节点
  7. EDB架构
    1. CLI--client
    2. java Driver--driver
    3. =======================
    4. 请求解析--MSG、PMD
    5. 请求处理--RTN
    6. 存储访问--DMS、IXM
  8. 客户端类图
    1. 客户端吧命令发送到一个Command工厂,工厂里面再去匹配命令,
    2. 而命令都是实现了ICommand接口,这个流程我觉得不是很难理解。就不多说了。
  9. 引擎类以及流程
    1. PMD调用OSS层的一个函数,监听某个端口,把监听到命令转换成x给MSG,
    2. MSG把它转换成系统能识别的结构,然后调用RTN层,RTN层去调用IXM进行查询操作,
    3. 最终通过DMS层完成整个数据的操作。
  10. PMD类图以及其流程
    1. KRCB是内核控制块,其他控制块都是它的字块
    2. EDU的管理器,就是线程管理器
    3. EDUCB线程的状态
    4. Event线程信息
    5. Options操作选项
  11. MSG类图
    1. 协议封装
  12. RTN类图
    1. 一般数据库最复杂得模块,但是我们这里是简化版,东西很少,本来日志,事务回滚都是这里控制的。
  13. IXM类图
    1. 索引管理器,我们这里使用hash索引,只能做精确的匹配
  14. DMS类图
    1. 数据库底层文件操作,以及存储结构操作
  15. OOS类图
    1. 封装系统底层的不同平台的基础操作。
    2. latch、内存操作,队列
2.简化:
  1. 一般数据库可以大致分为:请求解析,请求访问,数据访问,日志访问,四大部分!
  2. EDB的客户端是一个基于工厂模式的请求转发架构
  3. PMD是引擎的线程调度模块
  4. MSG是引擎的协议模块
  5. RTN是运行支撑模块
  6. IMX是hash索引模块
  7. DMS是文件操作模块
  8. OSS是跨平台基础函数模块(封装latch、内存操作、队列操作)
3.背诵:
4.思考:
  1. 数据库一门语言,它的主要操作是把操作命令转换成数据库执行命令。
  2. 这里面最精彩的地方莫过于sql优化引擎对sql的优化处理,但是很可惜,我这个系列的笔记暂时不会涉及到这个方面,
  3. 但是,这个是我最喜欢的部分。将来有机会我也找个机会分享这个东西!
  4. 数据库的主要模块可大体分为命令的解析,这个过程其实很复杂,
  5. 甚至是数据库最复杂的部分,然后就是数据的操作,这个是最核心的模块,
  6. 但是逻辑我个人并不认为是非常麻烦的。当然还有日志模块,我们这个数据库系统的日志模块是非常简单,
  7. 但是,将来讲到数据库日志模块的时候,我将引申到mysql,Oracle之类的数据库,
  8. 我觉得数据库的日志是个非常强大的东西,甚至数据库很多衍生产品都是基于此。
5.复习:
总结
  1. 数据库的组成部分有简单,有复杂,但是归根结底基础的操作是不变的,核心本质是不变。
  2. 用王涛老师的一句话说,数据库的原理现在都是大路货了,人人都知道,
  3. 数据库怎么处理和取舍才是构建一个数据库的重点。





原文地址:https://www.cnblogs.com/jiaoweixue/p/3948651.html