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