成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在Linux下編譯Google LevelDB數據庫

數據庫 其他數據庫
Leveldb是一個google實現的非常高效的kv數據庫,可按照字符串鍵值順序映射進行存貯。目前的版本1.2能夠支持billion級別的數據量了。 在這個數量級別下還有著非常高的性能。

1:簡介

Leveldb是一個google實現的非常高效的kv數據庫,可按照字符串鍵值順序映射進行存貯。目前的版本1.2能夠支持billion級別的數據量了。 在這個數量級別下還有著非常高的性能。

Leveldb是一個C++庫,可用于很多情況。比如用于一個網頁瀏覽器存儲最近存取網頁的緩存,或用于操作系統存儲安裝包列表,或用于應用存儲用戶的設置參數。其實新版本的Chrome瀏覽器里部署的IndexedDB HTML5 API就是基于LevelDB打造的。Google自己的數據庫Bigtable掌管著數百萬數據表也是用LevelDB的。

今天在Linux(Fedra14)下編譯了一下,感覺不錯。中間遇到了很多問題,記錄下來。作為學習之用。

在這里我想發泄一下郁悶之情。我對學過Linux下的編程,但是不是很深入,大部分時間時自己摸索的,周圍沒有可以交流的人,再說周圍的大部分在搞javaC#、.net沒人在研究c\c++尤其是Linux下的。有些研究生畢業了還不知道什么是ubuntu。我以一直喜歡技術特別是Linux的,不管怎樣算是一種追求吧。自己摸索之路是很坎坷的,深知一個人探索的困難,所以遇到問題會自己寫下來發成博客,對自己是一種學習,也希望別的有共同興趣的人有所幫助,如果能讓沒有一點基礎的人們能看懂,并且根據示例自己操作成功,也算是一件很有成就感的事。

2:編譯源代碼

我用的版本為Release 1.2 2011-05-16,這個需要用SVN下載,過程就不多說了。

2.1 解壓縮文件,我的路徑是/home/lyc/leveldb/Leveldb

2.2 進入解壓縮后的路徑,cd /home/lyc/leveldb/Leveldb

2.3 編譯,這個很簡單一個命令makefile就行了,注意這個編譯需要g++的支持

2.4 編譯后在/home/lyc/leveldb/Leveldb路徑下會出現一個庫文件libleveldb.a,這個可以用在自己的項目中

3leveldb性能測試

默認的編譯makefile命令是不會生成測試程序的,如果要生成這些輔助的程序,可以用命令makefile test

結果在/home/lyc/leveldb/Leveldb路徑下會產生可執行文件db_bencharena_testdb_test等測試程序。這個就不解少了,我的目標的是在自己的程序中使用leveldb,所以重點在使用庫文件libleveldb.a上。

4leveldb頭文件準備

頭文件的問題花了很多時間來解決,其實很簡單,到/home/lyc/leveldb/Leveldb路徑下(這個具體要根據自己的文件路徑),用命令 cp -r include/leveldb   /usr/local/include。把./include/leveldb文件夾的內容都拷到/usr/local/include路徑下。

注意要切還到root用戶,要不沒有執行的權限。

5:示例程序

libleveldb.adb.h拷到本程序的同一路徑下。

編譯命令為: g++ -o sa Main.cpp libleveldb.a -lpthread

執行:

[lyc@Fedora test]$ ./sa

結果:

Open db OK

liyc7711@gamil.com

