Warum haben Sie 3 Datenbanken mit den gleichen Benutzern?
Was passiert, wenn eine Datenbank jetzt ausfällt?
Ich stelle diese Fragen, weil die Nachteile der Benutzerquellendatenbank, die die Verwendung der anderen beiden Datenbanken verhindern, möglicherweise nicht so groß sind, wie es sich anhört.
Wenn eine Datenbank jetzt ausfällt, treten bereits Konsistenzprobleme auf, wenn Benutzer in diesem Zeitraum in den anderen beiden DBs geändert werden. Ich denke nicht, dass wir den besten Rat geben können, ohne mehr Kontext.
Im Moment würde ich eine vierte Datenbank für Benutzer erstellen, Änderungen nur dort vornehmen und die anderen Datenbanken synchronisieren. Sie sind bereits verteilt-denormalisiert, indem Sie im Wesentlichen dieselben Daten an drei Stellen ändern, und haben wahrscheinlich bereits Konsistenzprobleme. Wenn Fehlertoleranz wichtig ist, gibt dieses Schema dies bei der Lösung des Mehrfacheintragungsproblems immer noch an.
Ich denke, dass es eine gute Strategie ist, diese vierte Datenbank nur für Benutzer / Einstellungen zu haben, anstatt eine Ihrer vorhandenen zu verwenden, da es weniger wahrscheinlich ist, dass sie ausfällt, da sie nicht an andere Ressourcen gebunden ist oder stark genutzt wird. Ich sehe jetzt, dass du gesagt hast, dass du das nicht kannst, aber ich weiß nicht warum. Unterstützen die Anwendungen in der Hauptdatenbank die direkte Bearbeitung durch Benutzer oder ist die Bearbeitung durch Benutzer eine völlig separate Funktion, auf die an anderer Stelle verwiesen werden kann?
Richtig, mit dieser Idee der "kanonischen Benutzertabelle" - ob Sie Synonyme verwenden oder die Daten synchronisieren - können Sie keine Benutzer während einer heruntergefahrenen Benutzer-DB ändern, aber das scheint mir in Ordnung zu sein. Beheben Sie das Problem und bringen Sie es zur Sprache! Eine Quelle, ein Ort zum Bearbeiten, eine Sache zum Reparieren, wenn sie kaputt ist. Bei der Synchronisierung verfügen alle anderen Datenbanken über temporäre Kopien, aus denen sie arbeiten können, aber keine Bearbeitung. Das Minimieren der Datenduplizierung zwischen Systemen ist ein großes und nützliches Ziel. Es ist ein ernstes Problem, dieselben Daten an drei Stellen einzugeben. Tun Sie also alles, um dies zu beseitigen.
Wenn Ihre Benutzer-IDs in all Ihren Anwendungen unterschiedlich sind, sollten Sie ernsthaft über eine geplante Ausfallzeit für die beiden neuen Datenbanken nachdenken, um sie mit der Hauptdatenbank zu synchronisieren. Wenn Sie Ideen benötigen, stellen Sie eine separate Frage darüber, wie dies zu erreichen ist, was schwierig, aber nicht wirklich so schwer ist).
Wenn Sie Ihre Geschäftsanforderungen analysieren und feststellen, dass die Hauptdatenbank die Benutzerdaten enthalten muss, die in Ordnung sind, verwenden Sie sie dennoch als kanonisch. Wählen Sie dann zwischen Synonymen oder Synchronisierung, um zu ermitteln, wie sich ungeplante Ausfallzeiten auf alle Datenbanken auswirken.
Ein weiterer Nachteil bei der Verwendung von Synonymen ist, dass Sie nicht mehr in der Lage sind, den Benutzern in jeder Datenbank die richtigen FKs zuzuweisen.