[HN Gopher] LiteSync - Easy synchronization of SQLite databases ___________________________________________________________________ LiteSync - Easy synchronization of SQLite databases Author : thunderbong Score : 43 points Date : 2023-01-05 19:34 UTC (3 hours ago) (HTM) web link (litesync.io) (TXT) w3m dump (litesync.io) | somedude82 wrote: | then there is https://github.com/benbjohnson/litestream | mtlynch wrote: | Litestream is one-way replication, so it can't sync across | multiple writers. | | LiteFS is Ben Johnson's newer project that does SQLite | synchronization across nodes: | https://github.com/superfly/litefs | PreInternet01 wrote: | I'm not entirely opposed to a commercial product, but the list of | documented limitations does not make me reach for my wallet just | yet: | | 1. Avoid using functions that return different values each time | they are called, like random() and date('now') | | 2. AUTOINCREMENT keyword is not supported | | 3. We must use just a single connection to each database file. Do | not let many apps access the same database file. Each instance | must use its own db file, and then they will be replicated and | synchronized using LiteSync | | There are definitely obvious technical reasons for these, but it | may make using the product for existing apps pretty much | impossible. | | Also worrisome is the lack, at least anywhere in the examples, of | authentication parameters on the (proprietary, I guess?) TCP | replication protocol, and no mention of over-the-wire encryption. | jitl wrote: | RANDOM and NOW you can easily do in application space. | | AUTOINCREMENT you can replace in application space with nanoid, | or similar semi-random ordered ID. | | These practices are standard if you're creating any data | offline on clients or syncing two ways. | LamaOfRuin wrote: | Also no mention of how it handles conflicting transactions from | separate nodes. | avtar wrote: | > 3. We must use just a single connection to each database | file. Do not let many apps access the same database file. Each | instance must use its own db file | | Isn't this a sqlite limitation? | sebastien_b wrote: | There are file locking mechanisms you can opt into (compile | time options) to have multi-process access to the same | database file - it does require either some coordination | and/or more error handling, especially when writing to the | database. | samwillis wrote: | As LiteSync used eventual consistency AUTOINCREMENT isn't | possible. You would have collisions when a node come back on | after what they are calling "Airplane Mode". | | I suspect the issue with random() and date('now') similarly are | they it will replay transactions on other nodes, and these | would return different values. Obviously they could design the | system to save the values for returning when replaying a | transaction if they decided it was necessary. | | I haven't looked in detail, but I'm suspicious they are using | the SQLite Session extension: | https://www.sqlite.org/sessionintro.html | sebastien_b wrote: | > _I haven 't looked in detail, but I'm suspicious they are | using the SQLite Session extension: | https://www.sqlite.org/sessionintro.html_ | | Having used the Session extension extensively, from reading | the info this would also be my conclusion (makes no use if | it, which to me makes little sense). | sebastien_b wrote: | Also makes no mention about schema changes. | NelsonMinar wrote: | $750 for a one time company license plus extra for dedicated | support. | | Who's behind this? The pages say they are copyright Gensis | Sistemas LTDA but I can't find anything else by that name. | | What tech is this? There's no licensing information in the | download. sqlite doesn't require any attribution. I think | litestream does, so maybe they're not using it? | ricardobeat wrote: | They have a similar product at https://litereplica.io, and that | one has an About Us page: https://litereplica.io/company.html | jitl wrote: | There's a free CRDT based SQLite sync system. It's for a | different use-case -- local first software including peer to peer | sync use-case. | | https://github.com/vlcn-io/cr-sqlite | | 51 days ago: https://news.ycombinator.com/item?id=33606311 | [deleted] | endisneigh wrote: | I'd be more interested in a managed SQLite database accessible | through the web. Basically Hasura but for SQLite. | adolph wrote: | Like running redbean on someone else's computer? | | _redbean embeds Lua, SQLite, and MbedTLS into a fork() driven | application server that benchmarks at 1.1 million qps on a | personal computer._ | | https://redbean.dev/ | | https://www.youtube.com/watch?v=1ZTRb-2DZGs | [deleted] | feldrim wrote: | Rqlite[0] does not use SQLite API but it handles replication too. | | 0. https://github.com/rqlite/rqlite | WFHRenaissance wrote: | Lol isn't this just Litestream? | samwillis wrote: | Lightstream is single node only, effectively a remote WAL for | point in time recovery, this is multi-node and eventually | consistent. You can write to nodes while they are "off line" | and sync later. | | This is geared towards, say, having an application running on a | device on an airplane, maybe a passenger CRM. You can have it | run and update the DB while in the air with no connection, the | DB will then sync with main node once on the ground with a | connection. ___________________________________________________________________ (page generated 2023-01-05 23:00 UTC)