LightDBKey-Value 數(shù)據(jù)庫
LightDB 是一個 Key-Value 數(shù)據(jù)庫,該項(xiàng)目由三個部分構(gòu)成。
Lightdb.lib 對 rocksdb 做了一層封裝,主要的修改是追加了保存的數(shù)據(jù)類型,和表的概念。
https://github.com/NewEconoLab/lightdb.lib
Lightdb.server 是一個遠(yuǎn)程數(shù)據(jù)庫,Lightdb 的服務(wù)器版本。
https://github.com/NewEconoLab/lightdb.server
Lightdb.SDK 是方便客戶端接入 LightdbServer 提供的,目前只提供了 C# 版本實(shí)現(xiàn),后續(xù)還會提供 Typescript 版本實(shí)現(xiàn),通訊協(xié)議比較簡單,任意支持 Websocket 的方案都可以連接。
https://github.com/NewEconoLab/lightdb.sdk
項(xiàng)目特點(diǎn)
追加了數(shù)據(jù)類型和表概念
有服務(wù)器,采用 Websocket 通訊,對 JS 友好
數(shù)據(jù)的存儲以 taskblock 為單位,方便數(shù)據(jù)庫互相驗(yàn)證和同步
最重要的特點(diǎn)是還有一個關(guān)于讀的快照 Snapshot。快照的需求來源是數(shù)據(jù)處理的事務(wù)化,或者說一批操作的原子性要求。
傳統(tǒng)數(shù)據(jù)庫一定程度支持事務(wù)化,而 Key Value 數(shù)據(jù)庫這邊支持事務(wù)化的程度就更差一些。
而 NEO 使用的嵌入式數(shù)據(jù)庫,LevelDB 因?yàn)椴捎?LSM 存儲方式,提供讀取的 snapshot 非常容易,代價(jià)也小。
這也就造成了在 NEO 的實(shí)現(xiàn)中,存儲部分對 Snapshot 的依賴非常強(qiáng)。
