自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在Linux下編譯Google LevelDB數(shù)據(jù)庫(kù)

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

1:簡(jiǎn)介

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

Leveldb是一個(gè)C++庫(kù),可用于很多情況。比如用于一個(gè)網(wǎng)頁(yè)瀏覽器存儲(chǔ)最近存取網(wǎng)頁(yè)的緩存,或用于操作系統(tǒng)存儲(chǔ)安裝包列表,或用于應(yīng)用存儲(chǔ)用戶的設(shè)置參數(shù)。其實(shí)新版本的Chrome瀏覽器里部署的IndexedDB HTML5 API就是基于LevelDB打造的。Google自己的數(shù)據(jù)庫(kù)Bigtable掌管著數(shù)百萬(wàn)數(shù)據(jù)表也是用LevelDB的。

今天在Linux(Fedra14)下編譯了一下,感覺(jué)不錯(cuò)。中間遇到了很多問(wèn)題,記錄下來(lái)。作為學(xué)習(xí)之用。

在這里我想發(fā)泄一下郁悶之情。我對(duì)學(xué)過(guò)Linux下的編程,但是不是很深入,大部分時(shí)間時(shí)自己摸索的,周圍沒(méi)有可以交流的人,再說(shuō)周圍的大部分在搞java、C#、.net沒(méi)人在研究c\c++尤其是Linux下的。有些研究生畢業(yè)了還不知道什么是ubuntu。我以一直喜歡技術(shù)特別是Linux的,不管怎樣算是一種追求吧。自己摸索之路是很坎坷的,深知一個(gè)人探索的困難,所以遇到問(wèn)題會(huì)自己寫(xiě)下來(lái)發(fā)成博客,對(duì)自己是一種學(xué)習(xí),也希望別的有共同興趣的人有所幫助,如果能讓沒(méi)有一點(diǎn)基礎(chǔ)的人們能看懂,并且根據(jù)示例自己操作成功,也算是一件很有成就感的事。

2:編譯源代碼

我用的版本為Release 1.2 2011-05-16,這個(gè)需要用SVN下載,過(guò)程就不多說(shuō)了。

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

2.2 進(jìn)入解壓縮后的路徑,cd /home/lyc/leveldb/Leveldb

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

2.4 編譯后在/home/lyc/leveldb/Leveldb路徑下會(huì)出現(xiàn)一個(gè)庫(kù)文件libleveldb.a,這個(gè)可以用在自己的項(xiàng)目中

3leveldb性能測(cè)試

默認(rèn)的編譯makefile命令是不會(huì)生成測(cè)試程序的,如果要生成這些輔助的程序,可以用命令makefile test

結(jié)果在/home/lyc/leveldb/Leveldb路徑下會(huì)產(chǎn)生可執(zhí)行文件db_bench,arena_testdb_test等測(cè)試程序。這個(gè)就不解少了,我的目標(biāo)的是在自己的程序中使用leveldb,所以重點(diǎn)在使用庫(kù)文件libleveldb.a上。

4leveldb頭文件準(zhǔn)備

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

注意要切還到root用戶,要不沒(méi)有執(zhí)行的權(quán)限。

5:示例程序

libleveldb.a、db.h拷到本程序的同一路徑下。

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

執(zhí)行:

[lyc@Fedora test]$ ./sa

結(jié)果:

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作為一對(duì)key-value對(duì)插入*/ 
  21.     s = db->Get(leveldb::ReadOptions(), key1, &value);/*根據(jù)key返回對(duì)應(yīng)的value值*/ 
  22.      
  23.     cout<<value<<std::endl; 
  24.     delete db;/*刪除數(shù)據(jù)庫(kù)*/ 
  25.  
  26.     return 0; 

6:注意事項(xiàng)

6.1 編譯中加上庫(kù)文件的路徑(libleveldb.a)和線程庫(kù)標(biāo)志(-lpthread),執(zhí)行后在當(dāng)前文件產(chǎn)生一個(gè)文件夾testdb保存了插入的數(shù)據(jù)。

6.2 leveldb值對(duì),并且數(shù)據(jù)量遠(yuǎn)大于內(nèi)存并且需要永久保存的情況下。很適合大規(guī)模的語(yǔ)言模型文件存貯。

6.3 插入的數(shù)據(jù)為兩個(gè)字符串對(duì)一個(gè)為key,另外一個(gè)為value,查詢時(shí)可以根據(jù)key取得value的值,相反不可以。

【編輯推薦】

  1. LevelDB性能分析和表現(xiàn)
  2. LevelDB—一個(gè)超高性能的K/V數(shù)據(jù)庫(kù)
  3. 淺談LevelDB在ubuntu 11.04下編譯失敗的問(wèn)題
責(zé)任編輯:艾婧 來(lái)源: 李亞超的專欄
相關(guān)推薦

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數(shù)據(jù)庫(kù)備份

2009-08-12 18:16:37

Oracle數(shù)據(jù)庫(kù)自動(dòng)UNIX

2010-04-19 13:15:00

Oracle數(shù)據(jù)庫(kù)

2010-05-06 10:52:36

Oracle9i

2017-12-11 10:24:29

LinuxGoogleChrome 63

2011-10-08 13:22:43

Google數(shù)據(jù)庫(kù)云計(jì)算

2011-08-17 17:29:32

Windows編譯MySQL

2011-06-09 09:32:13

LevelDB

2011-04-07 15:02:02

LinuxMySQL數(shù)據(jù)庫(kù)

2009-01-19 09:14:31

.NETMySQLMySql驅(qū)動(dòng)包

2011-03-03 10:00:14

ProFTPD建立MySQL

2021-12-03 23:21:45

數(shù)據(jù)庫(kù)MySQLKubernetes

2024-07-30 08:00:00

Kubernetes數(shù)據(jù)庫(kù)

2019-12-17 08:39:21

Linuxwindowsoracle

2011-07-26 14:34:28

openSUSEpostgresql

2009-06-01 09:57:43

netbeans連接數(shù)netbeans數(shù)據(jù)庫(kù)netbeans連接m

2009-07-07 14:56:33

JSP連接MySQL
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)