This fork modified build.sh and Makefile for using ssdb with TerarkDB's leveldb compatible api.
Before using this modified ssdb, you should download TerarkDB and uncompress to /path/to/TerarkDB
, for compiling this ssdb, you should execute env TERARK_DB_HOME=/path/to/TerarkDB make
.
TerarkDB's leveldb compatible api leveldb::DB::open(dbpath)
put db files into dbpath/TerarkDB
. For ssdb, dbpath
is configured in ssdb.conf
, by var work_dir
. TerarkDB's leveldb::DB::open
will create a default dbpath/TerarkDB/dbmeta.json
, if you want to change db config parameters, create your own dbpath/TerarkDB/dbmeta.json
before open the db, see more document of dbmeta.json, the default dbmeta.json
for leveldb is:
{
"RowSchema": {"columns": {
"key": {"type": "carbin"}, "val": {"type": "carbin"}
}},
"TableIndex": [ {"fields": "key", "unique": true} ]
}
The official ssdb benchmark is really for sequencial get on program-generated data, see our ssdb benchmark for random multi-get on real data
Note: DONT start ssdb-server with -d (daemon) option, its daemonize will cause TerarkDB background threads exit. USE `nohup ./ssdb-server ssdb.conf` instead
SSDB is a high performace key-value(key-string, key-zset, key-hashmap) NoSQL database, an alternative to Redis.
SSDB is stable, production-ready and is widely used by many Internet companies including QIHU 360.
- LevelDB client-server support, written in C/C++
- Designed to store collection data
- Persistent key-value, key-zset, key-map('hashmap') storage
- Redis clients are supported
- Client API supports including C++, PHP, Python, Cpy, Java, nodejs, Ruby, Go(see all)
- Persistent queue service
- Replication(master-slave), load balance
- GUI administration tool(phpssdbadmin)
- Built-in CLI nagios self-checks
<?php
require_once('SSDB.php');
$ssdb = new SimpleSSDB('127.0.0.1', 8888);
$resp = $ssdb->set('key', '123');
$resp = $ssdb->get('key');
echo $resp; // output: 123
$ # wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
$ # use Terark fork instead:
$ wget --no-check-certificate https://github.com/Terark/ssdb/archive/master.zip
$ unzip master
$ cd ssdb-master
$ # For building with TerarkDB's leveldb api
$ # TERARK_DB_HOME is the directory which contains subdir 'api'
$ env TERARK_DB_HOME=/path/to/TerarkDB make
$ #optional, install ssdb in /usr/local/ssdb
$ sudo make install
# start master
$ ./ssdb-server ssdb.conf
# or start as daemon
$ ./ssdb-server -d ssdb.conf
# ssdb command line
$ ./tools/ssdb-cli -p 8888
# stop ssdb-server
$ ./ssdb-server ssdb.conf -s stop
# for older version
$ kill `cat ./var/ssdb.pid`
Total 1000 requests.
writeseq : 0.546 ms/op 178.7 MB/s
writerand : 0.519 ms/op 188.1 MB/s
readseq : 0.304 ms/op 321.6 MB/s
readrand : 0.310 ms/op 315.0 MB/s
View full SSDB vs Redis benchmark charts...
========== set ==========
qps: 44251, time: 0.226 s
========== get ==========
qps: 55541, time: 0.180 s
========== del ==========
qps: 46080, time: 0.217 s
========== hset ==========
qps: 42338, time: 0.236 s
========== hget ==========
qps: 55601, time: 0.180 s
========== hdel ==========
qps: 46529, time: 0.215 s
========== zset ==========
qps: 37381, time: 0.268 s
========== zget ==========
qps: 41455, time: 0.241 s
========== zdel ==========
qps: 38792, time: 0.258 s
Run on a 2013 MacBook Pro 13 inch with Retina display.
Download ssdb-server.exe from here: https://github.com/ideawu/ssdb-bin
make ios
# ls ios/
include/ libleveldb-ios.a libsnappy-ios.a libssdb-ios.a libutil-ios.a
Drag the static libraies files into your iOS project. Then add ios/include
to your iOS project's Header Search Paths, which is set in Build Settings.
- Author's homepage
- Cpy Scripting Language
- Google LevelDB
- Lua ssdb client driver for the ngx_lua
- Yet another ssdb client for Python
- SSDB 中文文档
See Changes-Made-to-LevelDB wiki
SSDB is licensed under New BSD License, a very flexible license to use.
@ideawu
- 刘建辉, liujianhui@gongchang.com
- wendal(陈镇铖), wendal1985@gmail.com, http://wendal.net