Pamiętam z podcastów stackoverflow, że Fog Creek korzysta z bazy danych dla klienta Fogbugz . Zakładam, że oznacza to, że serwery Fogbugz na żądanie mają 10 tysięcy baz danych.
Właśnie zaczynamy opracowywać aplikację internetową i mamy podobny problem do rozwiązania (wielu klientów z własnymi odizolowanymi danymi).
Jakich problemów należy się spodziewać przy korzystaniu z bazy danych na klienta? Jak mogę je rozwiązać?
Moje początkowe myśli
Zalety bazy danych na klienta
- Prostszy schemat bazy danych
- Prostsze kopie zapasowe - możesz tworzyć kopie zapasowe dla każdego klienta po kolei, bez faktycznego wpływu na innych klientów.
- Ułatwia eksport danych danego klienta.
- Lepsza wydajność pamięci podręcznej - zapis do jednej z bardziej aktywnych tabel wpływa tylko na jednego klienta, który wykonał zapis.
- Łatwiej skalować na różnych urządzeniach. Na przykład, gdy musimy przejść z 1 do 2 serwerów, po prostu przenosimy połowę naszych klientów na nowy serwer.
Niedogodności
- Czy MySQL może poradzić sobie z 5000 bazami danych? Czy wydajność byłaby do bani?
- Zmiany w schemacie mogą być trudne do zreplikowania we wszystkich bazach danych. Naprawdę musielibyśmy mieć do tego zautomatyzowany plan, taki jak wersjonowanie schematu i skrypt, który rozumie, jak przenieść bazę danych z jednej wersji do drugiej.
- Robienie czegokolwiek wspólnego dla wszystkich naszych klientów może być niezręczne lub niemożliwe
- Podobnie jak powyżej, ale wszelkie analizy, które chcemy przeprowadzić dla wszystkich naszych klientów, mogą być niemożliwe. Jak na przykład powinniśmy śledzić wykorzystanie przez wszystkich klientów?
USE CompanyData;