All Projects → derekkraan → Delta_crdt_ex

derekkraan / Delta_crdt_ex

Licence: mit
Use DeltaCrdt to build distributed applications in Elixir

Programming Languages

elixir
2628 projects

Labels

Projects that are alternatives of or similar to Delta crdt ex

netty-queue
Simple queue: java, json-rest, netty
Stars: ✭ 21 (-93.27%)
Mutual labels:  crdt
c-crdtlib
The Concordant Conflict-Free Replicated Datatypes (CRDT) library.
Stars: ✭ 21 (-93.27%)
Mutual labels:  crdt
sucredb
Distributed KV database with causality tracking
Stars: ✭ 51 (-83.65%)
Mutual labels:  crdt
yorkie-js-sdk
Yorkie JavaScript SDK
Stars: ✭ 57 (-81.73%)
Mutual labels:  crdt
graph-crdt
Commutative graphs made for real-time, offline-tolerant replication
Stars: ✭ 47 (-84.94%)
Mutual labels:  crdt
state
A Redux-based state container for local-first software, offering seamless synchronization using Automerge CRDTs. (Formerly known as 🐟 Cevitxe).
Stars: ✭ 126 (-59.62%)
Mutual labels:  crdt
jylis
A distributed in-memory database for Conflict-free Replicated Data Types (CRDTs). 🌱 ↔️
Stars: ✭ 68 (-78.21%)
Mutual labels:  crdt
Crjdt
A conflict-free replicated JSON datatype (CRDT) in Scala
Stars: ✭ 271 (-13.14%)
Mutual labels:  crdt
bloomfilter
Bloomfilter written in Golang, includes rotation and RPC
Stars: ✭ 61 (-80.45%)
Mutual labels:  crdt
credt
CRDT-like data structures for building distributed, offline-first applications
Stars: ✭ 32 (-89.74%)
Mutual labels:  crdt
godless
Peer-to-peer lite database over IPFS
Stars: ✭ 72 (-76.92%)
Mutual labels:  crdt
crdt
Dart implementation of Conflict-free Replicated Data Types (CRDTs)
Stars: ✭ 55 (-82.37%)
Mutual labels:  crdt
mute-structs
MUTE-structs is a Typescript library that provides an implementation of the LogootSplit CRDT algorithm.
Stars: ✭ 14 (-95.51%)
Mutual labels:  crdt
diamond-types
The world's fastest CRDT. WIP.
Stars: ✭ 654 (+109.62%)
Mutual labels:  crdt
Ipfs Log
Append-only log CRDT on IPFS
Stars: ✭ 269 (-13.78%)
Mutual labels:  crdt
rdoc
Conflict-free replicated JSON implementation in native Go
Stars: ✭ 76 (-75.64%)
Mutual labels:  crdt
yorkie-rust-sdk
Yorkie Rust SDK
Stars: ✭ 13 (-95.83%)
Mutual labels:  crdt
Yjs
Shared data types for building collaborative software
Stars: ✭ 5,894 (+1789.1%)
Mutual labels:  crdt
Fluidframework
Library for building distributed, real-time collaborative web applications
Stars: ✭ 3,592 (+1051.28%)
Mutual labels:  crdt
hyperhyperspace-core
A library to create p2p applications, using the browser as a full peer.
Stars: ✭ 112 (-64.1%)
Mutual labels:  crdt

DeltaCrdt

Hex pm CircleCI badge

DeltaCrdt implements a key/value store using concepts from Delta CRDTs, and relies on MerkleMap for efficient synchronization.

There is a (slightly out of date) introductory blog post and the (very much up to date) official documentation on hexdocs.pm is also very good.

The following papers have been used to implement this library:

Usage

Documentation can be found on hexdocs.pm.

Here's a short example to illustrate adding an entry to a map:

# start 2 Delta CRDTs
{:ok, crdt1} = DeltaCrdt.start_link(DeltaCrdt.AWLWWMap)
{:ok, crdt2} = DeltaCrdt.start_link(DeltaCrdt.AWLWWMap)

# make them aware of each other
DeltaCrdt.set_neighbours(crdt1, [crdt2])

# show the initial value
DeltaCrdt.read(crdt1)
%{}

# add a key/value in crdt1
DeltaCrdt.mutate(crdt1, :add, ["CRDT", "is magic!"])

# read it after it has been replicated to crdt2
DeltaCrdt.read(crdt2)
%{"CRDT" => "is magic!"}

⚠️ Use atoms carefully : Any atom contained in a key or value will be replicated across all nodes, and will never be garbage collected by the BEAM.

Telemetry metrics

DeltaCrdt publishes the metric [:delta_crdt, :sync, :done].

Installation

The package can be installed by adding delta_crdt to your list of dependencies in mix.exs:

def deps do
  [
    {:delta_crdt, "~> 0.5.0"}
  ]
end
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].