LevelDB使用入門
1,levelDBソースをダウンロード
git clone https://github.com/google/leveldb.git
2,コンパイルLevelDB
cd leveldb & make all
コンパイルが完了すると、現在のディレクトリに2つのディレクトリが追加されます:out-sharedとout-static
out-staticディレクトリの下に必要なlibleveveldbがあります.a
3、現在のディレクトリに新しいフォルダtestを作成する
touch test; cd test
4,testディレクトリにテストコードtestを新規作成する.cpp
5,コンパイル前の準備
これをa現在のディレクトリへコピー
cp ../out-static/libleveldb.a ./
レベルdb/includeディレクトリをPATHに追加:
cd ..; export PATH=$PATH:$(pwd)/include; cd test
6,コンパイル運転
コンパイル:
g++ -o test test.cpp libleveldb.a -lpthread -I../include
実行:
これまでleveldbは基本的に使用できました.
9,実行完了.testの後、/tmp/testdbの下にleveldb関連ファイルが生成されます.
8,LevelDB公式サイトの説明によると、LevelDBの特徴と制限は以下の通りである:特徴:
1、keyとvalueはいずれも任意の長さのバイト配列である.
2、entry(すなわちK-Vレコード)のデフォルトはkeyの辞書順に格納され、もちろん開発者もこのソート関数を再ロードすることができる.
3、提供する基本操作インタフェース:Put()、Delete()、Get()、Batch()
4、一括操作を原子操作で行うことをサポートする;
5、データパノラマのsnapshot(スナップショット)を作成し、スナップショットでデータを検索することを許可する.
6、前方(または後方)反復器でデータを遍歴することができる(反復器が隠しているsnapshotを作成する).
7、Snappyを使用してデータを自動的に圧縮する;
8、移植性;
制限:
1、非関係型データモデル(NoSQL)、sql文をサポートしない、インデックスもサポートしない;
2、一度に1つのプロセスだけが1つの特定のデータベースにアクセスすることを許可する.
3、内蔵のC/Sアーキテクチャはないが、開発者はLevelDBライブラリを使って自分で1つのserverをカプセル化することができる.
git clone https://github.com/google/leveldb.git
2,コンパイルLevelDB
cd leveldb & make all
コンパイルが完了すると、現在のディレクトリに2つのディレクトリが追加されます:out-sharedとout-static
out-staticディレクトリの下に必要なlibleveveldbがあります.a
3、現在のディレクトリに新しいフォルダtestを作成する
touch test; cd test
4,testディレクトリにテストコードtestを新規作成する.cpp
#include
#include
#include
#include "leveldb/db.h"
int main(){
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db);
assert(status.ok());
std::string k1 = "name";
std::string v1 = "jim";
status = db->Put(leveldb::WriteOptions(), k1, v1);
assert(status.ok());
status = db->Get(leveldb::ReadOptions(), k1, &v1);
assert(status.ok());
std::cout<Put(leveldb::WriteOptions(), k2, v2);
assert(status.ok());
status = db->Get(leveldb::ReadOptions(), k2, &v2);
assert(status.ok());
std::cout<Delete(leveldb::WriteOptions(), k2);
assert(status.ok());
std::cout<Get(leveldb::ReadOptions(),k2, &v2);
if(!status.ok())
std::cerr<
5,コンパイル前の準備
これをa現在のディレクトリへコピー
cp ../out-static/libleveldb.a ./
レベルdb/includeディレクトリをPATHに追加:
cd ..; export PATH=$PATH:$(pwd)/include; cd test
6,コンパイル運転
コンパイル:
g++ -o test test.cpp libleveldb.a -lpthread -I../include
実行:
➜ test git:(master) ✗ ./test
k1:name; v1:jim
k2:age; v2:20
Delete k2..
k2:age; NotFound:
これまでleveldbは基本的に使用できました.
9,実行完了.testの後、/tmp/testdbの下にleveldb関連ファイルが生成されます.
➜ test git:(master) ✗ ls -alh /tmp/testdb
total 56
drwxr-xr-x 10 root wheel 340B 10 3 12:51 .
drwxrwxrwt 14 root wheel 476B 10 3 12:31 ..
-rw-r--r-- 1 root wheel 148B 10 3 12:14 000005.ldb
-rw-r--r-- 1 root wheel 148B 10 3 12:51 000008.ldb
-rw-r--r-- 1 root wheel 80B 10 3 12:51 000009.log
-rw-r--r-- 1 root wheel 16B 10 3 12:51 CURRENT
-rw-r--r-- 1 root wheel 0B 10 3 11:57 LOCK
-rw-r--r-- 1 root wheel 309B 10 3 12:51 LOG
-rw-r--r-- 1 root wheel 309B 10 3 12:14 LOG.old
-rw-r--r-- 1 root wheel 110B 10 3 12:51 MANIFEST-000007
8,LevelDB公式サイトの説明によると、LevelDBの特徴と制限は以下の通りである:特徴:
1、keyとvalueはいずれも任意の長さのバイト配列である.
2、entry(すなわちK-Vレコード)のデフォルトはkeyの辞書順に格納され、もちろん開発者もこのソート関数を再ロードすることができる.
3、提供する基本操作インタフェース:Put()、Delete()、Get()、Batch()
4、一括操作を原子操作で行うことをサポートする;
5、データパノラマのsnapshot(スナップショット)を作成し、スナップショットでデータを検索することを許可する.
6、前方(または後方)反復器でデータを遍歴することができる(反復器が隠しているsnapshotを作成する).
7、Snappyを使用してデータを自動的に圧縮する;
8、移植性;
制限:
1、非関係型データモデル(NoSQL)、sql文をサポートしない、インデックスもサポートしない;
2、一度に1つのプロセスだけが1つの特定のデータベースにアクセスすることを許可する.
3、内蔵のC/Sアーキテクチャはないが、開発者はLevelDBライブラリを使って自分で1つのserverをカプセル化することができる.