asbubam / yorkie

Building blocks for realtime-collaborative application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

yorkie

Features

  • Building blocks for an optimistic replication style system that ensures eventual consistency
  • Providing offline editing and real-time automatic synchronization
  • Using the document(JSON-like) as the basic data type
  • Stored documents can be searchable(the documents can be editable after attaching)

Concept layout

 +--Client "A" (User)---------+
 | +--Document "D-1"--------+ |            +--Agent-------------------------+
 | | { a: 1, b: [], c: {} } | <-- CRDT --> | +--Collection "C-1"----------+ |
 | +------------------------+ |            | | +--Document "D-1"--------+ | |      +--Mongo DB---------------+
 +----------------------------+            | | | { a: 1, b: [], c: {} } | | |      | Snapshot for query      |
                                           | | +------------------------+ | | <--> | Snapshot with CRDT Meta |
 +--Client "A" (User)---------+            | | +--Document "D-2"--------+ | |      | Operations              |
 | +--Document "D-1"--------+ |            | | | { a: 1, b: [], c: {} } | | |      +-------------------------+
 | | { a: 2, b: [], c: {} } | <-- CRDT --> | | +------------------------+ | |
 | +------------------------+ |            | +----------------------------+ |
 +----------------------------+            +--------------------------------+
                                                            ^
 +--Client "C" (Admin)--------+                             |
 | +--Query "Q-1"-----------+ |                             |
 | | db.['c-1'].find(...)   | <-- Find Query ---------------+
 | +------------------------+ |
 +----------------------------+

SDKs

Internals

About

Building blocks for realtime-collaborative application


Languages

Language:Go 99.4%Language:Makefile 0.6%