So I <i>just</i> fell down the rabbit hole of figuring out how to use SQLite with Ceph (turns out a thing called libcephsqlite[0][1] exists) -- awesome to see this new take on distributed SQLite.<p>The caveats for dqlite and rqlite always felt kind of awkward/risky to me -- in stark contrast to SQLite which is so stable/"built in" that you don't think about it's failure modes. Having to worry about what exactly I ran (ex. RANDOM()) was just a non-starter (IIRC rqlite has this problem but not dqlite? or the other way around -- one replicates at statement level the other at WAL level).<p>That said though, the biggest sticking point with all this SQLite goodness is how to make sure that certain libraries (any popular extension -- vsv, spatialite, libcephsqlite) were loaded for any application using SQLite -- there seem to be only a few options:<p>- calling load_extension[2] from code (this is somewhat frowned upon, but maybe it's fine)<p>- LD_PRELOAD (mvsqlite does this)<p>- Building your own SQLite and swapping out shared libs (mvqslite <i>also</i> does this, because statically compiled sqlite is a nuisance)<p>- Trapping/catching calls to dlopen (also basically requires LD_PRELOAD, but I guess you could go custom kernel or whatever)<p>This is probably the one big wart of SQLite -- it's a bit difficult to pull in new interesting extensions.<p>I also found this hack[3] which looks <i>quite</i> interesting for building something more general/reusable...<p>[EDIT] - Also while I'm here, I think FDB is probably one of the most under-rated massive-scale NoSQL databases right now. It gets nearly no press (to be fair because it went closed then open again), but it's casually a massive force behind Apple's services at scale.<p>[0]: <a href="https://docs.ceph.com/en/latest/rados/api/libcephsqlite/" rel="nofollow">https://docs.ceph.com/en/latest/rados/api/libcephsqlite/</a><p>[1]: <a href="https://github.com/rook/rook/issues/10689" rel="nofollow">https://github.com/rook/rook/issues/10689</a><p>[2]: <a href="https://www.sqlite.org/lang_corefunc.html#load_extension" rel="nofollow">https://www.sqlite.org/lang_corefunc.html#load_extension</a><p>[3]: <a href="https://github.com/cventers/sqlite3-preload" rel="nofollow">https://github.com/cventers/sqlite3-preload</a>