LevelDB (leveldb - a fast and lightweight key/value database library) 是 Google 開發非常快速的 key-value 儲存的函式庫, 效能看起來相當不錯: LevelDB Benchmarks, 且 LevelDB 的資料, 都會經過 Snappy 壓縮, 所以資料也會比較小.
註: 下述安裝環境為 Debian / Ubuntu Linux
於 PHP 增加 Google LevelDB 的 Extension
有 LevelDB 的 Source code, 再來找 PHP 的 ext 是否有人寫, 於是就找到: leveldb for php
也正好找到此篇有人已經有做過編譯: 從原始碼編譯 Google LevelDb 的 PHP 擴展, 下述步驟摘錄自此篇.
安裝、編譯步驟
- BUILD=/usr/local/
- # 編譯安裝 LevelDB
- svn export http://leveldb.googlecode.com/svn/trunk/ leveldb
- cd $BUILD/leveldb
- make -j8 OPT="-O2 -DNDEBUG -fPIC"
- # 編譯安裝 php-leveldb ext
- git clone git://github.com/arraypad/php-leveldb.git
- cd $BUILD/php-leveldb
- phpize
- ./configure --with-leveldb=$BUILD/leveldb
- make -j8
- make test
- make install
- # 於 Apache 的 PHP 設定 leveldb.so (extenstion)
- vim /etc/php5/cli/conf.d/leveldb.ini # 內容如下述
extension=leveldb.so - /etc/init.d/apache2 restart # 到此就可以開始使用 LevelDB 囉~
LevelDB 於 PHP 的操作與使用範例
範例可於 php-leveldb 的 tests 裡面找到: basic.phpt (下述參考整理自此檔案)
範例
<?php if (!extension_loaded('leveldb')) { die('skip leveldb not loaded'); } $path = '/tmp/leveldb.test'; $db = new LevelDb($path); echo "* setting (foo=bar): \n"; var_dump($db->set('foo', 'bar')); // bool(true) echo "* getting (foo): \n"; var_dump($db->get('foo')); // string(3) "bar" echo "* delete (foo): \n"; var_dump($db->delete('foo')); // bool(true) echo "* getting (foo): \n"; var_dump($db->get('foo')); // bool(false) ?>
相關新聞
- Google Open-Sources NoSQL Database Called LevelDB
- LevelDB: A Fast Persistent Key-Value Store
Google's Bigtable (http://labs.google.com/papers/bigtable.html) manages millions of tablets where the contents of a particular tablet are represented by a precursor to LevelDB. - Google 開源 LevelDB 數據庫鍵值儲存引擎
- Ecstortive - LevelDB vs Kyoto Cabinet my findings
- Google 開源 Key-Value 資料庫 LevelDB
- Google Snappy–A Fast Compressing Library
- SSTable and Log Structured Storage: LevelDB