2009-06-06 8 views
12

Welche Best Practices gelten für die referenzielle Integrität in mehreren Datenbanken? da keine integrierten Funktionen vorhanden sindReferenzielle Integrität in mehreren Datenbanken beibehalten

Oder ist es besser, eine einzelne Datenbank zu partitionieren?

Aktualisieren Siehe Kevins Beispiel unten. das ist meine Situation. Meine Inventardatenbank enthält Tabellen, die auf die Mitarbeiter-ID in der Mitarbeiterdatenbank verweisen.

Diese Datenbanken werden derzeit an verschiedenen Standorten (verschiedene Server) gehalten

Antwort

5

Mit 2k05/2k08 ist es definitiv besser, eine einzelne Datenbank zu partitionieren. Sie haben alle Vorteile, Daten wie in mehreren Datenbanken zu speichern, während Sie die Funktionen einer einzelnen Datenbank wie Fremdschlüssel verwenden können.

Davon abgesehen, sollten Sie nicht alles in einer einzigen Datenbank halten. Wenn Gruppentabellen nicht zusammenpassen, teile ich sie normalerweise logisch in ihre eigenen Datenbanken ein. Zum Beispiel würde ich nicht unbedingt eine Bestellsystemdatenbank und die Mitarbeiterverwaltungsdatenbank zusammenlegen. Ich nehme an, es könnte Gründe geben, dies zu tun, aber ich bin mir sicher, dass Sie meinen Sinn darin haben, Datenspeicher sinnvoll zu trennen.

Was Sie sehen sollten ist, wie stark die beiden Datenbanken interagieren. Wenn es viele Felder gibt, die Datenbanken miteinander verbinden würden, würde ich sagen, dass es wahrscheinlich eine gute Idee ist. Wenn es vielleicht ein oder zwei Felder sind, die sich mit dem Angestellten-Tisch verbinden, dann ist es vielleicht nicht wert, das zu tun. Ihre andere Option besteht darin, die erforderlichen Tabellen in die Inventardatenbank zu duplizieren, wenn die Anzahl der Joins gering ist, insbesondere wenn es sich um eine Tabelle handelt und die zwei vorhandenen Datenbanken groß und ziemlich komplex sind.

+0

das ist meine Situation. Meine Inventardatenbank enthält Tabellen, die auf die Mitarbeiter-ID in der Mitarbeiterdatenbank verweisen. Diese Datenbanken werden derzeit an verschiedenen Standorten verwaltet (verschiedene Server) –

0

ich es auf Ihre Bedürfnisse erraten hängt, aber ich würde wahrscheinlich zu einer einzigen Datenbank lehnen. Um dies über mehrere Datenbanken hinweg zu tun, benötigen Sie Unterstützung für verteilte Transaktionen.

1

Definitiv besser zu einer einzigen DB zu partitionieren. Wenn Sie es tun mussten, würden Auslöser helfen (yuck). Können Sie die Datenbank nicht einfach mithilfe von Schemas partitionieren (die Beispieldatenbank von AdventureWorks ist ein Beispiel)?

0

Sie könnten Trigger verwenden, um den Job zu erledigen, aber ....
Ich habe Angst, dass Sie eine enorme Menge an Zeit verbringen werden, um sicherzustellen, dass alles funktioniert. Eine einzelne Datenbank mit einigen partitionierten Tabellen könnte besser sein. Benötigen Sie tatsächlich mehrere Datenbanken oder nur eine Datenbank mit mehreren über physische Geräte verteilten Dateigruppen? Sie können diese Option auch in Erwägung ziehen. Matej

Verwandte Themen