Comment by henrikschroder
6 months ago
> A database that's accessed by multiple applications, regardless of the number of languages, is a really bad smell.
Except that really was the original model back in the 90's. All "good" databases had an extensive roles and permissions system, and a point of pride was the number of ODBC connectors for different languages and environments.
You were supposed to have The Database, looked after and controlled by the hallowed DBAs, who had their own hardware budget, their own organization, and who controlled access to The Database, giving trusted applications access to it, but only after they had vetted the schema and queries that those dirty developers wanted to run against it. Trusted users could get SELECT access, but only to the tables they needed to run their custom reports and queries.
It was a whole ass thing that's fallen completely to the wayside as database software went from underpinning Larry's latest mega-yacht, to free as in beer, and we learned how to clone and shard the data instead.
Now we write graphql adapters over dozens of microservices to get back the capability to express queries and lessen the burden of hardcoding every possible query for frontend. N+1 is just more fun at the party and with a bit of effort you can make basic queries depend on the health of almost every service in your infrastructure.
If you squint at it wrong, it looks like some kind of bizarre and inhumane jobs program.
Meanwhile, transactions remain forgotten lore. Simply not achievable at our current tech level.