1
Verwaltung semistrukturierter DatenVerwaltung semistrukturierter Daten
- was ist das?Datenverwaltung für XML-Dokumente
- Daten in XML-Gewand- eigentlich XML-Dokumente- Abbildung auf relationale und objektrelationale DBS
- Anfragesprachen: XML Query- RDF-Datenbanken: erste Versuche
6.2
Semistrukturierte DatenSemistrukturierte Daten
Semistrukturierte Daten kein festes Schema zeitveränderliche Struktur große Variabilität „Viel Struktur, wenig Daten“Beispiel: Web-Daten
XML-Dokumente Textliche Dokumente RDF – Beschreibungen .....
Datenmodell: oft Graphen (bzw. Bäume) Warum „Datenmodell“?
Trennung von Struktur und Inhalt erleichtert Anfragen Anfrageverarbeitung wird erleichtert
6.3
Semistrukturierte DatenSemistrukturierte Daten
Content-Management Verwaltung aller anfallenden elektronischen
Informationen (z.B. in einem Unternehmen) Schwerpunkt semistrukturierte Daten Inhaltlich: Web-basierte Daten
Bsp.: InternetbrokerBörsenkurse ( HTML / XHTML - Darstellung) Presseberichte Persönliche Profile .....
Bsp. HochschulverwaltungLehrveranstaltungen, Web-Seiten dafür, Studienpläne, ....
Datenverwaltung: Standard-DBS, Information Retrieval-System oder was??
6.4
Semistrukturierte und konventionell Semistrukturierte und konventionell DatenDaten
Derzeitige Schwerpunkte Datenverwaltung von XML-Dokumenten als
Spezialfall von Semistrukturierten Daten Verwendung von relationalen / objekt-relationalen
DBS
Bisher wenig Ansätze fürVerwaltung von großen RDF-Datenmengen(keine kommerziellen)
Tripelstruktur einfacherals Bäume / Graphen?
XML <-> (obj.-) relational
6.5
Datenverwaltung für XMLDatenverwaltung für XML
Warum eigentlich? Szenario 1
Hersteller X kauft Teile bei Zulieferer Y und verwendet das XML/EDI Protokoll(Electronic Data Exchange – Protokoll zur Übermittlung von Handelsdaten, neuerdings in XML-Kodierung)
XML <-> (obj.-) relational XML <-> (obj.-) relationalXML
Datenaustausch: Keine Veranlassung, XML-Dokumente in DBS zu speichern
6.6
Datenverwaltung für XMLDatenverwaltung für XML
Szenario 2Internetshop biete Produkte aus einem Datenkatalog mit vielfältigem Angebot an („Otto-Katalog“)
Application Server / Web-server
Angebot muss abfragbar sein, verschiedenste Kriterien (Anfragen mit DBS- und IR-Anteilen)„Fahrrad mit Alurahmen, möglichst rot, höchstens 800,-DM“
6.7
Datenverwaltung für XMLDatenverwaltung für XML Datenorientiert (data centric documents) <Orders> <SalesOrder SONumber="12345"> <Customer CustNumber="543"> <CustName>ABC Industries</CustName> <Street>123 Main St.</Street> <City>Chicago</City> .... </Customer> <Line LineNumber="1"> <Part PartNumber="123"> <Description> <p><b>Turkey wrench:</b><br /> Stainless steel, one-piece construction, lifetime guarantee.</p> </Description> <Price>9.95</Price> </Part> <Quantity>10</Quantity> </Line> ....... </SalesOrder> </Orders>
6.8
Datenverwaltung für XMLDatenverwaltung für XML Dokument-orientiert (document centric)
<Product> <Name>Variabler Maulschlüssel</Name> <Developer>Full Fabrication Labs, Inc.</Developer> <Summary>Großer, verstellbarer Schraubenschlüssel</Summary> <Description> <Para>Der Engländer besteht aus erstklassigem Stahl und besitzt einen gummierten Handgriff. Die Maulgröße liegt zwischen 0 und 32 mm. </Para> <Para>Sie können .... </Para>
<List> <Item><Link URL="Order.html">Bestellen</Link></Item> <Item><Link URL="Wrenches.htm">Andere Werkzeuge ansehen </Link></Item> <Item><Link URL="catalog.zip">Den Katalog herunterladen</Link></Item> </List> <Para> Der Schraubenschlüssel kostet 15.33 Euro inkl. MWSt. Wenn Sie jetzt bestellen, erhalten Sie zusätzlich unsere wertlose Hobbybastler-Fibel.</Para> </Description></Product>
6.9
Datenverwaltung für XMLDatenverwaltung für XML
Probleme Oft keine klarer Unterschied zwischen daten- und
dokumentorientiert (Bsp: Preisangabe) XML als Datenrepräsentation zwischen DB
Datentypen? Unterschiedliche Dialekte (der DDL)
-> für Interoperabilität DB <-> DB gibt es bessere Lösungen
Meist Verarbeitungsschritte involviert (-> Szenario 1)
Auftrag aus lokaler DB erzeugen (XML-Format) Übertragen Verarbeiten XML Dokument mit Speichern der Auftragsdaten
in DB
6.10
Datenverwaltung für XMLDatenverwaltung für XML
Abbildung DB <-> XML-Dokument: zwei Varianten Templates
keine vordefinierte Abbildung zwischen Datenbankschema und XML-Dokumentstruktur
.... + „XML-Middleware
<?xml version="1.0"?> <FlightInfo> <Intro>The following flights have available seats:</Intro>
<SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights</SelectStmt>
<Conclude>We hope one of these meets your needs</Conclude> </FlightInfo>
Operationen der Mittelschicht: - Request entgegennehmen- SQL-Statement ausführen (evtl. indirekt)- Ergebnisrelation in XML-Format bringen („XML-Middleware“)- Anzeigen
<?xml version="1.0"?> <FlightInfo> <Intro>The following flights have available seats:</Intro> <Flights> <Row> <Airline>ACME</Airline> <FltNumber>123</FltNumber> <Depart>Dec 12, 1998 13:43</Depart> <Arrive>Dec 13, 1998 01:21</Arrive> </Row> ... </Flights> <Conclude>We hope one of these meets your needs</Conclude> </FlightInfo>
- Sehr flexibel- Typisch für Abbildung DB -> XML ( auch HTML)-Form, nicht umgekehrt.
6.13
Datenverwaltung für XMLDatenverwaltung für XML Modellspezifische Abbildung (relational)
XML-Dokument-Struktur entspricht dem relationalen Schema (oder Teilen davon) bzw. einer Ergebnismenge.
Kanonische Abbildung auf <db>- <table>- <attribut> - Tags
XML / DB-“Middelware“ füllt die Elemente oder entnimmt die Daten (wie bei reinem Transfer)
<database> <table> <row> <column1>...</column1> <column2>...</column2> ... </row> ... </table> ... </database>
6.14
Datenverwaltung für XMLDatenverwaltung für XML
Modellspezifische Abbildung (objektrelational oder objektorientiert)
XML-Dokument lässt sich leichter in objekt-(relationalem) Modell als in (flachem) relationalen Modell darstellen
Auch hier geht die Ordnung der Teilbäume im XML-dokument verloren: Einbettung m: XML–Dok -> ORDBS-Tabellen nicht bijektiv (und damit nicht reversibel)
Im allgemeinen unkritisch: es kommt auf die Daten an, Darstellung z.B. gemäß XSL-Stylesheet
Kritisch: Datentypen, XML kennt nur CHAR-Daten NULL-Werte: optionale XML-Elemente oder Attribute
6.15
XML <-> DatenbankXML <-> Datenbank Stream-orientiert:
Serialisierung, Speichern in Dateien, LOBs Templates
Modellorientiert ("metamodeling") Generisch: einheitliches Schema für alle XML-Dokumente,
kanonische Abbildung von XML-Syntax auf DB-Datenmodell und umgekehrtElement ( id, name), Attribute (id, type, name),
ContentStructure(.....)
DTD-spezifisch: Abbildung einer konkreten DTD auf Datenmodell
<?xml version="1.0"?>
<FlightInfo>
<Intro>The following flights have available seats:</Intro> <SelectStmt>SELECT Airline, FltNumber, Depart, Arrive FROM Flights</SelectStmt>
<Conclude>We hope one of these meets your needs</Conclude>
</FlightInfo>
XML-BaumstrukturXML-Baumstruktur<?xml version=‚1.0‘?><orders> <purchaseorder ID ="007"> <Customer> <name> Müller </name> <address> ... </address> </Customer> <lineItem> <no> 4711 </> ... </lineItem> <lineItem> .....</orders>
orders
purchase order
Cust .. lineIt .. lineIt
No... price
Wenn keine hierarchische DB-Struktur: IDREF Erlaubt XML-Dokumente zuverknüpfen
address
street ...
6.17
Hierarchie in Objektrelationaler DBHierarchie in Objektrelationaler DB Create TYPE adressType AS OBJECT
{street varchar2(80}, city ...};
Create TYPE lineItemList AS TABLE OF lineItemType; Create TYPE lineItemType AS OBJECT {no number, name varcchar(40), price ...};
Create TYPE purchaseOrderType AS OBJECT {purchaseNo number, customer customerType, address addressType, ... lineItemList lineItemListType};
CREATE TABLE purchaseOrderTab AS TABLE OF{purchaseOrderType NESTED TABLE lineItemList STORE AS...}
Objektorientierte Systeme strukturell mindestens so gutgeeignet, wie objektrelationale
6.18
Dokumentorientierte Verwaltung von XMLDokumentorientierte Verwaltung von XML Anfragen:
SQL oder XPATH / XQL / XML-QL /QUILT / XQuery ? Konzeptionelles Modell ist Dokument, nicht DB
Unabhängigkeit von Repräsentation!-> Pfadausdrücke statt SQL ?!
XML-Query?
(Virtueller) XML-Speicher Implementierung: DBS
RepräsentationSQL ?
6.19
XPath : Basis vieler XML-AnfragesprachenXPath : Basis vieler XML-Anfragesprachen
W3C-Empfehlung 11/99: http://www.w3.org/TR/xpath Syntax, um in XML-Dokumenten zu navigieren
Ausdrücke beziehen sich auf ein Dokument, keine komplette Anfragesprache
Keine Gruppierung, Verbinden von Dokumenten Basis anderer XML – Werkzeuge
(s. auch Vortrag zu XML von Torsten Schlieder)
Frage: wie bildet man XPath – Ausdruck auf "Implementierungssprache" SQL ab?
6.20
XPath und SQLXPath und SQL Direkte Abbildung von XPath auf SQL
//purchase_order [pno="101"]/customer/address/street
SELECT p.address.streetFROM purchaseOrderTab pWHERE p.purchaseNo = stringToInt("101")
//purchase-order/customer/address/city
SELECT p.address.cityFROM purchaseOrderTab p
Aber: z.B. keine Aggregation ("Summe aller Preise"), kein Verbund, .....
6.21
Verwaltung von XML-Dokumenten: Verwaltung von XML-Dokumenten: AlternativenAlternativen
Large Object (CLOB) Nicht abfragbar Einziger Vorteil gegenüber Datei:
Fehlertoleranzeigenschaften des DBS Text-Datentyp (Text-Extender wie Oracle-
Intermedia) mit Retrievalfähigkeit Struktur bleibt erhalten, trägt aber nicht zum
Retrieval bei „Suche alle Dokumente zu ‚Schraubenschlüssel?“
dagegen nicht:„Wie teuer ist der Schraubenschlüssel TX32?“
entspricht Verwendung eines Standard-IR-Systems ohne DBS-Funktionalität und ohne Strukturunterstützung
6.22
Alternativen Alternativen
Beispiel: Auftragsverwaltung mit einer Tabelle purchaseXMLTab, die CLOB-Attribut po_xml mit dem Dokument enthält
Gesucht: alle Aufträge ohne StraßenangabeSELECT * FROM purchaseXMLTabWhere CONTAINS(po_xml, "street WITHIN addr") = 0
Hybride Abbildung Für hybride Dokumente mit attribut-orientiertem und
freiformatigen Anteil (PCDATA) sinnvollBeispiel: Buch, Handbuch ...
Xpath (o.a.) als "Sublanguage" ?
Oracle-Intermedia mit XML-Erweiterung
6.23
XML-Anfragen XML-Anfragen undund SQL (Beispiel) SQL (Beispiel) Annahme: purchaseOrderTab enthält zusätzlich ein CLOB-Attribut
poXMLColumn.
Funktionen (Oracle): extractNode(<xml-doc>, <xpathExpression>)
existsNode (<xml-doc>, <xpathExpr> <boolOp> <val>)
Beispiel: Produktnr. der ersten Position des Auftrags 4711 SELECT extractNode(e.poXMLColumn, //line_item_list[1]/no)
FROM purchaseOrderTab eWHERE e.pno = 4711 /* ggf. Typumwandlung
Beispiel: Alle Auftraäge mit Bestellungen von Artikel 100 SELECT e.poXMLColumn
FROM purchaseOrderTab eWHERE existsNode(e.poXMLColumn, (//lineItemList[no="100"]) !=0
6.24
IndexierungIndexierung
Performance matters ! Naive Lösung zur Auswertung von existsNode
etc: Parsen des Dokuments, Baum traversieren CLOB mit invertierten Listen (wie oben: z.B.
Intermedia) Grundsätzliches Problem: Indexierung
Semistrukturierter Daten
Wertindex / Textindex "Finde alle Objekte, die über einen Pfad erreichbar
sind" : Pfadindex