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

Praktyczność wielu baz danych na klienta a jedna baza danych

Tak, to możliwe i moja firma to robi. Z pewnością nie powiem, że to sprytne. Posiadamy system automatyzacji marketingu SAAS. Niektóre bazy danych klientów zawierają ponad milion rekordów. Mamy do czynienia z drugą „wspólną” bazą danych, która ma tabelę „spełnienia” śledzącą e-maile, listy, rozmowy telefoniczne itp. z ponad 4 milionami rekordów oraz licznymi innymi bardzo dużymi współdzielonymi tabelami. Przy odpowiednim indeksowaniu, optymalizacji, utrzymywaniu oddzielnego serwera tylko z bazą danych i ewentualnie klastrowaniu (czego jeszcze nie musimy) możesz obsłużyć DUŻO danych... w wielu przypadkach ci, którzy uważają, że może zarabiają tylko na kilkuset tysiącach płyt, pracując nad konkurencyjnym produktem. Jeśli nadal masz wątpliwości, czy jest to prawidłowe, weź pod uwagę, że według metryk klastrowania MySQL, klaster z 8 serwerami może obsłużyć 2,5 miliona aktualizacji NA SEKUNDĘ. Wcale nie za odrapany....

Problem z używaniem dwóch baz danych polega na żonglowaniu wieloma połączeniami. Czy to trudne? Nie, nie bardzo. Tworzysz różne obiekty i odwołujesz się do klas połączeń w oparciu o wybraną bazę danych. W naszym przypadku trafiamy do klasy firmy głównej bazy danych, aby wydedukować nazwę bazy danych klienta, a następnie na jej podstawie zbudować drugie połączenie. Ale kiedy żonglujesz tymi połączeniami tam iz powrotem, możesz napotkać błędy, które wymagają dodatkowego debugowania. Nie chodzi tylko o „Czy moje zapytanie jest prawidłowe?” ale „Czy rzeczywiście otrzymuję prawidłowe połączenie z bazą danych?” W naszym przypadku przerwana sesja może spowodować uruchomienie wszelkiego rodzaju błędów PDO, ponieważ system nie może już śledzić, do której bazy danych klientów ma dostęp. Dodatkowo, z punktu widzenia łatwości konserwacji, jest to przerażający proces, który próbuje przesłać aktualizacje struktury tabeli do 100 różnych baz danych na żywo. Tak, można to zautomatyzować. Ale jedna wpadka i powaliłeś DUŻO ludzi i wykonałeś mnóstwo dodatkowej pracy dla siebie. Teraz oblicz dodatkowy rozwój i testowanie wymagane do żonglowania połączeniami i wypychania aktualizacji… to będzie twoja miara, czy warto.

Moja rekomendacja? Znajdź hosta, który umożliwia umieszczenie dwóch komputerów w tej samej sieci lokalnej. Wybraliśmy Linode, ale nie ma znaczenia, kogo używasz. Zacznij od dedykowanego serwera bazy danych, zaplanuj z wyprzedzeniem klastrowanie, gdy będzie to konieczne. Przechowuj całą zawartość w jednej bazie danych, indeksuj i optymalizuj religijnie. Wreszcie znajdź NAPRAWDĘ dobrego DB i traktuj go dobrze. Przy tak dużej ilości danych, świetny DBA byłby koniecznością.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ZF2 oczyszcza zmienne dla zapytań DB

  2. Wstaw Mysql do 2 tabel

  3. Jak ustawić domyślną wartość MySQL DateTime ( nie TIMESTAMP ) na NOW() lub Current_DateTIme?

  4. Nie mogę załadować sterownika JDBC dla MySQL

  5. Zmiana warchara MySql z Latin1 na UTF8