Giter Site home page Giter Site logo

justindb's Introduction

JustinDB

Build Status codecov Codacy Badge License Project Status Gitter

Watch on GitHub Star on GitHub

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.

➜  JustinDB git:(master) ✗ docker exec -it justindb /bin/bash
   ___              _    _        ______ ______
  |_  |            | |  (_)       |  _  \| ___ \
    | | _   _  ___ | |_  _  _ __  | | | || |_/ /
    | || | | |/ __|| __|| || '_ \ | | | || ___ \
/\__/ /| |_| |\__ \| |_ | || | | || |/ / | |_/ /
\____/  \__,_||___/ \__||_||_| |_||___/  \____/

Cli:
    cli help
More documentation available at:
    https://github.com/speedcom/JustinDB
    https://speedcom.github.io/

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

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.

Bunch of posts about JustinDB

  1. JustinDB - Modern REACTIVE NoSQL database
  2. JustinDB - Database Model
  3. JustinDB - Pluggable persistent and in-memory storage engines
  4. JustinDB - More than 700 commits!
  5. JustinDB - Serialization that greatly improves performance
  6. JustinDB - Replication and Partitioning
  7. JustinDB - Why Scala and Akka?
  8. JustinDB - Data versioning: Vector Clocks
  9. JustinDB - HTTP API
  10. JustinDB - The Ring
  11. JustinDB - Preference list
  12. JustinDB - Solving data entropy: Read Repair
  13. JustinDB - Solving data entropy: Active-Anti Entropy
  14. JustinDB - Executable JAR
  15. JustinDB - Multi-Datacenter Replication

justindb's People

Contributors

speedcom avatar

Watchers

James Cloos avatar Blaize D'souza avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.