LevelDB C++教程: 如何開啟和關閉資料庫

劉近光發表於2018-12-13

簡介

LevelDB提供持久鍵值儲存功能。鍵和值是任意位元組陣列。根據使用者指定的比較函式,在鍵值儲存區內對鍵進行排序。
本文將介紹LevelDB的開啟和關閉資料的基本操作,為後面的鍵值儲存操作做準備。

程式碼示例

下面的程式碼功能實現了完整的開啟和關閉資料庫的功能,下面會對程式碼來進行逐一講解:

#include <iostream>
#include <cassert>
#include <leveldb/db.h>

int main(int argc, const char *argv[])
{
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    
    leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
    assert(status.ok());

    std::cout << "Hello, world with leveldb in it!\n";

    delete db;

    return 0;
}

開啟資料庫

LevelDB資料庫具有一個與檔案系統目錄對應的名稱。資料庫的所有內容都儲存在此目錄中。下列的程式碼中展示如何開啟一個LevelDB資料庫,必要時建立它:

#include <cassert>
#include "leveldb/db.h"

leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;

leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());

如果要在資料庫已存在時引發錯誤(raise an error),請在leveldb :: DB :: Open呼叫之前新增以下行:

options.error_if_exists = true;

關閉資料庫

在使用完資料庫之後,需要刪除資料庫物件:

... open the db as described above ...
... do something with db ...
delete db;

Status操作結果

您可能已經注意到上面的leveldb :: Status型別。 LevelDB中的大多數函式都會返回此型別的值您可以檢查這樣的結果是否正常,還列印相關的錯誤訊息:

leveldb::Status s = ...;
if (!s.ok()) cerr << s.ToString() << endl;

編譯執行

在Linux下,通過下面的命令可以對程式進行編譯連結:

gcc -o test test.cpp  -L/usr/local/lib/ -lleveldb -lstdc++

編譯連結後會生成test可執行檔案,執行時能夠輸出上面的"Hello World"資訊。

相關文章