Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Speichern von XML in Oracle. © Prof. T. Kudraß, HTWK Leipzig Ansätze zum Speichern von XML komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB.

Ähnliche Präsentationen


Präsentation zum Thema: "Speichern von XML in Oracle. © Prof. T. Kudraß, HTWK Leipzig Ansätze zum Speichern von XML komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB."—  Präsentation transkript:

1 Speichern von XML in Oracle

2 © Prof. T. Kudraß, HTWK Leipzig Ansätze zum Speichern von XML komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB (authored XML) Aufteilung des XML-Dokuments in Teile und Speicherung in mehreren Spalten in einer oder mehreren Tabellen (generated XML) – vgl. Vorlesung über XML + Datenbanken Kombination beider Ansätze (hybrider Ansatz)

3 © Prof. T. Kudraß, HTWK Leipzig Authored XML namedocument(CLOB) Shopping Cart Fun with XML 1 10 (...) (...) Speichern der XML-Dokumente in einer Tabellenspalte XMLDOCS

4 © Prof. T. Kudraß, HTWK Leipzig Generated XML nicht geeignet für XML-Dokumente mit komplexer Struktur Alternative: Speicherung der XML-Elemente in mehreren Tabellen Speichere jedes XML-Element in einer Tabellenspalte SHOPPING_CART iddescriptionquantitydiscount 1234Fun with XML XML in Space47 (...)

5 © Prof. T. Kudraß, HTWK Leipzig Speichern von XML Files als CLOBs declare theClob CLOB; theBFile BFILE; begin insert into xmldocs(filename,document) values (Sample.xml, empty_clob()) returning document into theClob; theBFile:=BFileName(XMLFILES,Sample.xml); dbms_lob.fileOpen (theBFile); dbms_lob.loadFromFile (dest_lob=>theClob, src=>theBFile, amount=>dbms_lob.getLength(theBFile)); dbms_lob.fileClose(theBFile); commit; end; BFILE mit Source File assoziiert, Logical Directory Object XMLFILES vorher in Datenbank anlegen, z.B. >CREATE DIRECTORY xmlfiles as c:\work

6 © Prof. T. Kudraß, HTWK Leipzig Arbeit mit CLOBs (Java) public class ReadCLOB {... public static void main (String args[]{ DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection( PreparedStatement p = conn.prepareStatement( select doc from xmldocs where name = ?); p.setString(1,args[0]); ResultSet rs = p.executeQuery(); CLOB theCLOB = ((OracleResultSet)rs.getCLOB(1); // process the result, store document in a file... }

7 © Prof. T. Kudraß, HTWK Leipzig Überblick interMedia Services Eigenschaften von interMediaText – Volltext-Retrieval in der Oracle-Datenbank und externen Dateien – Thesaurus-basierte Suche – Themenanalyse von (englischen) Dokumenten – Highlighting von Treffern (Hervorhebungen im Dokument) Oracle interMedia bietet Services zum Management großer Textdokumente und Multimedia-Daten, wie Bilder, Audio und Video

8 © Prof. T. Kudraß, HTWK Leipzig Architektur DatastoreFilterSectionerLexer Indexing Engine Wordlist Stoplist O/S File System Internet TokensText Marked- up Text Documents Oracle Text Index Markup

9 © Prof. T. Kudraß, HTWK Leipzig Anwendungsentwicklung mit interMedia Text 2 Benutzer-Rollen: – CTXSYS: Eigentümer der interMedia Schema-Objekte – CTXAPP: Zugriff auf die Funktionen Retrieval- und Speicherungsfunktionen: – Konvertieren von Texten mit Filtern – Sprachspezifisches Indizieren (Lexer) – Stammwortbasierte (stemming) und unscharfe Anfragen (fuzzy logic) mittels Wordlist – Speicherung von Index-Tabellen – Anlegen von Stop-Word-Listen – Definition von Search Sections durch Section Groups Setzen von Preferences

10 © Prof. T. Kudraß, HTWK Leipzig Text Retrieval mit interMedia Text SQL-Erweiterungen für Text-Retrieval contains Operator in der where -Klausel einer Anfrage: Suche nach Wort- Übereinstimmungen in einem Dokument score - Operator: berechnet Relevanz eines Treffers (in einem Bereich ) within -Klausel: beschränkt die Anfrage auf Abschnitte (Sections) eines Dokuments – wichtig bei XML Sections übliche logische SQL-Operatoren: and, or, not

11 © Prof. T. Kudraß, HTWK Leipzig Indizieren XML mit interMedia Text Voraussetzung für tag-basierte Queries: Index auf den Anfragespalten in SQL: CREATE INDEX erweitern um Klausel INDEXTYPE IS ctxsys.context – erlaubt contains in where -Klausel Sectioner: Sammlung von XML-Tags, die indiziert werden sollen – repräsentiert durch section group im CREATE INDEX - Befehl / PARAMETERS Klausel – erlauben inhaltsbasiertes Retrieval, beschränkt auf spezifische XML-Tags vordefinierte (für jedes Tag) vs. benutzerdefinierte Sectioner

12 © Prof. T. Kudraß, HTWK Leipzig Beispiel: Arbeit mit interMedia Text (1) create table ins_claim (id number (7) primary key, when date, doc clob); Speicherung von XML-Dokumenten einer Versicherungsgesellschaft Spalte doc ist indiziert mit auto_section_group : create index doc_ix on ins_claim(doc) indextype is ctxsys.context parameters (section group ctxsys.auto_section_group);

13 © Prof. T. Kudraß, HTWK Leipzig Beispiel: Arbeit mit interMedia Text (2) The insureds car broke through the guard rail and plummeted into a ravine. The cause was determined to be faulty braked Amazingly there were no casualties. Beispiel-Dokument in der Spalte doc : XML Section kann abgefragt werden: select id, when from ins_claim where contains (doc,brake within cause) > 0; ID WHEN DOC OCT-00The insureds car...

14 © Prof. T. Kudraß, HTWK Leipzig Beispiel: Arbeit mit interMedia Text (3) ctx_ddl.create_section_group(my_section, XML_SECTION_GROUP); ctx_ddl.add_zone_section(my_section,cause,Cause);... create index my_doc_ix on ins_claim(doc) indextype is ctxsys.context parameters(section group my_section); Alternative zu vordefiniertem Auto-Sectioner: Definition eines eigenen Sectioners und Verwendung im Index Mögliche Abfrage ist Suche nach Attributwerten:... where contains (doc, Audi within Findet: section nametag name


Herunterladen ppt "Speichern von XML in Oracle. © Prof. T. Kudraß, HTWK Leipzig Ansätze zum Speichern von XML komplettes XML-Dokument in einer Tabellenspalte vom Typ CLOB."

Ähnliche Präsentationen


Google-Anzeigen