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