Vor- / Nachteile der Verwendung mehrerer Datenbanken gegenüber der Verwendung einer einzelnen Datenbank

14

Ich habe an einem neuen Projekt gearbeitet, das die Verwendung von 7 Datenbanken erfordert, und argumentiert, dass Leistung, Stabilität und Optimierung einfacher zu implementieren sind.

Obwohl ich nicht einverstanden bin, habe ich Probleme beim Sammeln guter Argumente für die Verwendung einer einzelnen Datenbank (Aufteilen der Tabellen in logische Domänen).

Ein Argument, das ich bisher habe, ist die Datenintegrität (ich kann keine Fremdschlüssel zwischen Datenbanken verwenden).

Was sind gute Vor- / Nachteile für die Verwendung einer einzelnen oder mehrerer Datenbanken?

[Zusammenfassung bisher]

Argumente gegen mehrere Datenbanken:

  • Datenintegrität verlieren (Fremdschlüssel können nicht über Datenbanken verwendet werden)

  • Die Integrität der Wiederherstellung geht verloren

  • Komplexität gewinnen (Datenbankbenutzer / -rollen)

  • Small Odds Server / Datenbank werden ausfallen

Lösungen:

  • Verwenden Sie Schemas, um Domänen zu trennen.

  • POC: Verwenden Sie Dummy-Daten, um den Sinn der Ausführungspläne von 7/1 db zu belegen

rdkleine
quelle
Dies ist ein komplexer Bereich, und es gibt Vor- und Nachteile - schauen Sie hier und Links innerhalb.
Vérace

Antworten:

16

Leistung, Stabilität und Optimierung stimmen nicht. Hat jemand ein solides Argument oder einen Referenzartikel, warum dies wahr wäre?

Ressourcen werden keiner Datenbank zugeordnet: Die SQL Server-Instanz gleicht Ressourcen aus, sodass dies keinen Unterschied macht

Du verlierst:

  • Datenintegrität
  • Integrität wiederherstellen (Daten in DB7 werden später sein als in DB1)

Sie gewinnen an Komplexität:

  • Sicherheit (Benutzer, Rollen usw.) muss in allen Datenbanken vorhanden sein
  • Sie werden einige Daten haben, die nicht gut in eine Datenbank passen

Optionen:

  • Das Aufteilen einer Datenbank auf separate Datenträger kann mit Dateigruppen erfolgen
  • Verwenden von Schemata zum logischen Trennen von Daten (basierend auf einer anderen Antwort)
gbn
quelle
6

Gute Gründe für die Erstellung separater Datenbanken wären die Unterstützung unterschiedlicher Verfügbarkeitsanforderungen oder die Vereinfachung der Verwaltung. Zum Beispiel, wenn Ihre Datenbanken sehr unterschiedliche Sicherungspläne oder Wiederherstellungsmodelle erfordern. Ein weiterer Grund wäre, wenn Sie sie auf verschiedenen Instanzen ausführen möchten.

Für mehrere Datenbanken sind keine Leistungsoptimierungen verfügbar, die Sie nicht auch mit einer Datenbank erzielen können. Können Sie genauer beschreiben, was Sie unter "Leistung, Stabilität, Optimierung" verstehen?

nvogel
quelle
Der Kunde hat die Details zu "Leistung, Stabilität und Optimierung" noch nicht erklärt. Ich bin auch neugierig auf diese Antwort. Ich werde ihn später in dieser Woche sprechen.
5

Wenn Sie die Daten nach logischen Domänen aufteilen, können Sie jederzeit die Verwendung von Schemata in SQL2008 prüfen (wobei die Standardeinstellung von dbo nicht mehr verwendet wird). Dies ist jedoch schmerzhaft und kann zu Problemen mit OR / Ms führen, die kein Non erwarten -Standardschema.

Ich war in der Lage, Daten aus mehr als einer Datenbank zusammenzustellen, und es ist schmerzhaft und alles andere als leistungsfähig. Am Ende zwischenspeichern Sie Daten oder verwenden zumindest Tricks, um die Geschwindigkeit zu halten.

Erstellen Sie als Test 7 Dummy-Datenbanken. Erstellen Sie eine Abfrage, die Daten von allen 7 gleichzeitig oder von mindestens einer guten Anzahl von ihnen erfordert.

Dann vergleichen Sie die Ausführungspläne! Ich denke, Sie werden Ihren Fall genau dort gewinnen.


quelle
Meine Idee ist (in der Tat), Schemas für logische Domänen zu verwenden. Wird auch Entity Data Models verwenden. Als Alternative werde ich die 8 Dummy-
4

Gedankenexperiment: Anstatt Ihre Datenbank in sieben Teile zu teilen, teilen Sie sie stattdessen in 7.000 Teile. Wie hoch ist die Wahrscheinlichkeit, dass sich ein Hardwarefehler auf Ihre Anwendung auswirkt? Wenn eine Wahrscheinlichkeit von 0,1% besteht, dass ein bestimmter Server an einem bestimmten Tag ausfällt, sind Ihre Chancen besser oder schlechter, dass Sie von einem Hardwareausfall betroffen sind, wenn Sie die Anzahl der Maschinen erhöhen, von denen Sie abhängig sind?

Ich denke, es ist wichtig, den Begriff "Datenbank" in zwei Teile zu teilen: das Schema und die Daten im Vergleich zu der Hardware, die zur Bereitstellung der Daten verwendet wird.

Das Aufteilen der Datenbank auf mehrere Computer nützt Ihnen aus den vielen Gründen, die in den anderen Antworten in diesem Thema erläutert werden, nichts.

Wenn Sie aus Gründen der Zuverlässigkeit und Leistungssteigerung mehrere Computer verwenden, können Sie diese möglicherweise so strukturieren, dass Sie einen Master-Server mit mehreren Warm- / Hot-Standby-Computern haben, auf denen sich auch Abfragen verteilen lassen. Auf diese Weise verlieren Sie keine Daten, wenn auf einem Computer ein Fehler auftritt. Im schlimmsten Fall müssen Sie eine Abfrage neu starten. Natürlich ist es komplexer als das, aber die Grundlagen treffen zu.

unpythonisch
quelle
2

Ich stimme mit einer Datenbank überein und verwende stattdessen Datei- und Schemaoptionen.

Es gibt Randfälle, in denen eine Aufteilung in mehrere Teile sinnvoll ist.

Anwendungsumgebungskonfiguration (dev, test, prod), z. B. FTP-Server, Exportdateipfade usw., Inhalte, die Sie pro Server speichern möchten und die bei einer Wiederherstellung nicht überschrieben werden.

Auch als Möglichkeit, kundenspezifische Verfahrensänderungen zu isolieren.

Dies sind jedoch Support- und keine Leistungsprobleme.

Rawheiser
quelle