此檔案為leveldb的c++接口檔案,用c++的方式調用leveldb隻需要包含此檔案即可。
在此檔案中定義了leveldb對外的接口DB,其具體的實作由db/db_impl.h中的DBImpl類實作。
DB的定義如下:
class LEVELDB_EXPORT DB {
public:
//打開資料庫
static Status Open(const Options& options, //options為打開的方式
const std::string& name, //檔案名
DB** dbptr); //資料庫執行個體對象
DB() = default;//設定預設構造函數
DB(const DB&) = delete;//禁止拷貝構造
DB& operator=(const DB&) = delete;//禁止指派操作符
virtual ~DB();
//寫入鍵值對
virtual Status Put(const WriteOptions& options,
const Slice& key,
const Slice& value) = 0;
//删除鍵值對
virtual Status Delete(const WriteOptions& options, const Slice& key) = 0;
//批量寫入
virtual Status Write(const WriteOptions& options, WriteBatch* updates) = 0;
//通過鍵值讀取
virtual Status Get(const ReadOptions& options,
const Slice& key, std::string* value) = 0;
//此函數将傳回一個可以疊代周遊資料庫的句柄
virtual Iterator* NewIterator(const ReadOptions& options) = 0;
//傳回資料庫目前狀态的快照
virtual const Snapshot* GetSnapshot() = 0;
//釋放之前擷取的快照
virtual void ReleaseSnapshot(const Snapshot* snapshot) = 0;
//傳回相關屬性的狀态
//屬性名包括:
//"leveldb.num-files-at-level<N>"傳回level N的檔案數目
//"leveldb.stats"傳回内部操作的統計情況
//"leveldb.sstables"傳回sstables的情況
//"leveldb.approximate-memory-usage"傳回資料庫所使用的記憶體的近似位元組數
virtual bool GetProperty(const Slice& property, std::string* value) = 0;
//傳回檔案的最大使用空間
virtual void GetApproximateSizes(const Range* range, int n,
uint64_t* sizes) = 0;
//調用此接口會重新壓縮相應的資料
virtual void CompactRange(const Slice* begin, const Slice* end) = 0;
};
//删除資料庫
LEVELDB_EXPORT Status DestroyDB(const std::string& name,
const Options& options);
//修複資料庫
LEVELDB_EXPORT Status RepairDB(const std::string& dbname,
const Options& options);