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ą.