近日,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棵树之间进行区分的数据库。