Rocks DB
概要
Rocks DB は C++ で実装された key-value ストアの組み込み用ライブラリ。key 及び value は任意のバイナリデータが使用できる。メモリや極低レイテンシーな Flash ドライブのような物理ストレージと他コア CPU の実行環境に最適化されている。
Level DB のコードに HDFS の設計を取り入れている。API レベルで Level DB との後方互換性がある。
インストール
Ubuntu 18.04
Unix 系 OS ではソースからビルドする必要がある。以下は Docker で新規の ubuntu:18.04 コンテナを起動した状態から Python で RocksDB が利用できるようになるまでの一連のコマンド。
$ apt-get update
$ apt-get upgrade -y
$ apt-get install libgflags-dev libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev build-essential git -y
$ git clone https://github.com/facebook/rocksdb.git
$ cd rocksdb
$ make shared_lib
$ export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:`pwd`/include
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`pwd`
$ export LIBRARY_PATH=$LIBRARY_PATH:`pwd`
$ apt-get install python3 python3-pip python3-dev -y
$ pip3 install python-rocksdb
$ python3 -c "import rocksdb; db=rocksdb.DB('test.db',rocksdb.Options(create_if_missing=True)); db.put(b'a',b'b'); print(db.get(b'a'))"
b'b'
macOS
Mac OS X は homebrew でインストールすることができる (gcc 4.8 以上が必要)。
$ brew install gcc --llvm
Updating Homebrew...
==> Installing dependencies for gcc: gmp, isl, mpfr and libmpc
...
$ brew install rocksdb
==> Installing dependencies for rocksdb: gflags and lz4
==> Installing rocksdb dependency: gflags
...
$ rocksdb_ldb --help
ldb - RocksDB Tool
commands MUST specify --db=<full_path_to_db_directory> when necessary
...
Python の python-rocksdb
を使って利用する。
$ pip install python-rocksdb
$ python
Python 3.6.6 (default, Jan 23 2019, 15:03:25)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.44.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import rocksdb
>>> db = rocksdb.DB("test.db", rocksdb.Options(create_if_missing=True))
>>> db.put(b'key', b'value')
>>> print(db.get(b'key'))
b'value'
付属の CLI ツール rocksdb_ldb
を使用することもできる (ただし create_if_missing
オプションが存在しないので既存の DB しか使用できない?)。
$ rocksdb_ldb scan --db=test.db
key : value