News for hackers. Stuff that matters.
Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by m9t on Friday December 01, 2023 @02:08AM (#38484031)
This looks interesting! How does this compare to ElectricSQL[1]? Next to not using CRDTs.

[1] https://electric-sql.com/

Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by thruflo on Friday December 01, 2023 @02:37AM (#38484180)
Hey, James here from Electric. Congratulations to the PowerSync team :)

As a sibling comment says, PowerSync actually wrote up a comparison here https://www.powersync.com/blog/electricsql-vs-powersync

Aside from Electric being open source and PowerSync a proprietary service, the primary difference is in the programming model on the write path.

Electric provides finality of local writes. So once a non-malicious write is accepted locally, it is final and won’t be rejected by the server. This simplifies the programming model and means you don’t have to code for rollbacks.

PowerSync is a server authoritative system. Local writes are tentative and can be rejected at the server. You run an API on the write path and write logic to handle conflicts and rollbacks.

The different approaches come with different trade offs, both operationally and in terms of the programming model.

On the topic, if interesting, we have a list of alternative projects here: https://electric-sql.com/docs/reference/alternatives

Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by matharmin on Friday December 01, 2023 @02:50AM (#38484253)
Thanks for chiming in! ElectricSQL is great - we see it come up a lot in discussions since on the surface it solves the same problems (syncing between Postgres and SQLite), despite the details being very different. I love seeing all the innovation in the offline-first space!
Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by Fire-Dragon-DoL on Sunday December 03, 2023 @01:15PM (#38509334)
Wow the amount of effort you have put in this open source project is incredible!

Congrats, I'm so looking forward an idea or project where I can use electricsql

Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by Anticlockwise on Wednesday December 06, 2023 @11:19PM (#38552776)
I looked at these two systems recently and noted another crucial difference for anyone using them for a use case that included access control. ElectricSQL doesn't seem to (yet) support table joins in a way that would support standard web app access control design patterns. If you're replicating a table to a device, you're replicating the entire table, not a user-limited selection.

Supporting joins is in development, but I'm not yet clear on whether the current dev branch on it goes far enough to support access control use cases.

There's a hack in place that's supposed to help - you can define an electric_user_id on the table - but that isn't actually usable in the majority of use cases, because most ACL cases include records where multiple users can access it. I did explore using views, but electricsql doesn't currently support postgres views.

(if I'm wrong or missed something in electricsql, I'd love to be corrected, as it looks like an exciting project otherwise)

Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by thruflo on Thursday December 07, 2023 @01:23AM (#38553467)
This page lists current limitations https://electric-sql.com/docs/reference/roadmap

The key features for us on this are:

1. permissions https://electric-sql.com/docs/usage/data-modelling/permissio... which are defined using DDLX rules, authorise data access and can be used to filter data 2. shapes https://electric-sql.com/docs/usage/data-access/shapes which are the main, more expressive way to control what data syncs on and off the local device, including where clauses, joins, include trees, etc.

These are both in development and due soon. From your comment, I think you’ve seen the shapes branch with where clauses and include trees already working, for example.

In the meantime, the shapes API over syncs the full table. This is temporary and obviously suboptimal but it means you can develop today using the shape APIs and still filter data you display using local queries. Then when the proper functionality lands, the sync will become more fine grained and optimal without your app code needing to change.

Hope that makes sense. We’re very much not a full table sync system. Our role is to provide the best possible model for controlling dynamic partial replication (and to maintain integrity across replication boundaries).

Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by Anticlockwise on Thursday December 07, 2023 @11:45PM (#38565559)
I cannot imagine advocating for using shapes as they currently exist for an access control use case. Shapes may limit what the user can see in the app, but I've now put all of my other users data on this user's device! No way can I pass a security audit with that.
Re:Show HN: Bi-directional Postgres<>SQLite sync for offline... by prawnstar on Friday December 01, 2023 @02:31AM (#38484142)
Hey there's a comparison of the two here https://powersync.com/blog/electricsql-vs-powersync