Perché hai 3 database con gli stessi utenti?
Cosa succede se un database si arresta adesso?
Sto ponendo queste domande perché il Con del database di origine utente che va in giù impedendo l'uso degli altri due database potrebbe non essere un problema così grande come sembra.
Inoltre, se un database si arresta ora, si avranno già problemi di coerenza se gli utenti vengono modificati negli altri due DB durante quel periodo. Non credo che possiamo dare il miglior consiglio senza più contesto.
In questo momento vorrei creare un quarto database per gli utenti, apportare modifiche solo lì e sincronizzarmi con gli altri database. Sei già distribuito-denormalizzato modificando essenzialmente gli stessi dati in tre punti e probabilmente hai già problemi di coerenza. Se la tolleranza agli errori è importante, questo schema lo fornisce ancora durante la risoluzione del problema di inserimento multiplo.
Penso che avere questo quarto database solo per utenti / impostazioni piuttosto che utilizzare uno dei tuoi database esistenti sia una buona strategia in quanto diventa meno probabile che vada giù poiché non è legato ad altre risorse o utilizzato pesantemente. Vedo ora che hai detto che non puoi farlo, ma non sono chiaro sul perché. Le applicazioni sul database principale supportano direttamente la modifica dell'utente o la modifica dell'utente è una funzione completamente separata che può essere indirizzata altrove?
È vero, con questa idea di "tabella utenti canonica", sia che si utilizzino sinonimi o si sincronizzino i dati, non è possibile modificare gli utenti durante un DB utente discendente, ma a me sembra giusto. Risolvi il problema e risolvilo! Una fonte, un posto da modificare, una cosa da riparare se rotta. Con la sincronizzazione, tutti gli altri database hanno copie temporanee da cui possono lavorare, ma nessuna modifica. Ridurre al minimo la duplicazione dei dati tra i sistemi è un obiettivo grande e utile. È un problema serio inserire gli stessi dati in tre punti, quindi fai tutto il possibile per eliminarli.
Per rispondere a più dei tuoi commenti, se i tuoi ID utente sono diversi in tutte le tue applicazioni, allora dovresti considerare seriamente un tempo di inattività pianificato per i tuoi due nuovi database per metterli in sincronia con quello principale (fai una domanda separata se hai bisogno di idee su come realizzare questo, che è difficile ma non è così difficile).
Se analizzi le tue esigenze aziendali e scopri che il database principale deve avere i dati dell'utente che vanno bene, lo usi comunque come canonico, quindi scegli tra sinonimi o sincronizzazione per affrontare l'impatto dei tempi di inattività non pianificati su tutti i database.
Un ulteriore svantaggio dell'uso dei sinonimi è che non si sarebbe più in grado di avere FK appropriati per gli utenti in ciascun database.