熱線電話:13121318867

登錄
首頁精彩閱讀levelDB的簡單使用_數據分析_大數據
levelDB的簡單使用_數據分析_大數據
2014-09-20
收藏

levelDB的簡單使用_數據分析_大數據

一、簡介
        LevelDB是google開源的一個key-value存儲引擎庫,從版本1.2開始就能夠支持billion級別的數據量了。LevelDB是單進程的服務,性能非常之高,在一臺4個Q6600的CPU機器上,每秒鐘寫數據超過40w,而隨機讀的性能每秒鐘超過10w。LevelDB采用日志式的寫方式來提高寫性能,但是犧牲了部分讀性能。為了彌補犧牲了的讀性能,一些人提議使用SSD作為存儲介質。

二、編譯
        LevelDB是一個C++庫,而非Server,編譯需要g++的支持,這里以1.4為例說明之。
        源碼可以直接從這里下載,也可以用git clone源碼:
        #git clone 
         如果上面操作都無法獲取源碼,也可以點擊這里下載源碼。
        #cd leveldb && make all
         此時在,當前目錄(levedb)下會產生libleveldb.a和libleveldb.so,這樣就可以使用了。

三、實例
        一個LevelDB數據庫需要有一個對應的文件系統目錄名字,該數據庫的所有內容都存儲在這個目錄下。
        LevelDB的使用很簡單,一般分三步走:
        (1)打開一個數據庫實例。
        (2)對這個數據庫實例進行插入,修改和查詢操作。
        (3)最后在使用完成之后,關閉該數據庫。
        #cd ../ && mkdir test && cd test && vi main.cpp
        具體實例如下:       
         #include
         #include
         #include
         #include

         int main(int argc, char** argv)
         {
             leveldb::DB* db;
             leveldb::Options options;
             // 如果打開已存在數據庫的時候,需要拋出錯誤,將以下代碼插在leveldb::DB::Open方法前面
            options.create_if_missing = true;
             // 打開一個數據庫實例
            leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
             assert(status.ok());
             // LevelDB提供了Put、Get和Delete三個方法對數據庫進行添加、查詢和刪除
            std::string key = "key";
             std::string value = "value";
             // 添加key=value
             status = db->Put(leveldb::WriteOptions(), key, value);
             assert(status.ok());
             // 根據key查詢value
             status = db->Get(leveldb::ReadOptions(), key, &value);
             assert(status.ok());
             std::cout<              // 修改操作(原生沒有提供)由添加和刪除合起來實現
            std::string key2 = "key2";
             // 添加key2=value              
             status = db->Put(leveldb::WriteOptions(),key2,value);
             assert(status.ok());
             // 刪除key
             status = db->Delete(leveldb::WriteOptions(), key);
             // 查詢key2
             assert(status.ok());
             status = db->Get(leveldb::ReadOptions(), key2, &value);
             assert(status.ok());
             std::cout<              // 查詢key
             status = db->Get(leveldb::ReadOptions(), key, &value);
             if (!status.ok())
             {
                std::cerr<              }   
             else
             {
                 std::cout<             }
            // 在對數據庫進行了一系列的操作之后,需要對數據庫進行關閉,該操作比較簡單即刪除該對象即可 
             delete db;
             return 0;
         }
        #g++ -o main main.cpp ../leveldb/libleveldb.a -lpthread -I../leveldb/include
        實例編譯完成后,如下來執行即可看到結果:
        #./main
         value
         key2==value
         key: NotFound:

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