An open source clone of Amazon's Dynamo.
Switch branches/tags
vector-clock-fixes v1.4.0 release-1.10.26-cutoff release-1.10.25-cutoff release-1.10.24-cutoff release-1.10.23-cutoff release-1.10.22-cutoff release-1.10.21-cutoff release-1.10.20-cutoff release- release-1.10.19-cutoff release-1.10.18-cutoff release-1.10.17-cutoff release-1.10.16-cutoff release-1.10.15-cutoff release-1.10.14-cutoff release-1.10.13-cutoff release-1.10.12-cutoff release-1.10.11-cutoff release-1.10.10-cutoff release-1.10.9-cutoff release-1.10.8-cutoff release-1.10.7-cutoff release-1.10.6-cutoff release-1.10.5-cutoff release-1.10.4-cutoff release-1.10.3-cutoff release-1.10.2-cutoff release-1.10.1-cutoff release-1.10.0-cutoff release-1.9.22-cutoff release-1.9.21-cutoff release-1.9.20-cutoff release-1.9.19-cutoff release-1.9.18-cutoff release-1.9.17-cutoff release-1.9.16-cutoff release-1.9.15-cutoff release-1.9.14-cutoff release-1.9.13-cutoff release-1.9.12-cutoff release-1.9.11-cutoff release-1.9.10-cutoff release-1.9.9-cutoff release-1.9.8-cutoff release-1.9.7-cutoff release-1.9.6-cutoff release-1.9.5-cutoff release-1.9.4-cutoff release-1.9.3-cutoff release-1.9.2-cutoff release-1.9.1-cutoff release-1.9.0-cutoff release-1.8.16-cutoff release-1.8.15-cutoff release-1.8.14-cutoff release-1.8.13-cutoff release-1.8.12-cutoff release-1.8.11-cutoff release-1.8.10-cutoff release-1.8.9-cutoff release-1.8.8-cutoff release-1.8.5-cutoff release-1.8.4-cutoff release-1.8.3-cutoff release-1.8.1-cutoff release-1.7.3-cutoff release-1.7.2-cutoff release-1.7.1-cutoff release-1.7.0-cutoff release-1.6.8-cutoff release-1.6.6-cutoff release-1.6.4 release-1.6.4-cutoff release-1.6.3-cutoff release-1.6.2-cutoff release-1.6.1-cutoff release-1.6.0-cutoff release-1.5.9-cutoff release-1.5.8-cutoff release-1.5.7-cutoff release-1.5.4-cutoff release-1.5.2-cutoff release-1.5.1-cutoff release-1.3.0-cutoff before-replicatype-was-removed before-donorbased-was-removed
Nothing to show
Clone or download
Failed to load latest commit information.
.settings Format only edited lines setting Jan 7, 2015
bin Fixed the issue with too long command line in Windows 10 + updated th… Aug 30, 2017
clients Replaced the following instances with Sep 26, 2016
config Fix lots of typos and spelling mistakes Nov 4, 2016
contrib Added optional CDN feature to the BnP pipeline. Jul 21, 2017
docs Updating omnigraffle for logical architecture Jul 16, 2011
example Polish up the Java Client example Aug 23, 2014
gobblin Updated Gobblin dependency from 0.10.0 to 0.11.0 Jul 27, 2017
gradle/wrapper Multi module gradle build for voldemort Apr 9, 2016
src Added retries for soft errors in AdminClient#waitForCompletion. Aug 30, 2017
test BnP now retries fetches when cluster.xml is stale. Nov 10, 2016
voldemort-contrib Dummy directory for injecting custom gradle behavior Jun 6, 2014
voldemort-protobuf Gradle Protobuf shadowed jar Feb 9, 2016
.gitignore Migrate from stores.xml to STORES folder in all example configs Aug 24, 2014
LICENSE Add license header to source files. Jan 13, 2009
NOTES Replaced the following instances with Sep 26, 2016
NOTICE Add Avro, Jackson and ParaNamer to NOTICE. Mar 6, 2010 Fixed the issue with too long command line in Windows 10 + updated th… Aug 30, 2017
build.gradle Updated Gobblin dependency from 0.10.0 to 0.11.0 Jul 27, 2017
build.xml Fully disabled the Ant build in favor of the Gradle one. Apr 30, 2015 Releasing Voldemort 1.10.26 Aug 30, 2017
gradlew Multi module gradle build for voldemort Apr 9, 2016
gradlew.bat Generate gradle wrapper to work with versions May 30, 2014
release_notes.txt Releasing Voldemort 1.10.26 Aug 30, 2017
settings.gradle Added optional CDN feature to the BnP pipeline. Jul 21, 2017 Initial import Jan 2, 2009
web.xml Initial import Jan 2, 2009

