-
内存数据库内核开发 工作日志(Mysql的架构体系初读)(八)
摘要:经过几天好好地查看的Mysql的源码及文档,以上是Mysql大致的结构图,我们剖析mysql的目的是从中我们去借鉴他数据处理的一些方法,对于sql虚拟机我们前面已经解析过SQLite构建SQL虚拟机的做法,在我们查看Mysql内部机制,的时候,我们发现Mysql的做法跟SQLite是一样的只不过将Lemen代码生成器换成yacc.那我们的工作就放到存储引擎中,重点去了解, 1,Mysql中的并发...
阅读全文
-
内存数据库内核开发 工作日志(工程需求调研)(六)
摘要:从官方文档中翻译出Oracle Times Ten的强大功能Times Ten体系结构 并发管理: 支持多线程访问。 支持不同的事务隔离级别:Read committed Serializable 支持不同级别的锁控制:库级,表级,行级 支持拴:用于保护内部数据结构 自动死锁检测和解除 完整的事务控制机制,包括commit/rollback 数据一致性:数据库总是保持数据一致状态,并且在掉电等情况...
阅读全文
-
内存数据库内核开发 工作日志(lemon柠檬牌代码生成器)(五)
摘要:5.lemon柠檬牌代码生成器 前面说了,词法的解析器最大的难点在与将语句中关键词与参数多样组合,与程序具体的处理逻辑一一对应。这是一个光想想就头大的事情,为此,我们找到了一个能很好的解决这个难题的方案,代码生成器。 lemon代码生成器,简单的说就是将我们写好的context-free grammar (CFG) 语法脚本,用来生产具体的c代码的逻辑,这东西是编写词法解析器与编译工具的利器。 以...
阅读全文
-
内存数据库内核开发 工作日志(初稿)(四)
摘要:4,sql解析器初步设计文档 在构思sql 解析器之前,参看了sqlite的相关文档,sql解析器的难度在于脚本与C逻辑的复杂映射关系,在这里sqlite为我们提供了一个可借鉴的解决方案,就是C代码的脚本生成器,以下给出我大致构思的流程图1,首先用逻辑分支,将语句中的符号归类,构建语法树 。2,将逻辑脚本生成C语言,让程序获取解析sql脚本的能力。3,解析器调用程序逻辑,执行VDBE指令。
阅读全文
-
内存数据库内核开发 工作日志(初稿)(三)
摘要:3,数据库核心 VDBE (Virtual Database Engine)在此先感谢开源社区的伙计们为我提供非常优秀的理论文档,但在此深表感谢,正是有你们的无私和博学,人类才能在科学美丽的道路上不断前进。Eric Niebler, Kevlin Henney,Chris Kohlhoff,John Maddock, Howard Hinnant ,Jeff GarlandFirst of all...
阅读全文
-
内存数据库内核开发 工作日志(初稿)(二)
摘要:2,由开源软件入手 由于我们当然得不到有关内存数据库处理数据的核心技术,所以我们只能出开源内存数据库入手,研究内存数据的开发,市面上有两款著名的开源内存数据库 Oracle Berkeley DB 与 SQLite但使用过的人会发现以上两款数据库有以上的缺点和优点Oracle Berkeley DB 功能相当成熟,支持高并发,多种读写锁,局部锁,且具有数据原子的完整性保护。但缺点的不支持sql解析...
阅读全文
-
内存数据库内核开发 工作日志(初稿)(一)
摘要:1 初衷 许多人听到内存数据库第一印象就是大型的电信企业,银行的解决方案,但其实内存数据的应用相当广泛,从中型网站并发到批量文件处理都可以有很有效的应用。 在商业领域的内存数据库主要ALTIBASE,与Oracle,TimeSen,但其昂贵的授权费(数十万$)令许多普通用户望而却步。 在这里希望能整合在自身对数据处理业务的,开发并商业化一款面向普通用户的内存数据库,整合文件数据处理,和数据库数据处...
阅读全文
|