Ich erinnere mich an die Stackoverflow-Podcasts, dass Fog Creek eine Datenbank pro Kunde für Fogbugz verwendet . Ich gehe davon aus, dass die Fogbugz On Demand-Server Zehntausende von Datenbanken haben.
Wir fangen gerade an, eine Web-App zu entwickeln und haben ein ähnliches Problem zu lösen (viele Kunden mit ihren eigenen isolierten Daten).
Mit welchen Problemen sollte ich bei der Verwendung einer Datenbank pro Kunde rechnen? Wie kann ich sie lösen?
Meine ersten Gedanken
Vorteile einer Datenbank pro Kunde
- Einfacheres Datenbankschema
- Einfachere Backups - Sie können jeden Kunden einzeln sichern, ohne dass dies Auswirkungen auf andere Kunden hat.
- Erleichtert den Export von Kundendaten.
- Bessere Cache-Leistung - Ein Schreibvorgang in eine der aktiveren Tabellen wirkt sich nur auf den einzelnen Kunden aus, der den Schreibvorgang ausgeführt hat.
- Einfachere Hardware-Skalierung. Wenn wir beispielsweise von 1 auf 2 Server wechseln müssen, verschieben wir nur die Hälfte unserer Kunden auf den neuen Server.
Nachteile
- Kann MySQL mit 5.000 Datenbanken umgehen? Würde Leistung scheiße sein?
- Es kann schwierig sein, Änderungen am Schema in allen Datenbanken zu replizieren. Wir müssten dafür wirklich einen automatisierten Plan haben, wie zum Beispiel die Versionierung des Schemas und ein Skript, das versteht, wie eine Datenbank von einer Version in eine andere übertragen wird.
- Etwas zu tun, was allen unseren Kunden gemeinsam ist, kann umständlich oder unmöglich sein
- Ähnlich wie oben, aber Analysen, die wir für alle unsere Kunden durchführen möchten, sind möglicherweise unmöglich. Wie sollten wir zum Beispiel die Nutzung für alle Kunden verfolgen?
USE CompanyData;