it-swarm.com.de

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

Ich habe an einem neuen Projekt gearbeitet, bei dem 7 Datenbanken verwendet werden müssen, und argumentiert, dass Leistung, Stabilität und Optimierung einfacher zu implementieren sind.

Obwohl ich nicht einverstanden bin, habe ich Probleme, gute Argumente für die Verwendung einer einzelnen Datenbank zu sammeln (Aufteilung 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- und Nachteile für die Verwendung einer einzelnen oder mehrerer Datenbanken?

[Zusammenfassung bisher]

Argumente gegen mehrere Datenbanken:

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

  • Verlust der Wiederherstellungsintegrität

  • Komplexität gewinnen (Datenbankbenutzer/Rollen)

  • Server/Datenbank mit kleinen Gewinnchancen fallen aus

Lösungen:

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

  • POC: Verwenden Sie Dummy-Daten, um den Punkt in den Ausführungsplänen von 7/1 db zu beweisen

14
rdkleine

Keine der Leistungen, Stabilität, Optimierung sind wahr. Hat jemand ein solides Argument oder einen Referenzartikel, warum dies wahr wäre?

Ressourcen werden keiner Datenbank zugewiesen: Die SQL Server-Instanz gleicht die Ressourcen so aus, dass sie kein Unterschied ergibt

Du verlierst:

  • datenintegrität
  • integrität wiederherstellen (Daten in DB7 werden später als DB1 sein)

Sie gewinnen an Komplexität:

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

Optionen:

  • das Aufteilen einer Datenbank auf separate Festplatten kann mit Dateigruppen erfolgen
  • verwenden Sie Schemata, um Daten logisch zu trennen (basierend auf anderen Antworten).
16
gbn

Wenn Sie die Daten nach logischen Domänen aufgeteilt haben, können Sie immer versuchen, Schemas in SQL2008 zu verwenden (weg von der Standardeinstellung von dbo.), Aber selbst das ist schmerzhaft und kann Probleme mit OR/Ms verursachen, die keine Non erwarten -Standardschema.

Ich war in der Lage, Daten aus mehr als einer Datenbank zu sammeln, und es ist schmerzhaft und alles andere als leistungsstark. Am Ende zwischenspeichern Sie Daten oder verwenden zumindest Tricks, um die Geschwindigkeit aufrechtzuerhalten.

Erstellen Sie als Test 7 Dummy-Datenbanken. Erstellen Sie eine Abfrage, für die gleichzeitig Daten von allen 7 oder zumindest einer guten Anzahl von ihnen erforderlich sind.

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

6
CResults

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 Sicherungszeitpläne oder unterschiedliche Wiederherstellungsmodelle erfordern. Ein weiterer Grund wäre, wenn Sie sie auf verschiedenen Instanzen ausführen möchten.

Bei mehreren Datenbanken sind keine Leistungsoptimierungen verfügbar, die Sie nicht auch mit einer Datenbank erzielen können. Können Sie näher erläutern, was Sie unter "Leistung, Stabilität, Optimierung" verstehen?

6
nvogel

Gedankenexperiment: Teilen Sie Ihre Datenbank nicht in sieben Teile, sondern in 7.000 Teile. Wie hoch ist die Wahrscheinlichkeit, dass sich ein Hardwarefehler auf Ihre Anwendung auswirkt? Wenn die Wahrscheinlichkeit, dass ein bestimmter Server an einem bestimmten Tag ausfällt, bei 0,1% liegt, sind Ihre Chancen besser oder schlechter, dass Sie von einem Hardwarefehler betroffen sind, wenn Sie die Anzahl der Computer 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 zur 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 mehrere Computer für Zuverlässigkeit und verbesserte Leistung verwenden möchten, können Sie diese möglicherweise so strukturieren, dass Sie über einen Master-Server mit mehreren Warm/Hot-Standby-Computern verfügen, auf denen auch Abfragen verteilt werden können. Auf diese Weise verlieren Sie keine Daten, wenn auf einem Computer ein Fehler auftritt, und im schlimmsten Fall müssen Sie eine Abfrage neu starten. Natürlich ist es komplexer als das, aber die Grundlagen gelten.

4
unpythonic

Ich stimme einer Datenbank zu und verwende stattdessen Datei- und Schemaoptionen.

Es gibt Edge-Fälle, in denen die Aufteilung in mehrere Teile sinnvoll ist.

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

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

Dies sind jedoch Support- und keine Leistungsprobleme.

2
Rawheiser