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

PHP-Webanwendung:Frage zu Best Practices für das Design von MySQL-Datenbanken

Ich habe mit dem Datenbankarchitekten von wordpress.com, dem Hosting-Service für WordPress, gesprochen. Er sagte, dass sie mit einer Datenbank begonnen haben, in der alle Kunden zusammen gehostet werden. Der Inhalt einer einzelnen Blog-Site ist schließlich nicht so viel. Es liegt auf der Hand, dass eine einzelne Datenbank besser zu verwalten ist.

Dies funktionierte gut für sie, bis sie Hunderte und Tausende von Kunden hatten und erkannten, dass sie skalieren mussten , die mehrere physische Server betreiben und auf jedem Server eine Teilmenge ihrer Kunden hosten. Wenn sie einen Server hinzufügen, wäre es einfach, einzelne Kunden auf den neuen Server zu migrieren, aber schwieriger, Daten innerhalb einer einzelnen Datenbank zu trennen, die zum Blog eines einzelnen Kunden gehört.

Da Kunden kommen und gehen und die Blogs einiger Kunden ein hohes Aktivitätsvolumen aufweisen, während andere veraltet sind, wird die Neuverteilung über mehrere Server zu einer noch komplexeren Wartungsaufgabe. Die Überwachung von Größe und Aktivität pro einzelner Datenbank ist ebenfalls einfacher.

Ebenso eine Datenbank sichern oder wiederherstellen einer einzelnen Datenbank mit Daten im Terrabyte-Bereich im Vergleich zu einzelnen Datenbank-Backups und -Wiederherstellungen von jeweils wenigen Megabyte ist ein wichtiger Faktor. Stellen Sie sich vor:Ein Kunde ruft an und sagt, dass seine Daten aufgrund einer fehlerhaften Dateneingabe von SNAFU erfasst wurden, und könnten Sie bitte die Daten aus der gestrigen Sicherung wiederherstellen? Wie würden Sie einen wiederherstellen? Kundendaten, wenn sich alle Ihre Kunden eine einzige Datenbank teilen?

Schließlich entschieden sie sich für die Aufteilung in eine separate Datenbank pro Kunde , obwohl komplex zu verwalten, bot ihnen größere Flexibilität und sie haben ihren Hosting-Service auf dieses Modell umgestellt.

Also, während von einer Datenmodellierung Perspektive scheint es richtig zu sein, alles in einer einzigen Datenbank zu halten, etwas Datenbankverwaltung Aufgaben werden einfacher, wenn Sie einen bestimmten Haltepunkt des Datenvolumens überschreiten.