3 Stimmen

Verwendung einer großen Datenbank oder einzelner Datenbanken pro Kunde

Derzeit arbeite ich an einer Online-Webanwendung für Baumaterialien. Unternehmen können sich auf unserer Website anmelden und dann die Webanwendung nutzen.

Von Anfang an war die Idee, eine Datenbank pro Kunde zu erstellen. Aber jetzt werden es immer mehr (100+), so dass wir jetzt 100 Datenbanken zu verwalten haben.

Wir müssen etwa zweimal im Jahr ein Update-Skript für die Datenbankwartung ausführen.

Der Vorteil, den ich sehe, ist, dass wir, wenn ein Kunde kündigen will, seine Datenbank löschen und dann ist es vorbei.

Wenn ich einen neuen Kunden hinzufügen möchte, muss ich die Datenbank mit ca. 1.000.000 eindeutigen Datensätzen für diesen spezifischen Kunden füllen, da jeder Kunde unterschiedliche Preise/Materialien hat.

Für Backups verwende ich ein MySQL-Dump-Skript, das für jede Datenbank eine *.sql-Datei erstellt, die ich jeden Tag herunterlade.

Was ist Ihre Meinung und was halten Sie davon? Eine große Datenbank oder pro Kunde eine Datenbank?

Ich verwende MySQL mit ASP.NET/C#...

3voto

Hogan Punkte 65759

Aber jetzt wird sie immer größer (100+), so dass wir jetzt 100 Datenbanken verwalten müssen.

Ich glaube, da haben Sie Ihre Antwort schon.

3voto

Frank V Punkte 24349

Ich möchte keinen Vorschlag machen, weil es viel zu viele Variablen gibt.

Ich möchte jedoch anmerken, dass mein Arbeitgeber Tausende von Datenbanken im Einsatz hat - wir verwenden eine Datenbank pro Kunde mit Replikation (2+ Datenbanken).

Die Idee ist also realisierbar. Meine Arbeit hat nichts mit DB-Management zu tun, aber ich erinnere mich, dass wir viel mit Automatisierung und Online-Tools arbeiten. Backups und DB-Management werden von einem Team durchgeführt.

Letztendlich werden Sie kann Damit die mehr als 100 Einsätze funktionieren, müssen Sie jedoch in die Entwicklung von Dienstprogrammen und Tools investieren, um die Sicherung und/oder Verwaltung der DBs zu automatisieren.

Idealerweise sollte nichts (DB-Management) von Hand gemacht werden. Darüber hinaus sollten die Verbindungsstrings von einer bestimmten Webapplikation abstrahiert werden.

1voto

John Parker Punkte 53226

Ich muss @Hogan zustimmen - der Aufwand für die Verwaltung so vieler Datenbanken ist wahrscheinlich alles andere als ideal - vor allem, wenn Sie in Zukunft einmal Schemaänderungen usw. vornehmen müssen.

Wenn Sie eine einzige Datenbank verwenden, werden Sie dann jemals die Daten eines bestimmten Kunden in eine eigenständige Datenbank/Site auslagern müssen? Falls dies der Fall sein sollte, wie lange würde es dauern, diese Trennung vorzunehmen?

Wenn es weniger Aufwand bedeutet, eine Reihe von Werkzeugen zu schreiben, um den oben genannten Fall zu behandeln, dann wäre ich versucht, den Ansatz mit einer einzigen Datenbank zu wählen. Allerdings müssen Sie auch den wahrscheinlichen Zeitrahmen für die Erstellung einer einheitlichen Version der Datenbankschemata berücksichtigen, die die Datensätze für jeden Kunden verarbeiten usw.

Sind die Schemata auch genau die gleichen für tous der über 100 bestehenden Datenbanken? Wenn nicht, kann es sehr schmerzhaft werden, wenn Sie sich entscheiden, die vorhandenen Daten in eine einzige Datenbank zu migrieren.

Update - Im Übrigen ist das alles ein wenig verallgemeinert, aber es ist schwer, etwas Genaues zu sagen, wenn man nicht mehr über die Datenmenge, den Datenverkehr usw. weiß, die verwendet werden. (z. B.: Wenn Sie jemals eine stark nachgefragte Website für einen Kunden hatten, wäre es trivial, diese auf einen eigenen DB-Server zu legen, wenn Sie eine Datenbank pro Kunde verwenden würden).

0voto

Randy Punkte 16242

Ich stimme @Hogan und @middaparke zu... wenn die Schemata die gleichen sind, sollten Sie sie in eine Instanz einfügen.

Leider ist es unmöglich, von hier aus zu sagen, ob Ihre Schemata von der Wiederverwendung der meisten dieser Millionen Zeilen profitieren würden oder nicht, wenn sie gut normalisiert sind, wäre es auf jeden Fall von Vorteil.

Es ist auch unmöglich zu sagen, wie schwierig eine Änderung der Anwendungen aufgrund dieser Änderung sein würde.

Leider klingt es so, als hätten Sie einen großen Kundenstamm mit funktionierenden Anwendungen und daher den Impuls, in diese Richtung weiterzugehen - was Sie in den Bereich des Aufsaugens und des Umgangs damit bringt, indem Sie die Verwaltung so vieler Datenbanken automatisieren... nicht die Art und Weise, wie Sie es von Grund auf tun würden - aber vielleicht am billigsten, da Sie dort sind, wo Sie sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X