Pourquoi avez-vous 3 bases de données avec les mêmes utilisateurs?
Que se passe-t-il si une base de données tombe en panne maintenant?
Je pose ces questions parce que le Con de la base de données utilisateur-source en baisse empêchant l'utilisation des deux autres bases de données peut ne pas être un gros problème qu'il n'y paraît.
De plus, si une base de données tombe en panne maintenant, vous aurez déjà des problèmes de cohérence si les utilisateurs sont modifiés dans les deux autres bases de données au cours de cette période. Je ne pense pas que nous puissions donner les meilleurs conseils sans plus de contexte.
En ce moment, je créerais une quatrième base de données pour les utilisateurs, apporterais des modifications uniquement là-bas et synchroniserais avec les autres bases de données. Vous êtes déjà distribué-dénormalisé en modifiant essentiellement les mêmes données à trois endroits, et vous avez probablement déjà des problèmes de cohérence. Si la tolérance aux pannes est importante, ce schéma donne toujours cela tout en résolvant le problème des entrées multiples.
Je pense qu'avoir cette quatrième base de données uniquement utilisateur / paramètres plutôt que d'utiliser l'une de vos existantes est une bonne stratégie car elle devient moins susceptible de baisser car elle n'est pas liée à d'autres ressources ou fortement utilisée. Je vois maintenant que vous avez dit que vous ne pouvez pas faire cela, mais je ne sais pas pourquoi. Les applications de la base de données principale prennent-elles directement en charge la modification par l'utilisateur, ou la modification par l'utilisateur est-elle une fonction complètement distincte qui peut être indiquée ailleurs?
Certes, avec cette idée de "table d'utilisateurs canonique" - que vous utilisiez des synonymes ou synchronisiez les données - vous ne pouvez pas modifier les utilisateurs pendant une base de données d'utilisateurs en panne, mais cela me semble correct. Résolvez le problème et remontez-le! Une source, un endroit pour éditer, une chose à réparer en cas de panne. Avec la synchronisation, toutes les autres bases de données ont des copies temporaires sur lesquelles elles peuvent travailler, mais pas d'édition. Minimiser la duplication des données entre les systèmes est un objectif formidable et utile. Il est très difficile de saisir les mêmes données à trois endroits, alors faites tout ce que vous pouvez pour éliminer cela.
Pour répondre à plus de vos commentaires, si vos ID utilisateur sont différents dans toutes vos applications, vous devez sérieusement envisager un temps d'arrêt planifié pour vos deux nouvelles bases de données afin de les synchroniser avec la principale (posez une question distincte si vous avez besoin d'idées sur la façon d'accomplir cela, ce qui est délicat mais pas vraiment difficile).
Si vous analysez les besoins de votre entreprise et constatez que la base de données principale doit avoir les données utilisateur correctes, vous les utilisez toujours comme canoniques, puis choisissez entre les synonymes ou la synchronisation pour déterminer comment les temps d'arrêt imprévus affectent toutes les bases de données.
Un autre inconvénient de l'utilisation de synonymes est que vous ne pourrez plus disposer de FK appropriés pour les utilisateurs dans chaque base de données.