作者将Go的BadgerDB移植到无裸指针的仓颉语言,实现badger-cj。核心难点是并发跳表,采用数组下标偏移量加原子数组替代unsafe.Pointer和CAS,并避免repeat共享原子对象。代价是读性能约慢3倍,但获得无锁并发安全。项目支持事务、MVCC、WAL恢复、Compaction,并作为storm-cj等数据库的存储基础。
该项目发布了将lsm db适配到badger-go 0.80的第一个版本,已经在GitHub上发布。
完成下面两步后,将自动完成登录并继续当前操作。