Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Praktikabilität mehrerer Datenbanken pro Client im Vergleich zu einer Datenbank

Ja, es ist möglich und meine Firma macht es. Ich werde sicherlich nicht sagen, dass es schlau ist. Wir haben ein SAAS-Marketing-Automatisierungssystem. Die Datenbanken einiger Kunden enthalten mehr als 1 Million Datensätze. Wir haben es mit einer zweiten „gemeinsamen“ Datenbank zu tun, die eine „Erfüllungs“-Tabelle enthält, in der E-Mails, Briefe, Telefonanrufe usw. mit über 4 Millionen Datensätzen nachverfolgt werden, sowie zahlreiche andere sehr große gemeinsam genutzte Tabellen. Mit der richtigen Indizierung, Optimierung, Wartung eines separaten Nur-DB-Servers und möglicherweise Clustering (was wir noch nicht tun müssen) können Sie eine Menge Daten verarbeiten ... in vielen Fällen diejenigen, die glauben, dass dies möglich ist nur ein paar hunderttausend Schallplatten bearbeiten, um ihren Lebensunterhalt mit einem Konkurrenzprodukt zu verdienen. Wenn Sie immer noch Zweifel haben, ob es gültig ist, bedenken Sie, dass ein 8-Server-Cluster gemäß den Clustering-Metriken von MySQL 2,5 Millionen Aktualisierungen PRO SEKUNDE verarbeiten kann. Überhaupt nicht zu schäbig.....

Das Problem bei der Verwendung von zwei Datenbanken besteht darin, mehrere Verbindungen zu jonglieren. Ist es hart? Nein nicht wirklich. Sie erstellen verschiedene Objekte und verweisen auf Ihre Verbindungsklassen basierend auf der gewünschten Datenbank. In unserem Fall treffen wir die Unternehmensklasse der Hauptdatenbank, um den Namen der Client-Datenbank abzuleiten, und bauen dann basierend darauf die zweite Verbindung auf. Aber wenn Sie diese Verbindungen hin und her jonglieren, können Sie auf Fehler stoßen, die zusätzliches Debuggen erfordern. Es ist nicht nur "Ist meine Abfrage gültig?" aber "Bekomme ich tatsächlich die richtige Datenbankverbindung?" In unserem Fall kann eine unterbrochene Sitzung dazu führen, dass alle möglichen PDO-Fehler ausgelöst werden, da das System nicht mehr verfolgen kann, auf welche Client-Datenbank zugegriffen werden soll. Außerdem ist es aus Sicht der Wartbarkeit ein beängstigender Prozess, Tabellenstrukturaktualisierungen auf 100 verschiedene Live-Datenbanken zu übertragen. Ja, es kann automatisiert werden. Aber ein Ausrutscher und Sie haben eine Menge Leute niedergeschlagen und sich selbst eine Menge zusätzlicher Arbeit gemacht. Berechnen Sie jetzt die zusätzliche Entwicklung und das Testen, die erforderlich sind, um Verbindungen zu jonglieren und Updates zu pushen....das wird Ihr Maß dafür sein, ob es sich lohnt.

Meine Empfehlung? Suchen Sie einen Host, der es Ihnen ermöglicht, zwei Maschinen in dasselbe lokale Netzwerk zu stellen. Wir haben uns für Linode entschieden, aber wen Sie verwenden, ist irrelevant. Beginnen Sie mit Ihrem dedizierten Datenbankserver und planen Sie Clustering im Voraus, wenn es erforderlich ist. Bewahren Sie alle Ihre Inhalte in einer DB auf, indizieren und optimieren Sie religiös. Finden Sie endlich einen WIRKLICH guten DB-Typen und behandeln Sie ihn gut. Bei so vielen Daten wäre ein hervorragender DBA ein Muss.