Database per service jfisser li kull microservice jkollu d-databse privata tiegħu stess, u l-ebda servizz ieħor m'għandu jista' jaqra jew jikteb fiha direktament. Servizzi oħra għandhom jmorru permezz tal-API tas-servizz li jmillek id-databse.
Kif taħdem
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Orders │ │ Payments │ │ Users │
│ service │ │ service │ │ service │
└────┬─────┘ └────┬─────┘ └────┬─────┘
▼ ▼ ▼
ordersDB paymentsDB usersDB ← private, no cross-access
Ikk Orders bħala eżempju jeħtieġ data tal-user, it-tella l-Users API — mhux jaqra usersDB direktament.
Għalxiex inforзaw
- Loose coupling — servizz jista' jibdel ix-schema tiegħu liberament.
- Independent deployment — l-ebda migrazzjonijiet ta' schema maqsuma bejn it-timijiet.
- Għażla ta' teknoloġija — servizz wieħed juża Postgres, ieħor juża MongoDB.
Il-prezz
With no shared DB:
✗ no cross-service JOINs
✗ no single ACID transaction across services
→ need API composition, replication, or sagas instead
Pitfall
A shared database huwa l-anti-pattern klassiku — ixabbat siltament imqabbel servizzi sabiex m'għadhom jistgħu jiddeplojaw indipendentement.
Għalxiex importanti
Id-databse privati huma x'attwalment jagħmlu s-servizzi indipendenti; qasam databse u għandek distribwit monolith.
Il-prezz huwa li joins u transazzjonijiet issa jestenduhom fuq servizzi, li jforza patterns bħal sagas u eventual consistency — trade deliberat għall-autonomija.
