You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DBJS data replication across instances is already implemented mostly according to CRDT rules.
Still it doesn't support operations as increment and insert (technically in dbjs collections are sets, so are unordered, although order is guaranteed and follows operation timestamp. It could more adequate to apply depth first traversal as defined in CRDT).
Additionally it's not as intelligent in handling unordered set operations on collections, where we replace whole collection (in below case a map) with a new value. e.g. having following order of operations
Client A issues operation A1:foo = { mar: 1, bar: 2 }
Client B receives operation A1
Client B issues operation B1: foo = { mar: 4, bar: 7 }
Client A issues operation A2: foo.mar = 3
Client B receives operation A2
Client A receives operation B1
Will result in foo being { mar:3, bar: 7 } in both clients, when it should be { mar: 4, bar: 7 } (as foo.mar = 3 edit was made on stale version of object, which in a meantime was replaced in context of B)
The text was updated successfully, but these errors were encountered:
More info here: https://serverless.com/blog/crdt-explained-supercharge-serverless-at-edge/
DBJS data replication across instances is already implemented mostly according to CRDT rules.
Still it doesn't support operations as
increment
andinsert
(technically in dbjs collections are sets, so are unordered, although order is guaranteed and follows operation timestamp. It could more adequate to apply depth first traversal as defined in CRDT).Additionally it's not as intelligent in handling unordered
set
operations on collections, where we replace whole collection (in below case a map) with a new value. e.g. having following order of operationsfoo = { mar: 1, bar: 2 }
foo = { mar: 4, bar: 7 }
foo.mar = 3
Will result in
foo
being{ mar:3, bar: 7 }
in both clients, when it should be{ mar: 4, bar: 7 }
(asfoo.mar = 3
edit was made on stale version of object, which in a meantime was replaced in context of B)The text was updated successfully, but these errors were encountered: