Unsurprisingly they were wrong. It was small, but sqlite couldn't handle multiple users. I believe this was before sqlite had WAL support, so reading would lock the DB. The 'solution' was to split the sqlite database into many smaller DBs that would allow users to use the site at the same time as long as they were in different areas. This greatly added to the complexity of the application. Some reports would need to access multiple databases to get what it needed, so it would still lock out people. Complexity was much higher then having all the data in a single postgresql/mysql database. All the users hated the system and often ran into DB lock issues.
> sqlite explicitly says that it is not meant for client-server configuration
They are right and their advice should be heeded.
https://blog.expensify.com/2018/01/08/scaling-sqlite-to-4m-q...
Basically an Redis module that embed SQLite, I offer replication on the PRO version, if you want to try it out you can download the trial version for free.
If the trial version is not enough, send me an email and we could work something out ;)
customer: name, ...., version = 1
update customer: name, ...., version = 2
and sync manually. Now I use a log/event sourcing like setup, where every write to the BD is also stored in a log table and sync from there. Much better!
...which is itself a special case of an audit trail or log: https://en.wikipedia.org/wiki/Audit_trail
The issue with any application-based approach is of course that it can't provide total access mediation.