1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2016年5月26日 |
---|
#175 in #版本控制
450KB
3.5K SLoC
包含 (ELF exe/lib, 780KB) build-script-build
Pippin
Pippin 是一个受分布式版本控制系统(特别是 git)启发的数据库。与 git 不同的是,它旨在存储数千到数百万(或更多)小对象,而只需几十个文件。与常规数据库不同,它旨在考虑分布式同步和方便访问单个用户定义类型的对象。Pippin 目前没有用于搜索数据库的真正索引,但确实有分区来将搜索减少到更小的子集。
更多内容,请参阅 src/lib.rs 中的文档或查看 示例。
变更日志
Pippin 0.1.0
Pippin 处于 'alpha' 状态。
面向分区的使用(即单个 '分区')应有所有基本功能并已准备好测试,但 API 可能会更改。最大的问题是由于尚未解决如何安全地扩展文件,每个提交都写入一个新文件。
面向存储库的使用还远远没有准备好。
应该可以正常工作
- 单个 '分区' 内数据的持久化通过快照实现
- 通过提交日志存储更改
- 从快照加日志中恢复状态
- 自动检测最新状态
- 合并多个最新状态(可能需要用户交互)
- 校验和检测损坏的数据
- 文件缺失时恢复一些数据(尽管这需要更多工作)
- 文件格式基本确定,除了标题将获得额外的数据和对象差异
计划实现的功能
- 通过文件标题以分布式方式跟踪多个分区
- 用户指定的分类器
- (可能)某种类型的索引
- 根据需要重新分类对象
- 通过分类器部分自动划分“大”分区
- 对象差异(当前提交包含所有更改条目的完整副本)
- 日志文件扩展名(当前每个提交使用一个新文件以避免数据丢失)
文档
doc 目录包含一些文件格式文档和规划 Pippin 开发的各种笔记。
最初将票据存储在文件中。仍然使用几个“标签”;在适用的情况下,这些在票据中提及,可用于查找相关的代码片段。所有这些都可以通过 grep 找到。
egrep -IR "#00[0-9]{2}" doc/ src/
构建、运行、测试
Pippin 使用 Cargo。一些示例命令
cargo test
cargo build --release
cargo run --example pippincmd -- -h
cargo help run
cargo doc && open target/doc/pippin/index.html
生成的二进制文件位于 target
目录中。
许可证
Pippin 根据 Mozilla Public License,版本 2.0 许可。可以在 LICENSE-MPL2.txt 文件中找到此许可证副本或从 http://mozilla.org/MPL/2.0/ 获取。
贡献
除非您明确表示,否则根据MPL-2.0许可证定义的您有意提交供作品包含的贡献,应按照上述方式许可,不附加任何其他条款或条件。
依赖项
~9.5MB
~156K SLoC