#lsm-tree #persistence #embedded

sys ng-rocksdb

Rust封装Facebook的RocksDB嵌入式数据库,Nextgraph.org项目的分支

3个版本

0.21.0 2024年5月23日

#1511 in 数据库接口

Download history 235/week @ 2024-05-20 1/week @ 2024-05-27

67 每月下载量

Apache-2.0

1.5MB
30K SLoC

C 15K SLoC // 0.2% comments Rust 9K SLoC // 0.1% comments Visual Studio Project 4.5K SLoC Python 793 SLoC // 0.1% comments C++ 544 SLoC // 0.1% comments Visual Studio Solution 329 SLoC Shell 157 SLoC // 0.1% comments Bitbake 69 SLoC // 0.3% comments

ng-rocksdb

这是对https://github.com/rust-rocksdb/rust-rocksdb的分支,同时还包括https://github.com/facebook/rocksdb的分支,以满足NextGraph.org项目的需求。

需求

  • Clang和LLVM

https://rust-lang.github.io/rust-bindgen/requirements.html

  • 在使用此crate之前,您必须在此下载我们的rocksdb分支并将其内容解压到src/branch/master/librocksdb-sys/rocksdb

在OpenBSD上

pkg_add llvm
//choose the 17 version

在macOS上

port install clang

在Linux上

apt install llvm-dev libclang-dev clang

在windows上

从这里下载这里

贡献

欢迎反馈和pull请求!如果您认为RocksDB的某个特定功能很重要,请通过打开一个issue来告诉我,我会优先处理。

压缩支持

默认情况下,通过crate功能启用了对SnappyLZ4ZstdZlibBzip2压缩的支持。如果不需要所有这些压缩算法的支持,可以禁用默认功能并启用特定的压缩算法。例如,要仅启用LZ4压缩支持,请对您的Cargo.toml文件进行以下更改

多线程ColumnFamily交替

底层的RocksDB允许同时从多个线程创建和删除列族。但此crate默认不支持,以保持兼容性。如果您需要并发修改列族,请启用名为multi-threaded-cf的crate功能,这将使此绑定的数据结构默认使用RwLock。或者,您可以直接创建DBWithThreadMode<MultiThreaded>而无需启用crate功能。

依赖关系

~0.4–6MB
~113K SLoC