Stiamo costruendo una piattaforma web che incorpora più servizi, ognuno con i propri dati sottostanti. Questi servizi vengono creati indipendentemente seguendo i principi dell'architettura orientata ai servizi , ma effettuano transazioni con dati potenzialmente correlati. Stiamo valutando se questi servizi debbano condividere un grande database o ognuno abbia il proprio database. (Stiamo pianificando di utilizzare SQL Server 2008 Enterprise su un cluster Windows 2008.)
Alcuni dei vantaggi di ogni approccio che abbiamo già considerato includono:
Database singolo
- I dati correlati da servizi diversi possono essere associati da vincoli di chiave esterna
- Gli estratti analitici sono più semplici da scrivere e più veloci da eseguire
- In caso di disastro, è più semplice ripristinare la piattaforma in uno stato coerente
- Per i dati a cui fanno riferimento più servizi, è probabile che i dati memorizzati nella cache da un servizio vengano utilizzati poco dopo da un altro servizio
- L'amministrazione e il monitoraggio sono più semplici ed economici in anticipo
Database multipli
- Lavori di manutenzione, problemi hardware, violazioni della sicurezza e così via non incidono necessariamente sull'intera piattaforma
- Supponendo che ciascun database si trovi su un hardware separato, il ridimensionamento di più macchine offre maggiori vantaggi in termini di prestazioni rispetto al ridimensionamento di un grande
Dal punto di vista operativo, è più vantaggioso che ogni servizio in questa piattaforma ottenga il proprio database o che vadano tutti nello stesso database? Quali fattori chiave informano una risposta a questa domanda?