▲ | phamilton 5 days ago | ||||||||||||||||
I'm sad this project fizzled: https://github.com/losfair/mvsqlite It had the fascinating property of being a full multi-writer SQL engine when using Page Level Conflict Checking. Even more fascinating: every single client itself becomes a writer. | |||||||||||||||||
▲ | ncruces 5 days ago | parent | next [-] | ||||||||||||||||
The way they got multi-writer working is a bit too adventurous for me. It involves fiddling the database header to ensure you can keep track of the read-set from the VFS layer, by convincing SQLite to drop its page cache at the start of every transaction. Other than that, a MVCC VFS is relatively straightforward. Here's an in-memory experiment if a few hundred lines of Go: https://github.com/ncruces/go-sqlite3/blob/v0.29.0/vfs/mvcc/... I haven't settled on what's a good storage layer for something like this. | |||||||||||||||||
| |||||||||||||||||
▲ | andersmurphy 5 days ago | parent | prev [-] | ||||||||||||||||
But for scale you don't want multiple writers. You want a single writer so that you can batch. |