開源Graviton數(shù)據(jù)庫(kù),號(hào)稱“用于鍵值存儲(chǔ)的ZFS”
近日,Github開源了一款數(shù)據(jù)庫(kù),自述文件中將自己比作“用于鍵值存儲(chǔ)的ZFS”。Graviton數(shù)據(jù)庫(kù)是一種簡(jiǎn)單、快速、版本化、認(rèn)證、可嵌入的鍵值存儲(chǔ)數(shù)據(jù)庫(kù)。
簡(jiǎn)而言之,Graviton數(shù)據(jù)庫(kù)類似于“用于鍵值存儲(chǔ)的ZFS”,其中每一次寫操作都用加密證明進(jìn)行跟蹤、版本控制和身份驗(yàn)證。另外,還可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行快照。甚至在實(shí)時(shí)更新期間,也可以使用簡(jiǎn)單的copy、rsync命令進(jìn)行數(shù)據(jù)庫(kù)備份,而不會(huì)造成數(shù)據(jù)庫(kù)的損壞。
目前,Graviton數(shù)據(jù)庫(kù)還處于預(yù)覽版本階段。目前,幾乎全單元測(cè)試覆蓋和隨機(jī)黑盒測(cè)試用于確保數(shù)據(jù)庫(kù)一致性和線程安全性。該項(xiàng)目已經(jīng)擁有了100%的代碼覆蓋率。許多決定,如更改、重命名api、處理錯(cuò)誤、哈希算法等,正在評(píng)估和開放改進(jìn)和建議的過(guò)程中。
以下是其在自述文件中提到的一些重要特征:
- 經(jīng)過(guò)身份驗(yàn)證的數(shù)據(jù)存儲(chǔ)(所有鍵、值都由blake 256位校驗(yàn)和支持)。
- 僅追加數(shù)據(jù)存儲(chǔ)。
- 支持2^64樹(理論上)在一個(gè)單一的數(shù)據(jù)存儲(chǔ)。
- 支持值版本跟蹤。所有提交的更改都有版本控制,可以在任何時(shí)間訪問(wèn)它們。
- 快照(多樹在單個(gè)版本中提交,導(dǎo)致多存儲(chǔ)桶同步,可以訪問(wèn),附加和進(jìn)一步修改每個(gè)快照,刪除鍵,修改值等,新鍵,值存儲(chǔ)。)
- 能夠遍歷樹中的所有鍵值對(duì)。
- 能夠在線性時(shí)間內(nèi)區(qū)分兩棵樹,并報(bào)告插入、刪除、修改的所有變化。
- 最小和簡(jiǎn)化的API。
- 理論上支持EB數(shù)據(jù)存儲(chǔ),內(nèi)部測(cè)試了多TB。
- 解耦的存儲(chǔ)層,允許使用對(duì)象存儲(chǔ),例如Ceph,AWS等。
- 能夠生成可以證明密鑰存在或不存在的加密證明的能力(加密證明約為1KB。)
- 超快的證明生成時(shí)間,每個(gè)核心每秒約1000個(gè)證明。
- 支持基于磁盤的基于文件系統(tǒng)的持久性存儲(chǔ)。
- 支持基于內(nèi)存的非持久性存儲(chǔ)。
- 100%的代碼覆蓋率。
與其他數(shù)據(jù)庫(kù)的比較時(shí),在自述文件中提到GravitonDB是唯一提供實(shí)時(shí)時(shí)間的數(shù)據(jù)庫(kù)。同樣,目前GravitonDB是唯一可以線性時(shí)間在2棵樹之間進(jìn)行區(qū)分的數(shù)據(jù)庫(kù)。