#lsm-tree #persistence #embedded

已删除 rocksdbx

Rust 对 Facebook 的嵌入型数据库 RocksDB 的封装

1 个不稳定发布

0.19.0 2022年10月28日

#29 in #lsm-tree

Apache-2.0

19MB
401K SLoC

C++ 340K SLoC // 0.1% comments Java 37K SLoC // 0.3% comments Rust 8K SLoC // 0.1% comments Python 7.5K SLoC // 0.1% comments Shell 4K SLoC // 0.2% comments C 2.5K SLoC // 0.0% comments GNU Style Assembly 542 SLoC // 0.1% comments PowerShell 369 SLoC // 0.2% comments INI 323 SLoC // 0.1% comments Bitbake 167 SLoC // 0.2% comments

rust-rocksdb

RocksDB build crates.io documentation license Gitter chat rust 1.60.0 required

GitHub commits (since latest release)

需求

  • Clang 和 LLVM

贡献

欢迎反馈和拉取请求!如果您认为 RocksDB 的某个功能很重要,请通过创建一个 issue 来让我知道,我会优先处理。

使用方法

此绑定与特定版本的 RocksDB 静态链接。如果您想自己构建它,请确保您已克隆了 RocksDB 和压缩子模块。

git submodule update --init --recursive

压缩支持

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

[dependencies.rocksdb]
default-features = false
features = ["lz4"]

多线程 ColumnFamily 切换

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

依赖项

~0–4MB
~64K SLoC