1个不稳定版本
使用旧的Rust 2015
0.1.0 | 2018年8月5日 |
---|
#15 在 #replicated 中
140KB
2K SLoC
HermitDB
基于Git(或任何其他分布式日志)的私有去中心化数据库
复制的日志数据结构在许多分布式系统中都得到了应用,我们在比特币中看到了它作为区块链,在像Kafka这样的依赖分布式日志的系统中看到了它,当然,在Git中我们也看到了它作为分支提交历史。
HermitDB认识到这些日志的广泛部署,并将允许用户使用他们提供的日志来复制他们的数据。
如果这听起来有些抽象,那么推动这个想法的是,如果你在HermitDB上构建了一个应用程序,而我则是你应用程序的用户,我可以通过将你的应用程序指向我控制的Git仓库来同步应用程序的数据到我的所有设备上。
extern crate hermitdb;
extern crate sled;
use hermitdb::{memory_log, map, DB};
fn main() {
let actor = 32;
let config = sled::ConfigBuilder::new().temporary(true).build();
let tree = sled::Tree::start(config).unwrap();
let log = memory_log::Log::new(actor);
let map = map::Map::new(tree);
let db = DB::new(log, map);
}
动机
我们现在看到了集中式数据的危险,我们中的许多人正在寻找和构建我们使用的工具的去中心化替代品。
更大规模的问题似乎已经得到妥善处理。去中心化解决方案每天都在出现,用于社交网络、货币、内容分发、在线身份和其他许多难题。
但是,我们如何管理生活的工具呢?
例如密码管理器、日历、联系人簿和记事本应用程序等工具。这些工具帮助我们组织我们的生活。不幸的是,当我们想要在设备之间同步数据时,我们就放弃了我们的数据。
开发者希望给我们一个数据始终跟随我们的体验,但现有的基础设施和工具却将开发者推向了集中式数据。
这就是HermitDB想要帮忙的地方。
使用HermitDB构建的工具让用户对自己的数据拥有控制权。
深入探讨
从核心来看,HermitDB是一个键/值CmRDT存储库,操作在用户提供的日志上复制。键/值存储中的值本身也是CmRDT。
相关技术
- https://github.com/ff-notes/ff - 一个使用CRDT和Git构建的分布式笔记应用程序
依赖项
~18–28MB
~603K SLoC