Voldemort is a distributed key-value storage system


  • Data is automatically replicated over multiple servers across multiple datacenters.
  • Data is automatically partitioned so each server contains only a subset of the total data
  • Server failure is handled transparently
  • Pluggable serialization is supported to allow rich keys and values including lists and tuples with named fields, as well as to integrate with common serialization frameworks like Protocol Buffers, Thrift, and Java Serialization
  • Data items are versioned to maximize data integrity in failure scenarios without compromising availability of the system
  • Each node is independent of other nodes with no central point of failure or coordination
  • Pluggable storage engines, to cater to different workloads
  • SSD Optimized Read Write storage engine, with support for multi-tenancy
  • Built in mechanism to fetch & serve batch computed data from Hadoop
  • Support for pluggable data placement strategies to support things like distribution across data centers that are geographical far apart.

It is used at LinkedIn by numerous critical services powering a large portion of the site. .


You can refer to for more info

Download Code

cd ~/workspace
git clone
cd voldemort
./gradlew clean build -x test

Start Server

# in one terminal
bin/ config/single_node_cluster

Use Client Shell

Client shell gives you fast access to the store. We already have a test store defined in the "single_node_cluster", whose key and value are both String.

# in another terminal
cd ~/workspace/voldemort
bin/ test tcp://localhost:6666/

Now you have the the voldemort shell running. You can try these commands in the shell

put "k1" "v1"
put "k2" "v2"
get "k1"
getall "k1" "k2"
delete "k1"
get "k1"

You can find more commands by runninghelp

Want to dig into the detailed implementation or even contribute to Voldemort? A quick git guide for people who want to make contributions to Voldemort.

Comparison to relational databases

Voldemort is not a relational database, it does not attempt to satisfy arbitrary relations while satisfying ACID properties. Nor is it an object database that attempts to transparently map object reference graphs. Nor does it introduce a new abstraction such as document-orientation. It is basically just a big, distributed, persistent, fault-tolerant hash table. For applications that can use an O/R mapper like ActiveRecord or Hibernate this will provide horizontal scalability and much higher availability but at great loss of convenience. For large applications under internet-type scalability pressure, a system may likely consist of a number of functionally partitioned services or apis, which may manage storage resources across multiple data centers using storage systems which may themselves be horizontally partitioned. For applications in this space, arbitrary in-database joins are already impossible since all the data is not available in any single database. A typical pattern is to introduce a caching layer which will require hashtable semantics anyway. For these applications Voldemort offers a number of advantages:

  • Voldemort combines in memory caching with the storage system so that a separate caching tier is not required (instead the storage system itself is just fast).
  • Unlike MySQL replication, both reads and writes scale horizontally
  • Data partioning is transparent, and allows for cluster expansion without rebalancing all data
  • Data replication and placement is decided by a simple API to be able to accommodate a wide range of application specific strategies
  • The storage layer is completely mockable so development and unit testing can be done against a throw-away in-memory storage system without needing a real cluster (or even a real storage system) for simple testing


The source code is available under the Apache 2.0 license. We are actively looking for contributors so if you have ideas, code, bug reports, or fixes you would like to contribute please do so.

For help please see the discussion group, or the IRC channel #voldemort. Bugs and feature requests can be filed on Github.

Special Thanks

We would like to thank JetBrains for supporting Voldemort Project by offering open-source license of their IntelliJ IDE to us.