源碼Main.cpp:

  1. #include <assert.h> 
  2. #include <iostream> 
  3. #include "db.h" 
  4.  
  5. using namespace std; 
  6.  
  7. int main(int argc,char * argv[]) 
  8.     leveldb::DB* db; 
  9.     leveldb::Options options; 
  10.     options.create_if_missing = true
  11.     std::string dbpath = "testdb"
  12.     leveldb::Status status = leveldb::DB::Open(options, dbpath, &db); 
  13.     assert(status.ok()); 
  14.     std::string key1 = "lyc"
  15.     std::string key2 = "liyc7711@gamil.com"
  16.     cout<<"Open db OK"<<std::endl; 
  17.      
  18.     std::string value; 
  19.     leveldb::Status s ; 
  20.     s = db->Put(leveldb::WriteOptions(), key1, key2);/*key1和key2作為一對key-value對插入*/ 
  21.     s = db->Get(leveldb::ReadOptions(), key1, &value);/*根據key返回對應的value值*/ 
  22.      
  23.     cout<<value<<std::endl; 
  24.     delete db;/*刪除數據庫*/ 
  25.  
  26.     return 0; 

6:注意事項

6.1 編譯中加上庫文件的路徑(libleveldb.a)和線程庫標志(-lpthread),執行后在當前文件產生一個文件夾testdb保存了插入的數據。

6.2 leveldb值對,并且數據量遠大于內存并且需要永久保存的情況下。很適合大規模的語言模型文件存貯。

6.3 插入的數據為兩個字符串對一個為key,另外一個為value,查詢時可以根據key取得value的值,相反不可以。

【編輯推薦】

  1. LevelDB性能分析和表現
  2. LevelDB—一個超高性能的K/V數據庫
  3. 淺談LevelDB在ubuntu 11.04下編譯失敗的問題
責任編輯:艾婧 來源: 李亞超的專欄
相關推薦

2011-08-09 15:47:46

LeveldbLinuxC++

2017-08-07 16:41:39

LinuxOpenCV

2022-11-24 12:00:20

UbuntuLinux

2010-08-12 13:32:08

DB2數據庫備份

2010-04-19 13:15:00

Oracle數據庫

2009-08-12 18:16:37

Oracle數據庫自動UNIX

2010-05-06 10:52:36

Oracle9i

2017-12-11 10:24:29

LinuxGoogleChrome 63

2011-10-08 13:22:43

Google數據庫云計算

2014-12-23 09:37:09

Linuxrsync

2016-08-16 08:26:19

Linuxsignalsigaction

2017-01-05 12:21:00

LinuxPyCharm安裝

2019-08-19 14:06:27

MySQLDocker數據庫

2011-07-26 14:34:28

openSUSEpostgresql

2009-06-01 09:57:43

netbeans連接數netbeans數據庫netbeans連接m

2009-07-07 14:56:33

JSP連接MySQL

2011-04-07 15:02:02

LinuxMySQL數據庫

2011-08-17 17:29:32

Windows編譯MySQL

2023-09-05 08:40:57

刪除數據庫Oracle

2011-06-09 09:32:13

LevelDB
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色网站在线 | 国产精品免费一区二区 | 欧美日在线 | 成人欧美一区二区三区 | 一级电影免费看 | 国产综合av| 日韩免费网站 | 日韩欧美专区 | 国产在线视频在线观看 | 高清18麻豆 | 久久久www成人免费无遮挡大片 | 欧美一级黄色片 | 99色在线视频 | 欧美a级成人淫片免费看 | 在线观看免费av网 | 国产成人精品a视频一区www | 亚洲品质自拍视频 | 精品不卡| 在线观看亚洲 | 一区二区三区中文字幕 | 日韩精品专区在线影院重磅 | 999热精品视频 | 精品久久香蕉国产线看观看亚洲 | 亚洲精品9999久久久久 | 国产真实乱对白精彩久久小说 | 国产资源在线观看 | 96av麻豆蜜桃一区二区 | 国产一区二区三区免费视频 | 久久久久久久夜 | 99精品免费久久久久久久久日本 | 免费成人高清在线视频 | 97视频在线观看网站 | 91在线中文字幕 | 欧美成人在线免费 | 久久激情视频 | 久久99精品久久久久子伦 | 亚洲精品在线免费 | 日韩成人| av一区二区三区四区 | 日韩福利在线观看 | 国产精品成人一区二区三区吃奶 |