SSDB 数据库如何换用 rocksdb 引擎?
SSDB 数据库使用的是 Google 的 leveldb 作为存储引擎, Facebook 基于 leveldb 改造的 rocksdb 据说在某些场景中更好, 所以, 有不少朋友考虑把 SSDB 中的 leveldb 引擎换成 rocksdb. 这是可以的, 而且改动比较小.
1. 首先, 你需要修改 build.sh 文件, 修改
LEVELDB_PATH="$BASE_DIR/deps/leveldb-1.14.0"
指向 rocksdb 的目录.
2. 然后修改 src/include.h 文件, 增加
#define leveldb rocksdb
3. 注释掉 Makefile 文件中的这一行
# chmod u+x "${LEVELDB_PATH}/build_detect_platform"
然后就可以编译了. 不过, 你需要注意的是, 虽然 rocksdb 是基于 leveldb 改造的, 但两者的数据文件格式不兼容, 不知道 Facebook 为什么要做这样的决定, 这确实不好. 这也是 SSDB 为什么不同时支持两个引擎的原因.