内存数据库内核开发 工作日志(innodb的原理,算法详细剖析)(九)
几个星期来一直在数据库文档的大海中浸泡,突然发现我还是没能深入到数据库内核开发的真正核心,始终停留在sqlite这个简单的框架无法突破,我需要重新思考一个新的切入点,最开始研究SQLite数据库,收获是数据库引擎开发的基本原理,虚拟机,代码生成,B-tree的各种算法,但当我考虑拓展其功能时我傻眼了,我没有一种专业的手法去扩展其中一种功能,比如,当我想把并发控制由整个数据的数据锁拓展到表级甚至行级时,就束手无策了。
我们必须从专业数据库去了解数据库的每个方面,才能从整体把握。
数据库内核开发的最艰难的一步就是从借鉴到创新,对于打算商业的数据库,以sqlite为模版还是太业余了,最后必须从商业的数据库入手来改造.
innodb的简单介绍请参照(内存数据库内核开发 工作日志(Mysql的架构体系初读)(八))
innodb的原理,算法详细剖析大致内容如下,innodb代码很有来头,是现oracle副总裁Heikki Tuuri写的,嘿嘿
重要的技术部分包括以下几个要点,要做出出色专业的内存数据库,单单要改造sqlite就成功是不对的,一定要把每一部分摸清摸透。
现在进度目前是停留在以下数据库各模块的操作关联,所幸代码并不难读,很快的这样标题会逐个加上链接来分析具体的实现。
1,内存管理
2, 缓存池
3,B-tree操作
4,数据页
5,事务
6, 日志
7, 系统IO (磁盘操作)
8, 数据字典
9,解析器 (脚本详细)
10,数据锁
11, 数据库数据类型定义
ps:很多人多觉得自己做数据库是幼稚的,山寨的,不切实际的,事实上也是困难重重,但你要知道innodb也就Heikki Tuuri一个人就啃出来的,为了我最爱的数学,我依然想再坚持一下,虽然有点孤单,但充满求知的快乐。