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
Antworten:
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:
Sie gewinnen an Komplexität:
Optionen:
quelle
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?
quelle
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
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.
quelle
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.
quelle