Vince: XML in Datenbank Mapping

Hallo,

welche Moeglichkeiten gibt es bei XML Speicherung in ein relationales Datenbankschema? Mir ist Instead-of-Trigger bekannt um das Mapping zu vollziehen. Welche Moeglichkeiten gibt es da noch und was sollte man beachten bzw. welche Vorteile u Nachteile gibts?

SQL-Loader wuerde mir noch einfallen als Moeglichkeit, aber denke das ist weniger fuer XML gedacht, oder?

Datenbank ist Oracle XE.

Danke u Gruss
Vince

  1. Was genau möchtest Du denn nun tun:

    welche Moeglichkeiten gibt es bei XML Speicherung in ein relationales Datenbankschema?

    Ein XML-Schema (XSD, so was ähnliches wie eine DTD) in ein Datenbank"schema" konvertieren; ein DDL-Skript erzeugen?

    ---

    Mir ist Instead-of-Trigger bekannt um das Mapping zu vollziehen. Welche Moeglichkeiten gibt es da noch und was sollte man beachten bzw. welche Vorteile u Nachteile gibts?

    Oder Daten ONLINE mittels DB-XML Funktionen konvertieren?

    ---

    SQL-Loader wuerde mir noch einfallen als Moeglichkeit, aber denke das ist weniger fuer XML gedacht, oder?

    Oder einen BULK-Import von XML-Daten implementieren?

    ---

    Oder suchst Du nur irgendeine Möglichkeit die XML-Daten in eine DB zu schreiben?

    Ist da noch eine weitere Schicht im Spiel; etwa Code in Shell, Perl, PHP, Python, C++, Ruby etc.... Geschriebenes?

    Auf welchen Platform(en) (Windows, Linux, andere UNIXe) soll sich das Ganze abspielen?

    Datenbank ist Oracle XE.

    "10g"(zu 10.2.0.1) nehme ich an.

    Single-Byte oder Unicode?

    Danke u Gruss
    Vince

    Grüsse

    Solkar

    1. Hi,

      ja, es geht mir nur darum die Daten in die Datenbank zu schreiben. Es ist keine weitere Schicht mehr dazwischen. Ablaufen soll das ganze auf Windows Server 2003. Die XML-Datei habe ich und die Daten aus dem Dokument moechte ich jetzt einfach auf bestmoeglichem Weg in die Datenbank schreiben. Instead-of-Trigger als Moeglichkeit kenne ich, aber welche gibts noch und wie sinnvoll sind diese?

      Danke

      Vince

      1. Hi,

        ja, es geht mir nur darum die Daten in die Datenbank zu schreiben.

        OK,

        dann bitte mal ein XML-Fragment für einen Datensatz ggf. zzgl. DTD und die Struktur der Tabelle (sqlplus : DESCRIBE <tablename>) posten

        Es ist keine weitere Schicht mehr dazwischen.

        Na ja, wenn Da GAR KEINE Schicht ist, geht's ja nur direkt in der DB... ;-)
        Aber mit "irgendwas" (IIS?) wirst Du den Ablauf ja starten wollen und da können wir ansetzen.

        Ablaufen soll das ganze auf Windows Server 2003.

        Dann sollte das mittels der "Microsoft Data Access Components (aka MDAC)" elegant realisierbar sein; ggf. im Verbund mit dem MS XML Parser.

        Das sind Sammlungen von COM-Komponenten, die somit mit verschiedenen Sprachen nutzbar sind.

        Die Versionsnummern der bei Dir installierten Pakete solltest Du feststellen:

        Hilfeseiten hierzu von Microsoft

        Ermitteln der MDAC-Version

        und

        Ermitteln Sie die Version des MSXML-Parsers, das auf einem Computer installiert wird

        Die XML-Datei habe ich und die Daten aus dem Dokument moechte ich jetzt einfach auf bestmoeglichem Weg in die Datenbank schreiben. Instead-of-Trigger als Moeglichkeit kenne ich, aber welche gibts noch und wie sinnvoll sind diese?

        XML - Untersützung in Datenbanken ist zwar zumindest "nice to have", aber es ist eine Skalierungs-Frage ob die zwei Schichten wirklich ineinander "verkleben" muss:

        Wenn der Datenbank - "Client" (der durchaus auch ein Web/Anwendungs - Server sein kann) auf einer anderen Maschine liegt und insb. keine BLOBS im Spiel sind und der "Client" viel Last hat kann man's erwägen, aber ansonsten verschiebt man imo nur (Parsing-)Kosten von Prozess zu Prozess, schiebt grössere Datenmengen durch die Gegend und macht sich die Fehlerbehandlung schwerer.

        ---

        Mir schwebt eine Lösung in einer allgemeinen Programmiersprache mit eingebettetem COM vor; in welcher Sprache programmierst Du?

        Grüsse

        Solkar

        1. Hi,

          der Ablauf soll so gestartet werden, dass die XML-Datei einfach per PHP oder manuell in den entsprechenden Ordner geladen wird. Es soll dann eine Validierung mit dem Schema stattfinden, welches in der Datenbank registriert ist.

          Umsetzung soll halt von der XML-Datei in ein relationales Datenbankschema sein. Für die Möglichkeit mit dem Instead-of-Trigger müsste ich erst eine View von der XML-Datei erstellen (geht das automatisch mit einem einfachen SQL-Statement oder muss ich das XML erst dort zerlegen?) und darauf den Instead-Of-Trigger legen, oder?

          Kann ich nicht direkt auf die XML-Datei zugreifen und die Daten je nach Belieben auf mein Datenbankschema verteilen?

          Die Microsoft-Variante kenne ich nicht und ich weiß nicht, ob sie so sinnvoll für mich wäre, da die Datenbank vielleicht mal auf ein Unix-System "umziehen" könnte.

          Glaube am liebsten wäre mir eine Lösung die an die Datenbank gebunden ist, also PL/SQL. SQL-Loader ist weniger für XML gedacht, oder?

          Gruß und Danke!
          Vince