LightDB 是一个 Key-Value 数据库,该项目由三个部分构成。
Lightdb.lib 对 rocksdb 做了一层封装,主要的修改是追加了保存的数据类型,和表的概念。
https://github.com/NewEconoLab/lightdb.lib
Lightdb.server 是一个远程数据库,Lightdb 的服务器版本。
https://github.com/NewEconoLab/lightdb.server
Lightdb.SDK 是方便客户端接入 LightdbServer 提供的,目前只提供了 C# 版本实现,后续还会提供 Typescript 版本实现,通讯协议比较简单,任意支持 Websocket 的方案都可以连接。
https://github.com/NewEconoLab/lightdb.sdk
追加了数据类型和表概念
有服务器,采用 Websocket 通讯,对 JS 友好
数据的存储以 taskblock 为单位,方便数据库互相验证和同步
最重要的特点是还有一个关于读的快照 Snapshot。快照的需求来源是数据处理的事务化,或者说一批操作的原子性要求。
传统数据库一定程度支持事务化,而 Key Value 数据库这边支持事务化的程度就更差一些。
而 NEO 使用的嵌入式数据库,LevelDB 因为采用 LSM 存储方式,提供读取的 snapshot 非常容易,代价也小。
这也就造成了在 NEO 的实现中,存储部分对 Snapshot 的依赖非常强。