Là où je travaille, nous avons un ESBauquel 6 applications différentes (ou devrais-je dire "points d'extrémité") sont connectées. Ces 6 applications fonctionnent avec 3 schémas Oracle différents sur 2 instances de base de données. Certaines de ces applications coexistent dans le même schéma non pas parce qu'elles sont liées mais parce que notre infrastructure de base de données est gérée par un fournisseur externe et obtenir un nouveau schéma prend juste une éternité (aussi, nous n'avons pas d'accès DBA bien sûr) ... prend vraiment tellement de temps qu'à un moment donné, nous avons pensé à réutiliser un schéma existant "temporairement" pour pouvoir continuer le développement. Pour appliquer la "séparation" des données, les noms de table sont préfixés, par exemple "CST_" pour le client. De plus, nous devons travailler avec un schéma qui, pour des raisons valables, nous ne pouvons pas changer complètement ... C'est étrange, je sais. Bien sûr, comme cela arrive toujours, "temporairement"
Nos différentes applications se connectent à leur schéma de base de données respectif et fonctionnent avec leurs propres packages PL / SQL et nous nous interdisons absolument d'interagir directement avec des tables / données qui sont en dehors de notre domaine d'application.
Lorsqu'une des applications connectées à l'ESB a besoin d'informations en dehors de son domaine, elle appelle le service associé sur l'ESB pour obtenir les données, même si ces informations sont en fait dans le même schéma, ne nécessitant en théorie qu'une petite instruction join dans l'une des requêtes SQL .
Nous le faisons afin de pouvoir diviser notre domaine d'application en différents schémas / bases de données, et pour que les services sur l'ESB fonctionnent toujours correctement quand cela se produit (c'est bientôt Noël, nous corsons les doigts)
Maintenant, cela peut sembler étrange et horrible de l'extérieur, mais il y a des raisons à cela et je voulais juste partager cette expérience concrète pour vous montrer qu'une ou plusieurs bases de données ne sont pas si importantes. Attends, ça l'est!, pour de nombreuses raisons (+1 pour Scott Whitlock, voir le dernier paragraphe sur la sauvegarde et tel que mya vous amène à des ennuis) Mais il est tout aussi important, je pense, d'avoir vos services SOA correctement conçus, du moins c'est mon avis, et je ne suis pas un DBA. En fin de compte, toutes vos bases de données appartiennent à votre "datawarehouse d'entreprise", non?
Enfin, je ne reformulerai pas le dernier paragraphe de Scott Whitlock, en particulier
Je ne séparerais pas les tables en différentes bases de données physiques simplement pour des raisons de séparation.
est vraiment super important. Ne le faites pas s'il n'y a aucune raison.