27. April 2007

XML ... oder nicht XML ...?

In den letzten Tagen und Wochen war ich recht häufig an Diskussionen rund um das Thema XML in der Datenbank beteiligt. Ab und zu kommt die Idee auf, XML-Dokumente auch als solche in der Datenbank zu speichern ... Dann tun sich Fragen auf, wie ...
  • Speichert man die XML-Dokumente als solche (XMLTYPE) ...?
  • Oder verteilt man die Inhalte eher auf gewöhnliche relationale Tabellen ...?
  • Welche Vorteile bietet die Speicherung als XMLTYPE ...?
Nun, um es vorwegzunehmen: XML ist meiner Meinung nach in erster Linie ein Datenaustauschformat, keine Modellierungssprache. Insofern stellt sich die Frage nach einer Datenmodellierung in XML eigentlich eher nicht. Eine Speicherung im XML-Format in der Datenbank (XMLTYPE) ist aus meiner Sicht vor allem aus einem Grund interessant: Die Daten liegen als XML vor, sollen so gespeichert und auch als XML wieder abgerufen werden. Dann bietet XMLTYPE einen großen Vorteil: Das XML-Dokument wird "nativ" gespeichert, d.h. beim Abrufen aus der Datenbank gehen keine relevanten Informationen (Kommentare, Reihenfolge der Tags, Processing Instructions) . Dies bezieht sich auf die Semantik des XML-Dokumentes. Es können durchaus Zeilenumbrüche fehlen oder aus einem kann ein werden - dies hat auf die Semantik des XML-Dokumentes keine Auswirkungen. Das sog. XML-Datenmodell wird jedoch vollständig wiederhergestellt. Wenn das XML-Format nach Speicherung der Daten in der Datenbank dagegen nicht mehr interessant ist oder sogar auf einem bestehenden Datenmodell gearbeitet werden soll, gibt es auch keinen Grund, die Daten als XML zu speichern. Das gilt übrigens auch, wenn die Daten zwar als XML, aber in einer ganz anderen XML-Struktur wieder ausgelesen werden sollen. Denn das Erzeugen von XML-Dokumenten aus relationalen Strukturen ist sehr einfach und auch noch extrem performant. http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb13gen.htm#sthref1492 Wenn man also über die native Speicherung von XML in einer Datenbank nachdenkt, sollte die erste Frage also sein, ob genau diese XML-Dokumente, die man da speichern möchte, genau so wieder ausgelesen werden sollen. Wenn dies überhaupt kein Thema ist, kann eine XML-Speicherung zwar immer noch (für Teilbereiche) interessant sein, man muss beim Datenmodell dann aber noch etwas mehr tun ... Mehr zum Thema im nächsten Post ... zu diesem Thema bin ich an Kommentaren, Meinungen oder Erfahrungen natürlich sehr interessiert ...

Keine Kommentare:

Beliebte Postings