2 Stimmen

Welche Nachteile hat die Konsolidierung von Datenbanken?

Was sind die Nachteile einer Konsolidierung der beiden Datenbanken zu einer Datenbank mit zwei Schemata in einem Unternehmen, das zwei Anwendungen mit jeweils einer eigenen Oracle-Datenbankinstanz hat?

Backups und die Replikation der Datenbank sind wahrscheinlich größer und langsamer. Was noch?

Einige Hintergrundinformationen:

Die beiden Datenbanken sind die "goldene Quelle" für ihre jeweiligen Daten. Beide sind für den Betrieb des Unternehmens von entscheidender Bedeutung und werden von mehreren Anwendungen, Tools und Berichten genutzt (wobei jede Datenbank im Wesentlichen einer Anwendung "gehört"). Die Notwendigkeit, Daten zwischen den Datenbanken zu verknüpfen, um Entitäten in der einen mit Entitäten in der anderen in Beziehung zu setzen, tritt häufig auf. Aus diesem Grund gibt es DB-Links, die beide miteinander verbinden, und einige datenbankübergreifende materialisierte Ansichten, um die Leistung zu verbessern. Es gibt Bestrebungen, die Datenduplikation zu reduzieren, und diese materialisierten Ansichten werden derzeit diskutiert. Einige in der Organisation wollen DB-Links und materialisierte Ansichten abschaffen und mehr Webdienste einführen, um die Daten anwendungsübergreifend verfügbar zu machen. Ich habe die Befürchtung, dass es zu viele Situationen gibt, in denen komplexe Datenverknüpfungen zwischen den beiden Datenbanken erforderlich sind, so dass Dienste, die die Daten offenlegen, nicht funktionieren werden. Ein anderer Ansatz zur Reduzierung von DB-Links und materialisierten Ansichten ist die Konsolidierung der Schemata in einer Datenbank, aber ich möchte sicherstellen, dass ich keine kritischen Nachteile dieses Ansatzes übersehe.

1voto

Könnte etwas mit den Lizenzkosten zu tun haben - Skalierung nach oben vs. Skalierung nach unten.

1voto

HLGEM Punkte 91543

Die größte Sorge, die ich haben würde, ist, dass Ihr gesamter Code neu geschrieben werden muss, um die neue Datenbank und die Schemata zu berücksichtigen. Oder zumindest überarbeitet werden. Dadurch können neue Fehler auftreten. Ich weiß nicht, wie Oracle mit Verweisen auf verschiedene Datenbanken umgeht, daher verwende ich ein Beispiel, bei dem ich die SQL Server-Syntax verwende. Wenn ich eine Verbindung zu zwei Tabellen auf demselben Server in verschiedenen Datenbanken herstellen würde, würde mein Select etwa so aussehen:

SELECT a.feld1, b.feld2 FROM datenbank1.dbo.tabelle1 a JOIN datenbank2.dbo.tabelle2 b ON a.myid = b.myFK

Um Ihre neue konsolidierte Idee zu verwirklichen, würden Sie schreiben wollen:

SELECT a.feld1, b.feld2 FROM schema1.tabelle1 a JOIN schema2.tabelle2 b ON a.myid = b.myFK

Sie müssen jetzt besonders auf Tabellen achten, die in beiden Datenbanken denselben Namen haben, da dies zu einigen heimtückischen Fehlern führen kann.

Beachten Sie, dass dies keine schwierigen Änderungen sind, aber das gesamte SQL, das auf Ihre Datenbank zugreift, muss überprüft werden, um zu sehen, ob es funktioniert oder angepasst wird, falls nicht.

Ich bin mir nicht sicher, ob es ausreicht, sie in dieselbe Datenbank zu stellen. Möglicherweise müssen Sie einige Tabellen konsolidieren, um die Duplizierung in verschiedenen Anwendungen zu vermeiden. (In diesem Fall fügen Sie Felder hinzu, um auf die alten ID-Nummern für Dinge zu verweisen, die die Leute gewohnt sind, nach der ID zu suchen, wie z. B. person_id, die auf alten Papieren auftauchen kann, damit sie recherchiert werden können).

Wenn Sie diesen Weg einschlagen, empfehle ich Ihnen dringend, ein Buch über das Refactoring von Datenbanken zu lesen, bevor Sie entscheiden, wie Sie entwerfen.

1voto

Vincent Malgrat Punkte 65127

In einer einzigen konsolidierten Datenbank verlieren Sie aus DBA-Sicht etwas an Flexibilität:

  • Eine Datenbank kann natürlich nur eine Version haben (z. B. 10.2.0.5), was bedeutet, dass Upgrades und Patches alle Schemata betreffen - dies kann im Falle einer Nichtübereinstimmung der Anforderungen von Anwendungen mehrerer Anbieter eine schlechte Sache sein.
  • Ebenso können einige Verwaltungsaufgaben (Wiederherstellung der Datenbank A zum Zeitpunkt t) mit einer einzigen Datenbank komplizierter sein.

Insgesamt werden Sie weniger Verwaltungsaufgaben haben (ein einziges Backup, ein einziges Parcheando...), aber jede Aufgabe wird kritischer sein, da sie eine globale Wirkung haben wird.


Auf der Entwicklungsseite ist auf Namensraumkollisionen zu achten: Einige Funktionen sind z. B. für eine einzige Datenbank global:

  • Verzeichnisse,
  • öffentliche Synonyme,
  • DB-Link
  • Schemata

Das bedeutet, dass Sie einiges an Arbeit vor sich haben, wenn Sie zwei Datenbanken konsolidieren wollen, die öffentliche Synonyme mit demselben Namen haben, die auf zwei verschiedene Dinge verweisen.

1voto

codewrath Punkte 51

Seine schwer zu sagen, nur durch die Informationen zur Verfügung gestellt, groß in db Welt wäre 100gb oder mehr, so 2 dbs wäre 200GB. wenn beide db sind nicht größer als 100GB dann Größe sollte nicht ein großer Faktor bei der Entscheidung, Replikation und Synchronisation kann auf Änderungen nur getan werden und Backups sollte nicht ein großer Unterschied sein (wieder hängt dies auf Besonderheiten wie, wenn Backups durchgeführt werden oder wenn Ausfallzeiten möglich ist oder Backups während Nicht-Spitzenzeiten durchgeführt werden) Andere Faktoren als diese sind: Namenskollisionen in DBOs wie Schlüssel, Fremdschlüsselnamen, Tabellennamen usw. Einige Umbenennungen von Tabellen, auch Namen von Speicherverfahren.

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