Warning: Undefined global variable $debug in /var/www/ourcoders/tiny4cocoa/application/controllers/baseController.php on line 124
zhh-4096 2020-01-07 00:00:00 发布的技术动态 - OurCoders (我们程序员)
zhh-4096
2020-01-07 00:00:00 发布
开了个新坑: HSQLDB-Research 网页链接 HSQLDB 这个数据库有两点我想Research一下,纯粹就是不太常见,所以好奇。

第一,用AVL Tree来做存储引擎,这是关系数据库不常用的,更多的是BTree;第二,事务并发控制,HSQLDB把数据库教科书上常见的并发控制算法都实现了,例如: 2PL、MVCC、MV2PL,前两者分别是悲观和乐观并发控制,MV2PL算是综合体,读用多版本,写加锁。

InnoDB和H2的MVCC其实都是MV2PL,我的Lealone有点类似MV2PL,但是锁是轻量级的,可以叫MV2PLL,后面两个LL代表Lightweight Lock。

轻量级锁的创建和释放,开销都很低,也不会挂起线程,所以用了MV2PLL之后,就没必要再把传统的2PL、MVCC、MV2PL都实现了。

HSQLDB代码的可读性没有H2那么好,如果第一次选一个数据库的代码来看,选了HSQLDB估计会看得有点晕,若是看过H2之后再看HSQLDB就会好理解一些,我刚刚花了一点点时间随手写了个简单的HSQLDB代码导读: 网页链接 有空闲时间再补充了。

HSQLDB的事务并发控制做得比H2细一些,存储引擎H2的更好,其他的两者不相上下。

阅读HSQLDB的代码几年前就有这个打算了,NoSQL多年以前就把Java社区最流行的HBase和Cassandra都看过了,RDBMS算上H2和现在的HSQLDB也是Java社区排前两名的开源产品了,算是完整了,若是不看老觉得还缺点什么。