Dlaczego masz 3 bazy danych z tymi samymi użytkownikami?
Co się stanie, jeśli jedna baza danych ulegnie awarii?
Zadaję te pytania, ponieważ spadek bazy danych użytkownika uniemożliwiający korzystanie z dwóch pozostałych baz danych może nie być tak dużym problemem, jak się wydaje.
Dodatkowo, jeśli baza danych ulegnie awarii, będziesz mieć już problemy ze spójnością, jeśli użytkownicy zostaną zmodyfikowani w pozostałych dwóch bazach danych w tym okresie. Nie sądzę, że możemy udzielić najlepszej porady bez większego kontekstu.
W tej chwili utworzę czwartą bazę danych dla użytkowników, wprowadzę zmiany tylko tam i zsynchronizuję inne bazy danych. Jesteś już zdecentralizowany, zmieniając zasadniczo te same dane w trzech miejscach i prawdopodobnie masz już problemy ze spójnością. Jeśli tolerancja na uszkodzenia jest ważna, ten schemat nadal daje to podczas rozwiązywania problemu wielokrotnego wejścia.
Myślę, że posiadanie czwartej bazy danych tylko dla użytkowników / ustawień zamiast jednej z istniejących jest dobrą strategią, ponieważ jest mniej prawdopodobne, że ulegnie awarii, ponieważ nie jest związana z innymi zasobami lub jest intensywnie używana. Widzę teraz, że powiedziałeś, że nie możesz tego zrobić, ale nie jestem pewien, dlaczego. Czy aplikacje w głównej bazie danych obsługują edycję użytkownika bezpośrednio, czy też użytkownik edytuje całkowicie oddzielną funkcję, którą można wskazać w innym miejscu?
To prawda, że dzięki tej idei „kanonicznej tabeli użytkowników” - bez względu na to, czy używasz synonimów, czy synchronizujesz dane - nie możesz modyfikować użytkowników podczas niedziałającej bazy danych użytkownika, ale wydaje mi się to w porządku. Napraw problem i przywołaj go! Jedno źródło, jedno miejsce do edycji, jedna rzecz do naprawy, jeśli jest zepsuta. Dzięki synchronizacji wszystkie inne bazy danych mają tymczasowe kopie, z których mogą pracować, ale bez edycji. Minimalizacja duplikacji danych w różnych systemach jest doskonałym i użytecznym celem. Wprowadzanie tych samych danych w trzech miejscach jest poważnym problemem, więc zrób wszystko, co możesz, aby to wyeliminować.
Aby odpowiedzieć na więcej komentarzy, jeśli Twoje identyfikatory użytkowników są różne we wszystkich aplikacjach, powinieneś poważnie rozważyć planowany czas przestoju dwóch nowych baz danych, aby zsynchronizować je z główną (z osobnym pytaniem, jeśli potrzebujesz pomysłów jak to osiągnąć, co jest trudne, ale wcale NIE TAKIE trudne).
Jeśli przeanalizujesz potrzeby biznesowe i stwierdzisz, że główna baza danych musi mieć prawidłowe dane użytkownika, nadal używasz jej jako kanonicznej, a następnie wybierasz między synonimami lub synchronizacją, aby określić, w jaki sposób nieplanowane przestoje wpływają na wszystkie bazy danych.
Dodatkową wadą używania synonimów jest to, że nie byłoby już możliwe posiadanie odpowiednich FK dla użytkowników w każdej bazie danych.