Skip to content

⚛️ JustinDB is a highly available globally distributed key-value data store.

License

Notifications You must be signed in to change notification settings

samin-arefin/JustinDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JustinDB

Build Status codecov Codacy Badge License Project Status Gitter

Distributed Key-Value Storage built on top of Scala/Akka

JustinDB KV is an eventually consistent key-value database that favours write availability. It’s a faithful implementation of Amazon’s Dynamo, with advanced features such as vector clocks for conflict resolution. JustinDB is also fault-tolerant. Servers can go up or down at any moment with no single point of failure.

Summary of techniques

Problem Technique Advantage
Partitioning Consistent Hashing Incremental Scalability
Membership and failure detection Gossip-based membership protocol and failure detection Preserves symmetry and avoids having a centralized registry for storing membership and node liveness information
High Availability for writes Vector clocks with reconciliation during reads Version size is decoupled from update rites
Recovering from permanent failures Anti-entropy using Merkle trees Synchronizes divergent replicas in the background
Conflicts resolution CRDTs Automatic conflict resolution during reads

Why akka

Its a toolkit and runtime for building highly concurrent applications which comes with ideas that have been around from some time - actor model. Besides that it has many welcome features around clustering:

  1. load balancing
  2. location transparency
  3. self maintenance
  4. fault tolerance

Authentication, authorization, validation

In case it's not obvious, Justin performs no authentication, authorization, or any validation of input data. Clients must implement those things themselves.

System Requirements

JustinDB works with Java 8 and newer.

About

⚛️ JustinDB is a highly available globally distributed key-value data store.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 99.2%
  • Shell 0.8%