Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Potrzebuję zaktualizować moją bazę danych aplikacji pojedynczego użytkownika, aby umożliwić wielu użytkownikom, jak zmodyfikować schemat bazy danych?

Wielu klientów; jedna aplikacja hostowana. Opisujesz wielodostępną bazę danych.

Tworząc wielodostępną bazę danych, należy wziąć pod uwagę

  • zapytania
  • koszt
  • izolacja i ochrona danych
  • konserwacja i
  • odzyskiwanie po awarii.

Rozwiązania dla wielu dzierżawców obejmują zakres od jednej bazy danych na dzierżawcę (brak współużytkowania) do jednego wiersza na dzierżawę (wszystko współużytkowane).

„Nic nie udostępnione”, „oddzielna baza danych” lub jedna baza danych na dzierżawcę

  • Najdroższy na klienta. (Duża liczba klientów oznacza dużą liczbę serwerów.)
  • Najwyższy stopień izolacji danych.
  • Odzyskiwanie po awarii dla jednego dzierżawcy jest proste i proste.
  • Konserwacja jest teoretycznie trudniej, bo zmiany trzeba przeprowadzić w każdej bazie danych. Ale Twoje dbm mogą z łatwością obsługiwać uruchamianie procedur składowanych w każdej bazie danych. (SQL Server ma nieudokumentowaną systemową procedurę składowaną, na przykład sp_msforeachdb. Prawdopodobnie możesz napisać własną.) „Nic współdzielone” jest również najłatwiejsze do dostosowania, ale powoduje to również więcej problemów z konserwacją.
  • Najniższa liczba wierszy w tabeli. Szybkość zapytań jest prawie optymalna.

„Wszystko udostępnione”, „schemat udostępniony” lub „jedna baza danych na planetę”

  • Najniższa cena na najemcę.
  • Najniższy stopień izolacji danych. Każda tabela ma kolumnę, która identyfikuje, do której dzierżawy należy dany wiersz. Ponieważ wiersze najemców są mieszane w każdej tabeli, stosunkowo łatwo jest przypadkowo ujawnić dane innych najemców.
  • Odzyskiwanie po awarii dla jednego dzierżawcy jest stosunkowo skomplikowane; musisz przywrócić poszczególne wiersze w wielu tabelach.
  • Konserwacja strukturalna jest prostsza, biorąc pod uwagę, że wszyscy najemcy współdzielą tabele. Zwiększa jednak obciążenie komunikacyjne, ponieważ musisz komunikować się i koordynować każdą zmianę z każdym najemcą. Nie można go łatwo dostosować.
  • Najwyższa liczba wierszy w tabeli. Szybkie wykonywanie zapytań jest trudniejsze, ale zależy to od liczby najemców i liczby wierszy. Możesz łatwo przejść na terytorium VLDB.

Między „nic nie współdzielonym” a „wszystkim współdzielonym” znajduje się „schemat współdzielony”.

„Udostępniony schemat”

  • Dzierżawcy współużytkują bazę danych, ale każdy dzierżawca ma swój własny nazwany schemat. Koszt mieści się między „nic nie dzielone” a „wszystko dzielone”; duże systemy zwykle potrzebują mniej serwerów niż „nic nie współdzielone”, więcej serwerów niż „wszystko współdzielone”.
  • O wiele lepsza izolacja niż „wspólne wszystko”. Nie tyle izolacji, co „nic nie dzielone”. (Możesz PRZYZNAĆ i ODWOŁAĆ uprawnienia do schematów.)
  • Odzyskiwanie po awarii dla jednego dzierżawcy wymaga przywrócenia jednego z wielu schematów. Jest to albo stosunkowo łatwe, albo dość trudne, w zależności od twoich dbms.
  • Konserwacja jest łatwiejsza niż „nic nie współdzielone”; nie tak łatwe, jak „wspólne wszystko”. Napisanie procedury składowanej, która będzie wykonywana w każdym schemacie w bazie danych, jest stosunkowo proste. Łatwiej jest udostępniać wspólne tabele najemcom niż z „nic nie współdzielonym”.
  • Zazwyczaj więcej aktywnych najemców na serwer niż „nic nie współdzielone”, co oznacza, że ​​współdzielą (degradują) więcej zasobów. Ale nie tak źle, jak „udostępniono wszystko”.

Microsoft ma dobry artykuł na temat architektury wielodostępnej więcej szczegółów. (Link prowadzi tylko do jednej strony wielostronicowego dokumentu).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego wiersze miałyby się zgadzać, ale nie byłyby zmieniane za pomocą instrukcji aktualizacji mysql?

  2. Transpozycja dynamicznych kolumn do wierszy

  3. 4 sposoby na wyświetlenie listy wszystkich tabel w bazie danych MySQL

  4. Tworzenie kolumny sumy skumulowanej w MySQL

  5. Zapytanie MySQL Wybierz, SUMA, POŁĄCZENIE LEWE