layout | title | tags |
---|---|---|
post |
只有 1000 行代码的分布式数据库,值得学习 |
Go 数据库 |
大家好。
今天推荐的项目非常值得使用 Go 语言编程的同学去学习和研究,尤其是对于初学者。minikeyvalue 是一个只有差不多 1000 行代码的分布式 Key-Value 数据库,代码虽然比较少,但是功能一点都不少,支持多机器的状态复制,同时对于 Value 的存储支持 1MB 到 1GB 的大小。
minikeyvalue 项目是受到了 SeaweedFS 的启发,但是 minikeyvalue 能够支持扩展存储 10 亿级别 PB 级的数据文件存储。目前 minikeyvalue 已经在 comma.ai 的生产环境使用。
一个核心简化 minikeyvalue 的设计点是该项目使用 Nginx 做为我们的数据文件的存储服务。
同时 minikeyvalue 依赖 LevelDB 做为数据的索引服务,一定程度上对 minikeyvalue 简化了很多。而所有的数据会以 blob 数据块的形式存储在每台机器的文件系统中,这样我们就可以很容易的在每台机器上对数据块进行增加和删除,用来做数据均衡。
以下是 minikeyvalue 支持的 API:
以下是启动方式,由于依赖了 Nginx,所以服务启动前会先启动 Nginx:
同时也有一些其他基本的使用方法和性能测试命令。
最后说一下代码,就跟文章前面说的一样,真的只有 1000 行左右的代码,除去测试代码实际只有 5 个代码文件,任何同学都可以参考学习一下。
更多项目详情请查看如下链接。