All Projects → justin-db → Justindb

justin-db / Justindb

Licence: apache-2.0
⚛️ JustinDB is a highly available globally distributed key-value data store.

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Justindb

Infinit
The Infinit policy-based software-defined storage platform.
Stars: ✭ 363 (+146.94%)
Mutual labels:  key-value, fault-tolerance
Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+1306.12%)
Mutual labels:  key-value, distributed-database
Dynomite
A generic dynamo implementation for different k-v storage engines
Stars: ✭ 3,830 (+2505.44%)
Mutual labels:  key-value, distributed-database
Js
Gryadka is a minimalistic master-master replicated consistent key-value storage based on the CASPaxos protocol
Stars: ✭ 304 (+106.8%)
Mutual labels:  key-value, distributed-database
Zanredisdb
Yet another distributed kvstore support redis data and index. moved to: https://github.com/youzan/ZanRedisDB
Stars: ✭ 64 (-56.46%)
Mutual labels:  key-value, distributed-database
Bitnami Docker Redis
Bitnami Redis Docker Image
Stars: ✭ 317 (+115.65%)
Mutual labels:  key-value, cluster
Ramcloud
**No Longer Maintained** Official RAMCloud repo
Stars: ✭ 405 (+175.51%)
Mutual labels:  key-value, fault-tolerance
jylis
A distributed in-memory database for Conflict-free Replicated Data Types (CRDTs). 🌱 ↔️
Stars: ✭ 68 (-53.74%)
Mutual labels:  crdt, distributed-database
Interference
opensource distributed database with base JPA implementation and event processing support
Stars: ✭ 57 (-61.22%)
Mutual labels:  distributed-database, cluster
Elasticell
Elastic Key-Value Storage With Strong Consistency and Reliability
Stars: ✭ 453 (+208.16%)
Mutual labels:  key-value, distributed-database
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (+2113.61%)
Mutual labels:  distributed-database, cluster
Arangodb
🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.
Stars: ✭ 11,880 (+7981.63%)
Mutual labels:  key-value, distributed-database
sucredb
Distributed KV database with causality tracking
Stars: ✭ 51 (-65.31%)
Mutual labels:  key-value, crdt
Diplomat
A HTTP Ruby API for Consul
Stars: ✭ 358 (+143.54%)
Mutual labels:  key-value, cluster
minidb
A minimal in-memory distributed master-less document database
Stars: ✭ 29 (-80.27%)
Mutual labels:  cluster, distributed-database
Akka.net
Port of Akka actors for .NET
Stars: ✭ 4,024 (+2637.41%)
Mutual labels:  akka, cluster
mmqtt
An Open-Source, Distributed MQTT Broker for IoT.
Stars: ✭ 58 (-60.54%)
Mutual labels:  akka, cluster
akka-cluster-minimal
Akka Cluster - absolute minimal
Stars: ✭ 16 (-89.12%)
Mutual labels:  akka, cluster
Akkadotnet Code Samples
Akka.NET professional reference code samples
Stars: ✭ 451 (+206.8%)
Mutual labels:  akka, cluster
Zookeeper
Apache ZooKeeper
Stars: ✭ 10,061 (+6744.22%)
Mutual labels:  key-value, distributed-database

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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].