A Rust wrapper for Facebook's RocksDB embedded key-value storage engine.
rust-rocksdb is a Rust wrapper library for Facebook's RocksDB, a persistent key-value store optimized for fast storage. It provides safe, idiomatic Rust bindings to RocksDB's C++ API, allowing Rust applications to leverage RocksDB's high performance, reliability, and feature set while maintaining Rust's memory safety guarantees.
Rust developers who need embedded database storage for applications requiring high write throughput, low-latency reads, or advanced features like column families and transactions.
Developers choose rust-rocksdb because it provides the full power of RocksDB with Rust's safety guarantees, offers flexible configuration through Cargo features, and maintains close compatibility with upstream RocksDB while providing an idiomatic Rust API.
rust wrapper for rocksdb
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Exposes nearly all RocksDB functionality, including column families, transactions, and backups, providing full access to advanced features through an idiomatic Rust interface.
Supports Snappy, LZ4, Zstd, Zlib, and Bzip2 via optional crate features, allowing developers to optimize storage and reduce binary size based on specific needs.
Offers a multi-threaded-cf feature for safe concurrent creation and dropping of column families across threads, addressing RocksDB's native limitations in Rust.
Provides features for static and dynamic linking, with specific support for Windows runtime libraries and Alpine Linux compatibility, enhancing cross-platform deployment.
Requires Clang and LLVM, and building from source involves managing submodules, which can be a barrier for teams with limited infrastructure or in constrained environments.
Multiple crate features for compression and linking, including mutually exclusive options like bindgen-static and bindgen-runtime, add complexity and risk of misconfiguration.
The Rust wrapper layer might introduce minimal overhead compared to direct C++ usage, though this is often negligible for most applications but could matter in latency-critical scenarios.