Pg_CRDT

Data

postgres extension

SHOW HN2022

Legend

Pg_CRDT

an experimental CRDT extension for Postgres

supabase.com

#crdt#postgres#yjs#automerge#offline sync

296points
38comments
#143of 2,570 in 2022
Top 6%of 2022 by points

How HN took it

DebatedReal support and real criticism

5 positive, 3 neutral or asking, 0 mixed, 3 critical, out of 11 comments about the project. Thread score -0.02.

Idea: 3 for, 1 againstExecution: 1 for, 0 againstDesign: 0 for, 1 againstPerformance: 0 for, 1 againstDocs: 1 for, 0 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Support for both Yjs and Automerge is the right direction

    From 1 comment
    • Super excited to see this Paul, and amused to see the nod to my comment in the post :-) I'm going to enjoy getting stuck into this! (When I'm not stuck driving for six hours...…
      samwillis on HN
  • Interest in offline-sync use cases

    From 2 comments
    • Had a chance to take a little more of a look, did you investigate querying/indexing within the documents? (Didn't spot any sign in the repository) Without the ability to index…
      samwillis on HN
    • Sure thing! In all honestly, to say it was a "persistence layer" is a bit of a stretch since it was not an additional layer per se, but here's what we did. Context: I was the CTO…
      moralestapia on HN

Objections

  • Postgres MVCC may struggle with frequent CRDT updates

    From 1 comment
    • Hm, I am a bit worried about using PostgreSQL with CRDT (Limitations section from the blog). I guess that PostgreSQL doesn't like frequently updates, because of MVCC. Maybe it is…
      Hixon10 on HN
  • No indexing or querying within documents

    From 2 comments
    • Had a chance to take a little more of a look, did you investigate querying/indexing within the documents? (Didn't spot any sign in the repository) Without the ability to index…
      samwillis on HN
    • > This could be as basic as a three column table (guid, doc, clock), the clock being a global Lamport This would be achievable, but also perhaps quite strict - we're dictating a…
      kiwicopple on HN
  • CRDTs only fit a limited set of use cases

    From 1 comment
    • I do not get peoples' obsession with CRDTs. They are useful in a limited set of use cases when your operations are commutative but having only commutative operations is pretty…
      danbruc on HN

Requests

  • Add an open source license

    From 1 comment
    • Hi @kiwicopple, hope you can still read this. This is very nice and comes handy to me as I've been working for months on a couple projects using Yjs for which I adapted a…
      moralestapia on HN
  • Support for querying and indexing document contents

    From 1 comment
    • Had a chance to take a little more of a look, did you investigate querying/indexing within the documents? (Didn't spot any sign in the repository) Without the ability to index…
      samwillis on HN

Questions

  • Why not build this into Realtime instead

    From 1 comment
    • Forgive me, I'm still recovering from the flu and am having some trouble thinking, but I didn't find your "Why not build this into Realtime?" section very compelling. If you've…
      Smaug123 on HN

Alternatives named

  • Persisting Yjs documents with a custom Postgres historian

    From 1 comment
    • Sure thing! In all honestly, to say it was a "persistence layer" is a bit of a stretch since it was not an additional layer per se, but here's what we did. Context: I was the CTO…
      moralestapia on HN
  • Operational Transforms

    From 1 comment
    • And if you tie the conflict resolution logic to the individual delta operations, you get Operational Transforms.
      melony on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/33931971)