當前位置:成語大全網 - 書法字典 - LevelDB數據庫在磁盤上由哪些文件組成?

LevelDB數據庫在磁盤上由哪些文件組成?

下面的示例演示了如何插入、獲取和刪除記錄。

LevelDB簡介

壹。LevelDB簡介

LevelDB是Google開源的持久化KV獨立數據庫,具有較高的隨機寫入和順序讀取/寫入性能,但隨機讀取性能非常壹般,也就是說LevelDB非常適合查詢很少但寫入很多的場景。LevelDB采用LSM(日誌結構化合並)策略。lsm_tree延遲並批量處理索引更改,並以類似於合並排序的方式高效地將更新遷移到磁盤,從而減少索引插入開銷。關於LSM,本文稍後也將簡要提及。

根據LevelDB官方網站的描述,LevelDB的特點和局限性如下:

特點:

1,key和值是任意長度的字節數組;

2.默認情況下,條目(即K-V記錄)按照key的字典順序存儲。當然,開發人員也可以重載這個排序函數。

3.提供的基本操作接口:Put()、Delete()、Get()、batch();

4.支持原子操作批量操作;

5.您可以創建數據全景的快照,並允許您在快照中查找數據;

6.您可以通過正向(或反向)叠代器遍歷數據(叠代器將隱式創建快照);

7.自動使用Snappy壓縮數據;

8.便攜性;

限制:

1,非關系數據模型(Nosql),不支持sql語句或索引;

2.壹次只允許壹個進程訪問特定的數據庫;

3.沒有內置的C/S架構,但開發人員可以使用LevelDB庫來打包服務器。

LevelDB本身只是壹個lib庫,它可以在源目錄make中編譯,然後包含leveldb/include/db.h頭文件可以直接包含在我們的應用程序中。頭文件有幾個基本的數據庫操作接口,下面是壹個測試示例:

# include & ltiostream & gt

# include & lt字符串& gt

# include & ltassert.h & gt

#包含“leveldb/db.h“

使用命名空間std

int main(void)

{

level DB::DB * DB;

leveldb::Options選項;

options . create _ if _ missing = true;

//打開

level DB::Status Status = level DB::DB::Open(options“/tmp/testdb“,& ampdb);

assert(status . ok());

string key =“name“;

字符串值=“陳其“;

//寫入

status = db-& gt;put(level db::write options(),key,value);

assert(status . ok());

//讀取

status = db-& gt;get(level db::read options()、key & amp;值);

assert(status . ok());

cout & lt& lt價值& lt& ltendl

//刪除

status = db-& gt;delete(level db::write options(),key);

assert(status . ok());

status = db-& gt;get(level db::read options()、key & amp;值);

如果(!status.ok())

cerr & lt& ltkey & lt& lt“““& lt& lt狀態。ToString()& lt;& ltendl

}否則{

cout & lt& ltkey & lt& lt“= = =“& lt;& lt價值& lt& ltendl

}

//關閉

刪除數據庫;

返回0;