/kingdb

Fast on-disk persistent key-value store

Primary LanguageC++OtherNOASSERTION

KingDB

###What is KingDB?

KingDB is a fast on-disk persistent key-value store. You can embed it or use it as a library in your C++ applications.

KingServer is a server application that embeds KingDB and implements the Memcached protocol. It allows you to access your data through a network interface using whatever programming language you want. KingServer is not a distributed system: the data lives in a single machine.

WARNING: This is still alpha code. Even though unit-tests are covering the core components, make sure you run tests for your environment before using KingDB in production.

###Why use KingDB?

  • Fast for heavy write workloads and random reads.
  • The architecture, code, and data format are simple.
  • Multipart API to read and write large entries in smaller parts.
  • Multiple threads can access the same database safely.
  • Crash-proof: nothing ever gets overwritten.
  • Iterators and read-only consistent snapshots.
  • Compaction happens in a background thread, and does not block reads or writes.
  • The data format allows hot backups to be made.
  • Covered by unit tests.

###How fast is KingDB?

KingDB was benchmarked using the same test suite as LevelDB. On a Linux CentOS 6.5, for entries with 16-byte keys and 100-byte values (50 bytes after compression), the performance was:

Workload Operations per second
Sequential reads 104k
Random reads 203k
Sequential writes 233k
Random writes 251k
Overwrite 250k

For more details and a comparison with LevelDB, you can refer to the full KingDB benchmarks.

###Where is the documentation?

You can learn more in the KingDB documentation and the KingServer documentation.

###How to install KingDB?

You can find installation instructions in the installation section of the documentation.

KingDB has no external dependencies and has been tested on:

  • Mac OS X 10.9.5 with Apple LLVM version 6.0 (clang-600.0.51)
  • Linux Ubuntu 14.04 x64 with GCC 4.9.2
  • Linux Ubuntu 15.04 x64 with GCC 4.9.2-10ubuntu13
  • Linux CentOS 6.5 x86_64 with GCC 4.9.2

If you are using GCC, update the Makefile and add -fno-builtin-memcmp in the CFLAGS, and if you have tcmalloc on your system, add -ltcmalloc to the LDFLAGS. This will give you a nice performance speed-up.

###Where to get help?

You can get help on the KingDB mailing list. To ask a question, simply join the list.