2009-08-25 6 views
5

Mögliche Duplizieren:
Why would I ever choose to store and manipulate XML in a relational database?Wann möchten Sie XML in einer relationalen Datenbank speichern?

Obwohl diese Frage auf der Oberfläche erscheint eine Neuauflage dessen, was bereits ist vorher gefragt worden, ich werde vorne eben, bis dass es nicht ist. Meine Frage ist nicht, wie XML aus einer relationalen Datenbank gespeichert oder abgerufen werden soll. Die vorliegende Frage ist viel fundamentaler als das:

Welche Art von Daten speichern Sie normalerweise in XML-Format in Ihrer Datenbank? Was sind Ihre Designentscheidungen dafür? Sind Sie bereit, den relationalen Aspekt Ihrer Datenbank aufzugeben, indem Sie bestimmte Teile Ihres Modells in einen XML-Klappentext einfügen? Dinge wie Präferenzen oder Konfigurationsdateien können als XML in einer relationalen Datenbank gespeichert werden, aber sollten Sie es tun?

+4

Dupe von http://stackoverflow.com/questions/184727/why-would-ie-e-choose-to-store-and-manipulate-xml-in-a-relational-database unter andere –

Antwort

2

Meine Erfahrung mit dem Speichern von XML in einer relationalen Datenbank speichert normalerweise serialisierte Objekte entweder für historische Zwecke oder als Teil einer Persistenzstrategie mit der Annahme, dass ich diese XML später abrufen und in ein Objekt rehydrieren werde.

0

Ich neige dazu, xml bloks (oder andere undurchsichtige Daten wie json serialized) zu speichern, wenn die Daten selbst keine Beziehungen haben müssen.

2

Der einzige Grund, IMHO, um XML in eine Datenbank zu setzen, ist, wenn Sie die Daten mit Ihrem Projekt interagieren, bearbeiten oder ändern müssen. Wenn Sie die XML-Daten einfach lesen und verwenden, werfen Sie sie einfach in eine Datei. Aber wenn diese Daten mit der Anwendung geändert oder hinzugefügt werden, ist es besser, eine DB dafür zu verwenden, und Sie brauchen wirklich überhaupt kein XML, da die Tabelle die Struktur der Daten beschreibt.

0

Ich verwende diese Bedingungen zum Speichern von XML-Daten in einer Datenbank.

  1. Ich habe nicht die Zeit hat, die relationalen Tabellen zu entwickeln (wirklich, beginne ich manchmal auf diese Weise aus nur einen Prototyp, um aufzustehen und Laufen).

  2. Die Daten sind viel zu groß und komplex in der Struktur in Tabellen ohne erheblichen Aufwand zu brechen

Im Allgemeinen ich relationalen Daten in der Datenbank speichern möchten, aber sich vorstellen, ich habe ein Objekt, das alle repräsentiert die Daten, die benötigt werden, um eine Webseite zu rendern (ich bedeute alles, Schriften, Bilder), es wird unglaublich komplex sein, es in einer Tabellenstruktur speichern, wird dazu dienen, mich nur Maintenace-Probleme beizulegen - die Struktur ist fließend. Es würde auch Probleme bei der Abfrage verursachen - stellen Sie sich die Anzahl der Joins vor, die ich tun müsste, und die Zeit, die es dauern würde.

1

Ihr Code möchte XML-Daten auf folgende Weise verarbeiten:

  1. Nur in der Datenbank bestehen, alles tun, um die Verarbeitung in der Business-Schicht, z.B. eine Warteschlange oder ein Audit-Trail von SOAP-Nachrichten zu/von einem Web-Service. Dazu würde ich eine einfache Textspalte verwenden.
  2. Behalten Sie es in der Datenbank und führen Sie gelegentliche Abfragen in der Datenbankschicht, z. ein XHTML-Dokument, das Benutzer durchsuchen können. Dazu würde ich den Datentyp xml in SQL Server 2005 oder höher oder das Äquivalent in anderen DBMS verwenden.
  3. Vollständige komplexe relationale Abfragen in der Datenbankschicht, z. ein Blob relationaler Daten, der lediglich in XML serialisiert wurde und nun in seiner richtigen Form gespeichert werden muss.Dies wäre offensichtlich in dem Satz von Tabellen gespeichert, der mit der deserialisierten Datenstruktur übereinstimmt.
3

Niemals.

Das Speichern von Daten, für die eine erkennbare Struktur als XML vorliegt, anstatt als relationale Daten, bedeutet, die Macht der relationalen Algebra aufzugeben, um mit diesen Daten zu arbeiten.

Wenn das Ihre Absicht ist, in Ordnung, aber dann seien Sie einfach ehrlich und einfach nicht stören, ein relationales DBMS überhaupt zu verwenden, nur dump Ihre XML in einer lokalen/Pseudolocal-Datei.

(Beachten Sie, dass alles, was in einem Dateisystem gespeichert ist, auch eine Datenbank ist, also bedeutet es nicht, dass Sie "keine Datenbank verwenden". Sie verwenden nur eine, die relational verwaltet wird, was sehr Ihr ist Absicht zu booten.)

+0

Obwohl ich Ihnen in den meisten Fällen zustimme, gibt es Situationen, in denen Sie XML in einer SQL-Datenbank speichern können, wenn relationale Macht nicht benötigt wird, wie von den anderen Leuten, die diese Frage beantwortet haben, gezeigt wurde. Dieser Beitrag enthält weitere Informationen: http://nativexmldatabase.com/2010/09/28/5-reasons-for-storing-xml-in-a-database/ – Fabio

Verwandte Themen