Questions tagged [crdt]

Commutative Replicated Data Type

Commutative Replicated Data Type

A CRDT is a data type designed so that operations on it commute - give the same result independent of the order in which they are applied.

See: A comprehensive study of Convergent and Commutative Replicated Data Types

46 questions
105
votes
2 answers

Differences between OT and CRDT

Can someone explain me simply the main differences between Operational Transform and CRDT? As far as I understand, both are algorithms that permits data to converge without conflict on different nodes of a distributed system. In which usecase would…
Sebastien Lorber
  • 89,644
  • 67
  • 288
  • 419
37
votes
7 answers

Conflict-free Replicated Data Types (CRDT) vs Paxos or Raft

When is it a good idea to use something like CRDT instead of paxos or raft?
Eric des Courtis
  • 5,135
  • 6
  • 24
  • 37
27
votes
3 answers

What is CRDT in Distributed Systems?

I am a newbie in Distributed systems and I am trying to get an insight on the concept of CRDT. I realize that it has three notations : Conflict-free Replicated Data Type Convergent Replicated Data Type Commutative Replicated Data Type Can anyone…
fnaticRC ggwp
  • 955
  • 1
  • 11
  • 20
12
votes
1 answer

Logoot CRDT: interleaving of data on concurrent edits to the same spot?

I want to implement Logoot for eventually-convergent P2P text editing and I've run into a bit of a problem. My understanding of Logoot is that the intervals between objects (lines of text in the original paper, but could be characters or words) can…
Archagon
  • 2,470
  • 2
  • 25
  • 38
3
votes
1 answer

Are there any databases backed by CRDTs?

I’ve come across CRDTs and I’m excited for their potential but I’m concerned that it doesn't really play nicely with databases that I know of. Whenever I have to update my database state I will still have to do some kind of locking beit pessimistic…
david_adler
  • 9,690
  • 6
  • 57
  • 97
3
votes
2 answers

Distributed database which allows custom CRDT merging

I‘m rather new to distributed databases, though I have already studied related literature (e.g. CAP theorem, CRDT) and implemented some POC to allow scaling my application horizontally. Now I however face a challenging problem. In ordere to scale…
benjist
  • 2,740
  • 3
  • 31
  • 58
3
votes
1 answer

Can I use Unix time for a Lamport timestamp?

To the best of my understanding, a lamport timestamp is a tool used to ensure events across multiple sites have a partial ordering. From wikipedia: In pseudocode, the algorithm for sending is: time = time + 1; time_stamp = time; send(message,…
brainkim
  • 902
  • 3
  • 11
  • 20
3
votes
1 answer

How can I implement a lossless CRDT using Gun?

How do I create a CRDT using Gun? For instance, if I want to implement an grow-only array, where each element points to the next, how do I solve conflicts? To simplify, let's create this scenario, where Alice and Bob are cooperating. The array…
pgte
  • 51
  • 4
3
votes
1 answer

dealing with riak datatypes in postcommit hooks

I am wanting to implement a postcommit hook for riak that decrements a counter in a map in another bucket. However I am having a bit of trouble dealing with the riak datatypes. Here is me attempting from riak console: (riak@127.0.0.1)9>{ok, C} =…
jisaacstone
  • 4,234
  • 2
  • 25
  • 39
2
votes
0 answers

Is there a way to use OT or CRDT (or something similar) for relational data?

I'm working on a syncing process between offline-first databases and a central server. As a simple example, there are items and departments and an item belongs to a department. Each client can modify any of the entities. I know for text documents…
Yehosef
  • 17,987
  • 7
  • 35
  • 56
2
votes
2 answers

Are add/remove set CRDT's monotonic?

The internals of an add/remove set CRDT is monotonic, because we only ever add to the internal sets, so the internal state of the CRDT cannot ever go backwards in logical time. However, the observed state of the CRDT is that we're adding and…
Filip Haglund
  • 13,919
  • 13
  • 64
  • 113
2
votes
2 answers

Why is a clock necessary for the logoot approach?

I am planning a P2P collaborative editing software and I was planning on going with WOOT. The problem would have been that I would have had loads and loads of tombstones (atoms are characters...) so I searched more and found this PDF about the…
tleb
  • 4,395
  • 3
  • 25
  • 33
2
votes
1 answer

Using Riak CRDT with bitcask backend

I am having trouble configuring CRDT bucket types and using bitcask backend. I want to be able to use a set type and keep the functionality of bitcask's expiry. I am able to create and use bucket types if I do not specify a backend sudo riak-admin…
Aaron
  • 188
  • 1
  • 7
2
votes
1 answer

What does the Context for Flags relate to in Riak KV

When using flags in Riak KV the flag require a context. In the Elixir client the context is set by Flag.new("my context"), otherwise it will throw :context_required when one try to disable the flag. Now, the flag can only exist in a Map, and each…
2
votes
1 answer

Is there a relationship between CRDTs and the RAFT protocol - or are they orthogonal?

Take the use case of a multi-player networked game. Instantly you have the problem of replicating and reconciling shared state across the network. There appear to be a multiple of tools aimed at aspect of this problem, and two in particular seem to…
hawkeye
  • 34,745
  • 30
  • 150
  • 304
1
2 3 4