Last Updated: June 8, 2026
Splitting services is easier than splitting data. A system can have many services, repos, and teams, but still behave like a monolith if they all share the same database.
The database-per-service pattern gives each service ownership of its own data. Other services cannot read or write that database directly. They must go through the owning service’s API.
This chapter covers why data ownership matters, the cost of sharing databases, and how to query across services without cross-service joins.