I’ll offer counter-arguments to some specific bits here, as my time allows:
Which is to be done by middleware, probably via API(s) (not necessarily WEB/REST APIs); plus, these should be rare enough, compared to the volume of day-to-day data querying from the actual core application(s).
backup/restore (system management in general) much more complex
Not quite, no. Unless one insists on doing it manually all the time, without any sort of scripting or automating.
structural changes to tables have to be performed across 170 separate databases
… and can/should be automated, too.
Authentication and *basic* authorization is to be done via a separate module.
A middleware implementation will allow for management, reporting, data querying (a la SEDE) and similar needs. And it is to reside outside the core
repository.
…Which is, in fact, why I named the repository core
in the first place. Not everything goes in core
. “Core Q&A” implementation goes.
I’ve implemented proof-of-concepts using both approaches and my honest assessment is that managing a SiteId
/ CommunityId
FK column (as demonstrated in this minimalist diagram) and its related constraints is a painful technical complexity in itself. The additional constraint checking imposes additional taxing on the DB engine as well.
There will be complexity with the separate DB approach too, implementing the middleware, background jobs and whatever else. As an integrations specialist, I certainly know that. It just happens to appear, to me, that such complexity makes a lot more sense here.
I can try and compile/enumerate all of the reasons why I strongly believe that to be true (not today, though - still a little bit swamped with managing other parts of the project - but in 1-3 days, likely¹), but maybe the point made by some of you fellows in the above posts about the vast majority of the data being site-specific is already a strong enough argument.
Oh, and I’m currently exchanging ideas and experiences with our fellow advisor @sklivvz, and it’s been most insightful so far. I’ll share whatever pieces of that conversation he allows me to with you folks here
¹: hopefully by that time I can have a couple more diagrams to share - architecture and infrastructure - not to mention we have a talk scheduled for Sunday which will perhaps allow for substantial improvements to technical documentation.