由于要研究内存数据库,于是开始分析一些开源的数据库。
基本上,这个数据库是个垃圾。和sqlite的架构相比,这个简直就一废物!没有扩展性、内部结构混乱、性能不敢评价。
基本结构如下:
核心模块就是Table,其他的基本上都是简单的东西。当然还有一块是sql分析。
数据持久在文件,通过log加载成为表数据table,保存在cache里面。使用单向列表node存储。
column保存表结构,其他的就是一些索引约束。
查询的时候,基本上是这些类“混合”+“混乱”操作得出结果。
比如sqlparser解析sql后,得到各种expression+tablefilter。这个时候就把table引入了tablefilter。
然后tablefilter又和expression之间混合混乱一轮,对表数据过滤处理,得到了select的返回对象。
select再组装各种result.record,返回给用户。
------------
架构上看,基本上就一个乱七八糟。
table和database相互依赖
table和cache和row又相互依赖。
然后index、constraint又和table、row相互依赖,基本上就是乱七八糟!!!!
整个database又贯穿在index、table、parser、constraint、expression里面。
我不知道这么美国佬的智商到底有多少!如果要重写,估计整个hsql要全部推翻。
sqlite有自身的特色,例如Sqlite虚拟机VDBE,这样一下子把sql和数据存储隔离,最起码就比hsql简单了50%
美国佬这些废物的智商真的值得怀疑!!!!