Nous construisons une plate-forme Web qui intègre plusieurs services, chacun avec ses propres données sous-jacentes. Ces services sont construits indépendamment selon les principes de l' architecture orientée services , mais ils traitent avec des données potentiellement liées. Nous nous demandons si ces services devraient partager une grande base de données ou chacun avoir sa propre base de données. (Nous prévoyons d'utiliser SQL Server 2008 Enterprise sur un cluster Windows 2008.)
Certains des avantages de chaque approche que nous avons déjà examinés comprennent:
Base de données unique
- La mise en relation des données de différents services peut être liée par des contraintes de clé étrangère
- Les extraits analytiques sont plus simples à écrire et plus rapides à exécuter
- En cas de sinistre, il est plus facile de restaurer la plate-forme dans un état cohérent
- Pour les données référencées par plusieurs services, les données mises en cache par un service sont susceptibles d'être utilisées peu de temps après par un autre service
- L'administration et la surveillance sont plus simples et moins chères au départ
Bases de données multiples
- Les travaux de maintenance, les problèmes matériels, les failles de sécurité, etc. n'ont pas nécessairement un impact sur l'ensemble de la plateforme
- En supposant que chaque base de données se trouve sur un matériel distinct, la mise à l'échelle de plusieurs machines offre plus d'avantages en termes de performances que la mise à l'échelle d'une grande machine
D'un point de vue opérationnel, est-il plus avantageux que chaque service de cette plateforme obtienne sa propre base de données, ou qu'ils se retrouvent tous dans la même base de données? Quels facteurs clés éclairent une réponse à cette question?