Hi Eliot,
Free time is a rare resource nowadays; just some quick feedback:
I’ve done a read through of the current documentation at
https://docs.basex.org/ and also reviewed what I could find online and such. In the documentation I find a number of references to the “client/server” architecture but I’m not finding any particularly deep discussion of it, either in the docs or by searching on i.e., “basex client server”.
The best entry point may be Getting Started → Database Server [1].
When I started my Mirabel project I understood that the way to get
concurrency was to use multiple BaseX HTTP instances, which can make concurrent read requests on a single set of databases.
That’s dangerous (and has always been problematic). If you use have concurrent operations, you should have one central HTTP instance. Otherwise, you might run into concurrency issues and locked databases, as multiple JVMs cannot share their information among each other [2].
It may be difficult to give profound answers on the remaining questions in a few lines. Maybe others can share their experiences.
Best,
Christian
[1] https://docs.basex.org/12/Getting_Started [2] https://docs.basex.org/main/Startup#concurrent_operations