|
|
|
|
|
by DrScientist
1008 days ago
|
|
Whether it's method calls or database schema - isn't what really matters is control of what's accessible and the tools you have to support evolution? So when you provide an API - you don't make all functions in your code available - just carefully selected ones. If you use the DB schema as a contract you simply do the same - you don't let people access all functions - just the views/tables they need/you can support. Just like API's, databases have tools to allow you to evolve - for example, maintaining views that keep a contract while changing the underlying schema. In the end - if your schema dramatically changes - in particular changes like 1:1 relation moving to a 1:many - it's pretty hard to stop that rippling throughout your entire stack - however many layers you have. |
|
What are the database tools for access logs, metrics on throughput, latency, tracing etc.? Not to mention other topics like A/B tests, shadow traffic, authorization, input validation, maintaining invariants across multiple rows or even tables...
Databases often either have no tools for this or they are not quite as good.