RocksDB使用入门 Mac

RocksDB使用入门 Mac

从事数据库底层研究领域时,经常听到RocksDB这个数据库名。
我想大多数人和我一样,知道这个名字,却迟迟没有动手去了解它。
这篇文章就简单介绍怎么在MacOS下,使用RocksDB,并对一些基本知识进行简要介绍。

1. RocksDB简要介绍

RocksDB是一个可嵌入的、持久型的Key-Value存储。

它可不像MySQL,PostgreSQL这样数据库分客户端与服务器端。实际上,可以把它当作一个第三方库,在自己的代码中进行引用,调用相应的接口就可以使用,比如使用C/C++语言,直接在源代码中include相应的头文件就可以。这也就是嵌入式的含义。

与嵌入式数据库SQLite的使用比较类似。

目前: RocksDB使用LSM存储引擎,纯C++编写。Java版本RocksJava正在开发中。

在使用C++版本的库时,最好在C++代码下进行使用,C语言下不知道可不可以使用,没有试过。

更多有关RocksDB的介绍参考:

  • 英文官网: https://rocksdb.org/
  • 中文官网: https://rocksdb.org.cn/

关于RocksDB的详细使用介绍:

  • Github Wiki: https://github.com/facebook/rocksdb/wiki
  • 中文版Wiki: https://rocksdb.org.cn/doc/Home.html

2. RocksDB 安装

Mac上安装RocksDB非常简单,不用单独安装其他任何依赖。直接使用brew工具安装即可。

brew install rocksdb

可以运行一下命令来查看安装信息。

brew info rocksdb

安装结果如下。

zzh@zzhdeMBP ~ % brew info rocksdb
rocksdb: stable 6.7.3 (bottled)
Embeddable, persistent key-value store for fast storage
https://rocksdb.org/
/usr/local/Cellar/rocksdb/6.7.3 (106 files, 65.2MB) *
  Poured from bottle on 2020-06-20 at 21:37:50
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/rocksdb.rb
==> Dependencies
Required: gflags ✔, lz4 ✔, snappy ✔, zstd ✔
==> Analytics
install: 481 (30 days), 3,107 (90 days), 17,874 (365 days)
install-on-request: 379 (30 days), 1,581 (90 days), 7,980 (365 days)
build-error: 0 (30 days)
zzh@zzhdeMBP ~ % 

其他操作系统上的安装可以参考:

  • 官方安装教程:https://github.com/facebook/rocksdb/blob/master/INSTALL.md
  • CentOS 7上安装:https://www.jianshu.com/p/f233528c8303

3. 使用示例

更多内容可以参考前面所说的中文版Wiki的基本操作章节:
https://rocksdb.org.cn/doc/Basic-Operations.html

代码目录:

  • 使用入门
    • main.cpp
    • Makefile
  1. main.cpp文件内容:
#include 
#include 
#include "rocksdb/db.h"

using namespace std;

int main() {
    rocksdb::DB* db;
    rocksdb::Options options;
    options.create_if_missing = true;
    rocksdb::Status status = rocksdb::DB::Open(options, "/tmp/testdb", &db);
    assert(status.ok());
    cout << "Open rocksdb success." << endl;

    string key1 = "1";
    string value1 = "aaaaa";
    status = db->Put(rocksdb::WriteOptions(), key1, value1);
    assert(status.ok());
    printf("Put[%s,%s] success.\n", key1.c_str(), value1.c_str());
    
    string value;
    status = db->Get(rocksdb::ReadOptions(), key1, &value);
    assert(status.ok());
    printf("Put key[%s] = %s\n", key1.c_str(), value.c_str());

    status = db->Delete(rocksdb::WriteOptions(), key1);
    assert(status.ok());
    printf("Delete key[%s] success.\n", key1.c_str());

    delete db;

    return 0;
}
  1. Makefile文件内容:
CXX=g++ -std=c++11
CXXFLAGS=-lrocksdb  # 注意添加链接库

all: main

main: main.cpp
	$(CXX) $(CXXFLAGS) -o $@ $< 

run: main
	./main

clean:
	rm -f main *.o
  1. 运行结果:
zzh@zzhdeMBP 使用入门 % make run
g++ -std=c++11 -lrocksdb   -o main main.cpp 
./main
Open rocksdb success.
Put[1,aaaaa] success.
Put key[1] = aaaaa
Delete key[1] success.
zzh@zzhdeMBP 使用入门 % 

编译时需要注意两点:

  • 支持C11, 添加选项-std=c++11
  • 添加链接库: -lrocksdb

你可能感兴趣的:(Mac,RocksDB,第三方库)