SSDB

SSDB is a NoSQL database implemented with C++. The goal of SSDB is to substitute or work with Redis. It supports multiple data structures. Its low-level storage engine is based on Google LevelDB.

History

SSDB is originally an individual open-source project. It was started by Zuyang Wu in 2013, aiming to work as an alternative for Redis. Currently, SSDB is being used in many productive environments to replace Redis, including several well-known companies and startups.

Compression

Dictionary Encoding

SSDB supports Snappy data compression library developed by Google since version 1.6.2. In LevelDB, developers should explicitly set parameters to use Snappy in the compile time. SSDB changes this feature by directly integrating the source code of Snappy to the project. By default, SSDB will use Snappy, but users can still choose to use a non-compression version. SSDB with Snappy compression is compatible with non-compression data.

Data Model

Key/Value

SSDB supports four main data types, which are key-value, hashmap, sorted set and list. The key-value data type is used to store data with no strong relations. The hashmap is used to store data in different set with counting and sorting based on key value. Sorted set sorts all entries based on a score integer, and unlike key-value and hashmap, it cannot be used to store large data. List stores data in the queue structure.

System Architecture

Shared-Nothing

Checkpoints

Non-Blocking

SSDB provides the ssdb-dump tool for making checkpoint backup and recover. It also supports export and import command to save and restore the database from the client side.

Concurrency Control

Not Supported

SSDB does not support concurrency control, because operations are executed individually and there is no transaction. However, unlike Redis, SSDB supports multi-threads to avoid write operations blocking read operations (since 1.5.2). All write operations are executed in a single thread while read operations are executed in other threads.

Query Execution

Tuple-at-a-Time Model

Query Compilation

Not Supported

No query compilation is found in SSDB.

Indexes

Skip List Log-Structured Merge Tree

SSDB uses LevelDB as its storage engine. Operations on different data types are based on the implementation of LevelDB. LevelDB uses Log-Structured Merge Tree for data storage, and Skip List for memtable.

Joins

Not Supported

SSDB is a NoSQL database, and join operations are not supported.

Logging

Logical Logging

SSDB supports logical logging for its operations. It has multiple logging levels, including fatal, error, warn, info, debug(recommended), trace. The log file will change its name and create a new log file when exceeding the size limitation.

SSDB Logo
Website

http://ssdb.io/

Source Code

https://github.com/ideawu/ssdb

Tech Docs

http://ssdb.io/docs/

Developer

Zuyang Wu

Country of Origin

CN

Start Year

2013

Project Type

Open Source

Written in

C++

Supported languages

C#, C++, Erlang, Go, Java, Lua, PHP, Python, Ruby, Swift

Embeds / Uses

LevelDB

Compatible With

Redis

Operating Systems

BSD, iOS, Linux, OS X, Windows

Licenses

BSD