| ▲ | sethev 6 days ago | ||||||||||||||||
This is just FUD. The reason SQLite does locking to begin with is to avoid data corruption. Almost every statement this blog post makes about concurrency in SQLite is wrong, so it's little surprise that their application doesn't do what they expect. >Who knows when those writes you scheduled really get written When a commit completes for a transaction, that transaction has been durably written. No mystery. That's true whether you decide to restrict writes to a single thread in your application or not. | |||||||||||||||||
| ▲ | catlifeonmars 6 days ago | parent | next [-] | ||||||||||||||||
> When a commit completes for a transaction, that transaction has been durably written. No mystery. That's true whether you decide to restrict writes to a single thread in your application or not. Usually this is true but there are edge cases for certain journaled file systems. IIRC sqlite.org has a discussion on this. | |||||||||||||||||
| |||||||||||||||||
| ▲ | mickeyp 6 days ago | parent | prev [-] | ||||||||||||||||
You are talking about low level stuff like syncing to the filesystem; that data is journalled and ensuring atomicity is maintained and I am in actual fact not. Dislocating DML from the code that triggers it creates many problems around ensuring proper data integrity and it divorces consistent reads of uncommitted data that you may want to tightly control before committing. By punting it to a dedicated writer you're removing the ability to ensure serialised modification of your data and the ability to cleanly react to integrity errors that may arise. If you don't need that? Go ahead. But it's not fud. We build relational acid compliant databases this way for a reason | |||||||||||||||||
| |||||||||||||||||