#user #distributed #log #distributed-systems #replicated #git #push

hermitdb

基于Git(或任何其他分布式日志)的私有去中心化数据库

1个不稳定版本

使用旧的Rust 2015

0.1.0 2018年8月5日

#15#replicated

GPL-2.0 许可证

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。

相关技术

依赖项

~18–28MB
~603K SLoC