pg_crdt
electric_dart
pg_crdt | electric_dart | |
---|---|---|
3 | 2 | |
366 | 81 | |
0.0% | - | |
10.0 | 9.7 | |
over 1 year ago | 2 days ago | |
Rust | Dart | |
PostgreSQL License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pg_crdt
-
CRDT-richtext: Rust implementation of Peritext and Fugue
Cool, I'll check out your repos. Supabase also as Postgres CRDT (https://github.com/supabase/pg_crdt).
But, in general, I think searching in and across documents and database storage is going to a thorny problem even with existing, hyper-optimized CRDT algorithms. For example, if you just store your Yjs document as a binary blob in a Postgres column, Postgres becomes the bottleneck and all the fancy range-tree or b-tree optimizations are no longer that helpful on the server. Plus, it'd be great to have an document edit just be a tiny insert into the database that can be streamed to other clients rather than a big row update.
This all may because the focus of CRDTs seems to be rooted in a fully decentralized, P2P system but many developers want collaborative text editing in a more traditional client-server model.
-
A Yjs provider that uses Supabase Realtime for synchronization. Feedback / suggestions welcome.
I'm part of the Supabase Realtime team. Thanks for doing this! We've been wanting to do it internally ever since launching Broadcast. We've also been experimenting with what a very integrated CRDT solution looks like (e.g. pg_crdt).
-
Show HN: Pg_CRDT – an experimental CRDT extension for Postgres
This is an experimental extension for CRDTs, `pg_crdt`[0]. It supports Yjs/Yrs and Automerge.
The linked blog post describes how we're thinking about this extension in a Supabase context. Ideally this "Show HN" generates some discussion/interest, both here and in the github discussions [1].
I want to emphasise this part from the blog post[2]: "pg_crdt has not been released onto the Supabase platform (and it may never be). We’re considering many options for offline-sync/support and, while CRDTs will undoubtedly factor in, we’re not sure if this is the right approach."
[0] GitHub repo: https://github.com/supabase/pg_crdt
[1] Discussions: https://github.com/supabase/pg_crdt/discussions
[2] Blog post: https://supabase.com/blog/postgres-crdt
electric_dart
-
Show HN: ElectricSQL, Postgres to SQLite active-active sync for local-first apps
Hey, yup it's definitely a medium term objective.
The team at SkillDevs are maintaining a Daft/Flutter client at https://github.com/SkillDevs/electric_dart
Plus we have a thread to extract the core client-side replication component to Rust to be able to compile for multiple targets.
-
CRDT-richtext: Rust implementation of Peritext and Fugue
We (ElectricSQL) have some work underway on a Rust/WASM port of our core client component, that’s designed to open up more language support.
This is a community contributed Dart/Flutter client https://github.com/SkillDevs/electric_dart that may also be a useful reference.
What are some alternatives?
electric - Local-first sync layer for web and mobile apps. Build reactive, realtime, local-first apps directly on Postgres.
fugue-bench - Fugue list CRDT implementations and benchmarks
multiversion-concurrency-contro
vaxine - Rich-CRDT database based on AntidoteDB.
crdt-benchmarks - A collection of CRDT benchmarks
eventually-consistent-mesh - an attempt to create an asynchronously replicated append only eventually consistent data protocol
yjs-pg-test - Test combining yjs and PostgreSQL using plv8 and plv8ify
crdt-benchmarks - Real world text editing traces for benchmarking CRDT and Rope data structures [Moved to: https://github.com/josephg/editing-traces]
hash-db - Experimental distributed pseudomultimodel keyvalue database (it uses python dictionaries) imitating dynamodb querying with join only SQL support, distributed joins and simple Cypher graph support and document storage
text-diff - a python implementation of diff3 and three way merge