Nim wrapper for RocksDB, a persistent key-value store for Flash and RAM Storage.
Go to file
web3-developer cf1267e845
Add support for optimistic transaction db, write batch with index, keyMayExist and empty keys. (#63)
* Add support for optimistic transaction db.

* Add keyMayExist to RocksDbRef.

* Add support for write batch with index.

* Allow empty keys to be used in API.
2024-07-08 22:18:30 +08:00
.github/workflows Build dynamic libraries for all platforms using vcpkg. (#61) 2024-07-03 11:34:40 +08:00
examples Format using nph (#54) 2024-06-26 23:00:10 +08:00
rocksdb Add support for optimistic transaction db, write batch with index, keyMayExist and empty keys. (#63) 2024-07-08 22:18:30 +08:00
scripts Build dynamic libraries for all platforms using vcpkg. (#61) 2024-07-03 11:34:40 +08:00
tests Add support for optimistic transaction db, write batch with index, keyMayExist and empty keys. (#63) 2024-07-08 22:18:30 +08:00
triplets Build dynamic libraries for all platforms using vcpkg. (#61) 2024-07-03 11:34:40 +08:00
vendor Build windows DLLs from vendor directory (#45) 2024-06-12 21:16:06 +08:00
.gitignore Fix broken CI (#35) 2024-02-13 20:59:41 +07:00
.gitmodules Build windows DLLs from vendor directory (#45) 2024-06-12 21:16:06 +08:00
LICENSE-APACHEv2 fix license files 2018-11-14 12:57:17 -06:00
LICENSE-MIT fix license files 2018-11-14 12:57:17 -06:00
README.md Implement missing getter and setters for option types. (#62) 2024-07-03 23:46:42 +08:00
config.nims Format using nph (#54) 2024-06-26 23:00:10 +08:00
nim.cfg Support for static linking RocksDb. (#40) 2024-03-27 14:18:21 +08:00
rocksdb.nim Add support for optimistic transaction db, write batch with index, keyMayExist and empty keys. (#63) 2024-07-08 22:18:30 +08:00
rocksdb.nimble Build dynamic libraries for all platforms using vcpkg. (#61) 2024-07-03 11:34:40 +08:00

README.md

Nim-RocksDB

Build Status (Travis) Windows build status (Appveyor) License: Apache License: MIT Stability: experimental

A Nim wrapper for Facebook's RocksDB, a persistent key-value store for Flash and RAM Storage.

Current status

Nim-RocksDB provides a wrapper for the low-level functions in the librocksdb c library.

Installation

Nim-RocksDB requires Nim and the Nimble package manager. For Windows you will need Visual Studio 2015 Update 3 or greater with the English language pack.

To get started run:

nimble install

This will download and install the RocksDB dynamic libraries for your platform and copy them into the build/ directory of the project. When including this library in your application you may want to copy these libraries into another location or set the LD_LIBRARY_PATH environment variable (DYLD_LIBRARY_PATH on MacOS, PATH on Windows) to include the build/ directory so that your application can find them on startup.

Alternatively you can use the rocksdb_static_linking flag to statically link the library into your application.

Static linking

To build the RocksDB static libraries run:

./scripts/build_static_deps.sh

To statically link RocksDB, you would do something like:

nim c -d:rocksdb_static_linking --threads:on your_program.nim

See the config.nims file which contains the static linking configuration which is switched on with the rocksdb_static_linking flag. Note that static linking is currently not supported on windows.

Usage

See simple_example

Contribution

Any contribution intentionally submitted for inclusion in the work by you shall be dual licensed as above, without any additional terms or conditions.

License

Wrapper License

This repository is licensed and distributed under either of

or

at your option. This file may not be copied, modified, or distributed except according to those terms.

Dependency License

RocksDB is developed and maintained by Facebook Database Engineering Team. It is built on earlier work on LevelDB by Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com)

RocksDB is dual-licensed under both the GPLv2 and Apache License, Version 2.0, (LICENSE-APACHEv2 or http://www.apache.org/licenses/LICENSE-2.0). You may select, at your option, one of the above-listed licenses.