1 / 52

Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych

Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych. Zastosowanie dokumentów XML. Zamieszcz a nie metadanych w dokumencie tekstowym . Oddzielenie prezentacji od struktury dokumentu , przez co umożliwienie różnych prezentacji tego samego dokumentu.  

eshana
Download Presentation

Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wykład5XML w obiektowo-relacyjnej bazie danych

  2. Zastosowanie dokumentów XML • Zamieszczanie metadanych w dokumencie tekstowym. • Oddzielenie prezentacji od struktury dokumentu, przez co umożliwienie różnych prezentacji tego samego dokumentu.   • Ułatwienie wymiany danych biznesowych między aplikacjami. Integracja danych pochodzących z różnych baz danych i aplikacji.

  3. Od dokumentów tekstowych do oznakowanych dokumentów – dokumentów XML • Do każdego dokumentu tekstowego można dodać oznakowanie w celu wprowadzenia dodatkowych informacji takich jak autor, słowa kluczowe, powiązania z innymi dokumentami bądź w celu odzwierciedlenia jego wewnętrznej struktury. • Internet zmienił pojęcie dokumentu – teraz to pojęcie obejmuje również obrazy, klipy video – tekst często pojawia się tylko w deskryptywnych znacznikach.

  4. Dostosowywanie prezentacji danych • Poprzez rozdzielenie danych od ich prezentacji – koncentracja uwagi w aplikacjach biznesowych jest na operacjach biznesowych abstrahując od urządzeń, jakie zostaną użyte teraz lub w przyszłości do wyświetlenia danych. • Prezentację danych dokumentu można zmienić poprzez zmianę towarzyszącego dokumentowi arkusza stylów – bez konieczności modyfikowania logiki biznesowej czy reprezentacji danych w bazie danych.

  5. Ułatwienie wymiany danych biznesowychmiędzy aplikacjami. Integracja informacji. • Łatwiej jest wymienić dane między aplikacjami – wystarczy skupić się na danych i ich strukturze abstrahując od konkretnych protokołów sieciowych i komunikacyjnych, bez konieczności interpretowania wewnętrznych i wzajemnie niezgodnych formatów przesyłania danych w sieci.

  6. Problem integracji informacji • Powiązane dane istnieją w różnych miejscach i może zaistnieć potrzeba jednoczesnego ich użycia przez jedną aplikację. • Ale bazy danych mogą się różnić: • modelem (np. relacyjny, obiektowo-relacyjny, pliki MS Excel), • schematem (np. znormalizowany, nieznormalizowany), • terminologią (np. czy konsultanci firmy są pracownikami, czy emerytowani pracownicy są pracownikami), • konwencjami (np. stopnie Celsjusza lub Fahrenheita).

  7. Przykład HTML: Lista publikacji <HTML> <BODY> Fikcja: <UL><LI>Autor: Milan Kundera</LI> <LI>Tytuł: Identity</LI> <LI>Rok: 1998</LI> </UL> Nauka: <UL><LI>Autor: Richard Feynman</LI> <LI>Tytuł: The Character of Physical Law</LI> <LI>Twarda okładka</LI> </UL> </BODY> </HTML>

  8. Rodzielenie danych od ich prezentacji: XML i XSL • Rozszerzalny język znaczników (Extensible Markup Language) XML - opisuje semistrukturalne dane. • Rozszerzalny język arkuszy stylów (Extensible Stylesheet Language) XSL - prezentacja danych poprzez użycie arkuszy stylów.

  9. Przykład XML: Lista publikacji <LISTA>  <PUBLIKACJA>    <AUTOR>      <IMIĘ>Milan</IMIĘ ><NAZWISKO>Kundera</NAZWISKO>    </AUTOR>    <TYTUŁ>Identity</TYTUŁ>    <ROK>1998</ROK>   </PUBLIKACJA>   <PUBLIKACJA>    <AUTOR>       <IMIĘ>Richard</IMIĘ><NAZWISKO>Feynman</NAZWISKO>    </AUTOR>    <TYTUŁ>The Character of Physical Law</TYTUŁ>    <FORMAT>Twardy</FORMAT>  </PUBLIKACJA> </LISTA>

  10. Widok w postaci drzewa LISTA PUBLIKACJA PUBLIKACJA PUBLIKACJA FORMAT AUTOR TYTUŁ ROK AUTOR TYTUŁ Identity 1998 The characterof phy- sical law Hard-cover IMIĘ NAZWISKO IMIĘ NAZWISKO Milan Kundera Richard Feynman

  11. Modelowanie powiązań między obiektami w ramach jednego dokumentu XML • Model danych XML umożliwia powiązania między obiektami. Na przykład: jedna publikacja ma wielu autorów; jeden autor jest autorem wielu publikacji. • Typ danychID pozwala wprowadzić identyfikatory dla obiektów. Typy danychIDREF i IDREFS pozwalają korzystać ze wskaźników do obiektów. IDREF oznacza pojedynczy wskaźnik; IDREFS oznacza listę wskaźników. • Ta cecha pozwala definiować semistrukturalne dane w postaci dowolnego grafu nie tylko drzewa.

  12. Przykład: publikacje i autorzy <LISTA>      <AUTOR Id_autora="LB" Lista_pub="BD1,BD2,BD3"><IMIĘ>Lech</IMIĘ ><NAZWISKO>Banachowski</NAZWISKO></AUTOR><AUTOR Id_autora="KS" Lista_pub="BD1,BD2,SO"><IMIĘ>Krzysztof</IMIĘ ><NAZWISKO> Stencel</NAZWISKO></AUTOR> <PUBLIKACJA Id_publikacji="BD1" Lista_autor="LB, KS"><TYTUŁ>Bazy danych Projektowanie aplikacji</TYTUŁ> <ROK>2001</ROK> </PUBLIKACJA> <PUBLIKACJA Id_publikacji="BD2" Lista_autor="LB,KS,AC,EM,KM"> <TYTUŁ>Bazy danych Wykłady i ćwiczenia</TYTUŁ><FORMAT>Twardy</FORMAT></PUBLIKACJA>........ </LISTA>

  13. ID, IDEREF i IDEREFS • Wartością atrybutu ID musi być nazwa. Wszystkie wartości ID w dokumencie muszą być różne. Wartości ID jednoznacznie określają poszczególne elementy w dokumencie. Element może mieć tylko jeden atrybut typu ID. • Wartością atrybutu IDREF musi być nazwa występująca jako wartość atrybutu ID w ramach dokumentu. • Wartością atrybutu IDREFS musi być lista nazw występujących jako wartości atrybutów ID w ramach dokumentu.

  14. Metody reprezentowania dokumentów • Dokumenty tekstowemogą być w bazie danych reprezentowane za pomocą nowego obiektowego typu danych – TextType lub XMLType, którego wartości mogą się pojawić jako wartości kolumny w tabeli. • Może być zastosowana struktura CLOB. • Dokumenty XML o ustalonym schemacie mogą być reprezentowane przez zbiór zwykłych tabel relacyjnych.

  15. XQuery • Język zapytań dla dokumentów XML - XQuery jest standardem rekomendowanym przez organizację W3C. • Niezależnie inna organizacja zajmująca się standardem języka SQL opracowała wersję języka SQL obejmującą dokumenty XML – SQL/XML.(http://sqlx.org). Rekomendowany przez W3C od 23.01.2007

  16. XQuery: zapytania na dokumentach XML • Cel: deklaratywny język wysokiego poziomu umożliwiający przetwarzanie dokumentów XML. • XQuery – zapytania dotyczące danych w dokumentach XML, tłumaczenia danych XML przy integracji danych pochodzących z różnych źródeł. • Obejmuje wyrażenia XPath wyznaczające elementy w dokumencie XML.

  17. Użycie wyrażeń XPath do wyszukiwania XPathjest standardem W3C służącym do nawigowania po dokumentach XML. XPath używa modelu drzewa dla dokumentu XML. Dostarcza bogatego zbioru operacji do poruszania się po drzewie. Umożliwia stosowanie predykatów i funkcji w odniesieniu do węzłów. Wynikiem zastosowania wyrażenia XPath do dokumentu XML jest zbiór węzłów (w szczególności pusty lub jednoelementowy).

  18. Przykłady wyrażeń XPath /BOOKLIST/BOOKwyznacza wszystkie elementy BOOK, które są następnikami głównego elementu BOOKLIST. //AUTHOR /LASTNAMEwyznacza wszystkie elementy LASTNAME, które są następnikami dowolnego elementu AUTHOR osiągalnego z głównego elementu. W nawiasach [ ] są formułowane predykaty. Można używać spójników logicznych jak OR, AND i NOT np. /BOOKLIST/BOOK[PUBLISHED=2001 OR PUBLISHED=2002]/AUTHOR/LASTNAMEwyznacza wszystkie elementy LASTNAME autorów książek opublikowanych albo w 2001 albo w 2002.

  19. XQuery: Zapytania na danych XML • Zapytanie • FOR$l INdoc(www.books.com/books.xml)//AUTHOR /LASTNAMERETURN <RESULT> $l </RESULT> • wyznacza nazwiska wszystkich autorów. • Klauzula RETURN służy do zbudowania wyniku zapytania w postaci dokumentu XML:<RESULT><LASTNAME>Kowalski</LASTNAME></RESULT><RESULT><LASTNAME>Borowski</LASTNAME></RESULT>

  20. XQuery (c.d.) Podstawową postacią zapytania XQuery jest wyrażenie FLWR: FOR – określa zmienną, której wartości przebiegają zbiór elementów określony przez wyrażenie XPath, LET – określa zmienną, której wartością jest cały zbiór elementów, WHERE – filtr na zwracane wartości, RESULT – wynikowy dokument XML.

  21. XQuery (c.d.) LET $l IN doc(www.ourbookstore.com/books.xml)//AUTHOR/LASTNAME RETURN <RESULT> $l </RESULT> daje wynik: <RESULT> <LASTNAME>Kowalski</LASTNAME> <LASTNAME>Borowski</LASTNAME> </RESULT>

  22. XQuery (c.d.) FOR $b IN doc(www.ourbookstore.com/books.xml)/BOOKLIST/BOOK WHERE $b/PUBLISHED=’1980’ RETURN <RESULT> $b/AUTHOR/FIRSTNAME, $b/AUTHOR/LASTNAME</RESULT> daje wynik: <RESULT><FIRSTNAME>Jan</FIRSTNAME> <LASTNAME>Kowalski</LASTNAME> </RESULT> <RESULT><FIRSTNAME>Andrzej</FIRSTNAME><LASTNAME>Borowski</LASTNAME> </RESULT>

  23. XQuery (c.d.) Dla każdego roku wyznacz nazwiska autorów, którzy opublikowali książkę w tym roku. FOR $p IN DISTINCT doc(www.ourbookstore.com/books.xml)/BOOKLIST/BOOK/PUBLISHED RETURN <RESULT> $p, FOR $a IN DISTINCT /BOOKLIST/BOOK[PUBLISHED=$p]/AUTHOR/LASTNAME RETURN $a </RESULT> daje w wyniku <RESULT><PUBLISHED>1980</PUBLISHED> <LASTNAME>Kowalski</LASTNAME> <LASTNAME>Borowski</LASTNAME> </RESULT> ....

  24. Alternatywna reprezentacja danych XML w bazie danych odwzorowanie elementów dokumentu XML na tabele BOOKLIST(id:integer) BOOK(id:integer, booklist:integer, title: string, published: string, genre: string, format: string) AUTHOR(bookid:integer, firstname: string, lastname: string)

  25. Konwersja: XQuery -> zapytanie SQL FOR $b IN doc(www.ourbookstore.com/books.xml)/BOOKLIST/BOOK WHERE $b/PUBLISHED=’1980’ RETURN <RESULT> $b/AUTHOR/FIRSTNAME, $b/AUTHOR/LASTNAME</RESULT> na: SELECT BOOK.id, AUTHOR.firstname, AUTHOR.lastname, FROM BOOK, BOOKLIST, AUTHOR WHERE BOOKLIST.id = BOOK.booklistid AND BOOK.id=AUTHOR.bookid AND BOOK.published=’1980’ GROUP BY BOOK.id;

  26. Prezentacja danych relacyjnych w postaci dokumentu XML <ROWSET Table="Emp"> <ROW><EMPNO>2345</EMPNO> <ENAME>SCOTT</ENAME> ... </ROW> <ROW> .... </ROW> .... </ROWSET>

  27. Tekstowa baza danych • Tekstowa baza danych: zbiór dokumentów tekstowych • Ważna klasa zapytań – wyszukiwania po słowach kluczowych • Zapytania boolowskie: Składniki zapytania są powiązane spójnikami AND, OR i NOT. Wynikiem zapytania jest lista dokumentów, które spełniają wyrażenie boolowskie np. • Database AND (Microsoft OR Oracle) • Zapytania rankingowe: Wynikiem zapytania jest lista dokumentów, które spełniają wyrażenie boolowskie, uporządkowane według stopnia istotności danego dokumentu dla zapytania.

  28. Model wektorowy Zawiera informacje: termin jwystępujek razy w dokumencie i.

  29. Miary istotności Precyzja(precision) – procent zwracanych dokumentów, które są istotne dla zapytania. Zwracalność (recall)- procent istotnych dokumentów zwracanych w odpowiedzi na zapytanie. Zwrócenie wszystkich dokumentów gwarantuje dobrą zwracalnośćale bardzo słabą precyzję. Problemem jest osiągnięcie jednocześnie dobrej zwracalności i precyzji.

  30. Dla każdego terminu zapisujemy listę odwróconąidentyfikatorów DID dokumentów, w których występuje ten termin. Wyznaczenie wyniku zapytania: przecięcie lub suma listodwróconych. Przykład:Agent AND James- przecięcie dwóch list odwróconych. DID Dokument 1 Agent James 2 Mobile agent Słowo Lista odwrócona Agent <1,2> James <1> Mobile <2> Wyszukiwanie w tekstach - pliki odwrócone

  31. Zastosowanie funkcji haszującej • h(k) – wektor bitowy dla słowa kluczowego k • Niech dokument D zawiera słowa kluczowe k1,…,kn. Sygnatura dokumentu H(D)=h(k1) OR … OR h(kn) • Jeśli zapytanie dotyczy koniunkcji słów kluczowych z1,…, zi liczymy sygnaturę zapytania: H(Z)=h(z1) OR … OR h(zi) • Szukamy wszystkich dokumentów D takich, że H(Z) AND H(D) = H(Z) (czyli H(D) zawiera H(Z)) (ograniczając się do sygnatur dokumentów) i tylko dla nich sprawdzamy czy D należy do wyników zapytania Z tj. czy wszystkie słowa kluczowe zapytania Z zawierają się w zbiorze słów kluczowych dokumentu D.

  32. Oracle Text • Przeszukiwanie zbiorów dokumentów takich jak: • strony WWW • magazyny dokumentów • biblioteki cyfrowe • Najpierw indeksuje się zawartość zbioru dokumentów. • Dokumenty mogą być różnych formatów jak HTML, PDF, MS Word. • Dokumenty są przechowywane w tabeli dokumentów. • Zapytania składają się zwykle ze słów i fraz oraz operatorów takich jak OR i AND. • Wyniki mogą być uporządkowane względem stopnia odpowiedniości.

  33. Utworzenie tabeli z dokumentami CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200)); Wstawienie dokumentów tekstowych INSERT INTO docs VALUES(1, '<HTML>California is a state in the US.</HTML>'); INSERT INTO docs VALUES(2, '<HTML>Paris is a city in France.</HTML>'); INSERT INTO docs VALUES(3, '<HTML>France is in Europe.</HTML>');

  34. Tworzenie indeksu typu CONTEXT CREATE INDEX idx_docs ON docs(text) INDEXTYPE IS CTXSYS.CONTEXT; Indeksuje wszystkie słowa zbioru dokumentów. Używa struktury danych list odwróconych.

  35. Zapytanie rankingowe Znajdź dokumenty zawierające słowoFrance: COLUMN text FORMAT a40; SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'France', 1) > 0; SCORE(1) ID TEXT ------------ ---------------------------------------------------------------4 3 <HTML>France is in Europe.</HTML>4 2<HTML>Paris is a city in France.</HTML>

  36. Odwołania do dwóch wyszukiwań SELECT title, body, SCORE(1), SCORE(2) FROM news WHERE CONTAINS (news.title, 'Oracle', 1) > 0 OR CONTAINS (news.body, 'java', 2) > 0 ORDER BY SCORE(1), SCORE(2);

  37. Oracle: Typ obiektowy XMLType CREATE TABLE Kontakty(    Nazwisko VARCHAR2(50),    Karta XMLTYPE,    Data_utworzenia DATE); lub CREATE TABLE Obj_Kontakty OF XMLType;

  38. Wstawianie do kolumn typu XMLType INSERT INTO Kontakty VALUES ('KOWALSKI',   XMLType('<KARTA>             <EMAIL>Jan.Kowalski@praca.pl</EMAIL>              <TEL_PRACA>33-456</TEL_PRACA>             <TEL_DOM>28-991</TEL_DOM>             <TEL_KOM>600-345</TEL_KOM>             <ADRES>                <ULICA>Wygodna 9m1</ULICA>                <MIASTO>Warszawa</MIASTO>                <KOD>02-782</KOD>             </ADRES>            </KARTA>'), Sysdate);

  39. Wstawianie do kolumn typu XMLType INSERT INTO Kontakty VALUES ('NOWAK',   XMLType(BFILENAME('XMLDIR', 'JanNowak.xml'), Sysdate);

  40. Wyszukiwanie w dokumentach XML • Przy wydobywaniu danych z obiektu typu XMLType korzystamy z metod konwersji: • GetStringval(): XMLType -> VARCHAR2 • GetClobval(): XMLType -> CLOB • GetNumberval: XMLType -> NUMBER

  41. Wyszukiwanie w dokumentach XML • MetodaExtractz użyciem argumentu będącym wyrażeniem XPathwyznacza wszystkie elementy dokumentu XML opisane przez podaną ścieżkę. • SELECT w.Karta.Extract('/KARTA/EMAIL/text()').GetStringVal() "EMail" FROM Kontakty w; • W wyniku otrzymujemy kolumnę wartości typu VARCHAR2: EMail------------------------------Jan.Kowalski@praca.plAnna.Nowak@praca.pl

  42. Bez funkcji text() na końcu wyrażenia ścieżkowego: • SELECT w.Karta.Extract('/KARTA/EMAIL').GetStringVal() "EMail" FROM Kontakty w; • otrzymamy wartości typu VARCHAR2:EMail -----------------------------------------------------------<EMAIL>Jan.Kowalski@praca.pl</EMAIL><EMAIL>Anna.Nowak@praca.pl</EMAIL>

  43. Aby wziąć cały dokument XML i przesłać go jako duży dokument tekstowy typu CLOB: • SELECT w.Karta.GetClobval() as KartaKowFROM Kontakty wWHERE w.Nazwisko = 'KOWALSKI';

  44. Aby sprawdzić czy w dokumencie XML występuje element <WWW> stosujemy metodę ExistsNode: • SELECT w.Nazwisko, w.Karta.ExistsNode('/KARTA/WWW') "Ma stronę WWW"FROM Kontakty wWHERE w.Karta IS NOT NULL; Wynik: • NAZWISKO Ma stronę WWW ----------------- ----------------------- KOWALSKI 0 NOWAK 1

  45. Aktualizacja kolumny XMLType UPDATE Kontakty wSET w.Karta = UpdateXML(w.Karta,'/KARTA[EMAIL="Jan.Kowalski@praca.pl"]/TEL_DOM/text()','9999-10')WHERE w.Nazwisko='KOWALSKI';

  46. Aktualizacja kolumny XMLType UPDATE Kontakty wSET w.Karta = UpdateXML(w.Karta,'/KARTA[EMAIL="Jan.Kowalski@praca.pl"]/ADRES',      XMLType('<ADRES>                <ULICA>Aksamitna 90m10</ULICA>                <MIASTO>Warszawa</MIASTO>                <KOD>12-782</KOD>             </ADRES>'))WHERE w.Nazwisko='KOWALSKI';

  47. Indeksy funkcyjne na kolumnach typu XMLType W celu przyśpieszenia wykonywania zapytania SELECT w.Nazwisko FROM Kontakty w WHERE w.Karta.Extract('/KARTA/ADRES/MIASTO/text()').GetStringVal()= 'WARSZAWA'; indeksuje się zawartości elementu MIASTO w dokumentach XML kolumny Karta. CREATE INDEX Miasto_index ON Kontakty w (w.Karta.Extract('/KARTA/ADRES/MIASTO/text()').GetStringVal()); Zapytanie SQL użyje tego indeksu funkcyjnego, zamiast parsować dokumenty XML wiersz po wierszu i obliczać wartości wyrażeń XPath.

  48. Zastosowanie indeksu typu CONTEXT Korzystając z Oracle Text, można utworzyć indeks typu CONTEXT na kolumnie zawierającej dane XML. Aby wyznaczyć wszystkie zamówienia zawierające słowoPentiumw elemencie DESC, możemy użyć operatora WITHIN operator as follows: SELECT p.id FROM po_tab pWHERE CONTAINS(p.doc, 'Pentium WITHIN desc') > 0;

  49. XML Schema - poprawność dokumentów XML Najpierw rejestracja definicji XML Schema: definition = ' ......'; DBMS_XMLSCHEMA.RegisterSchema('http://myschema.pl/test.xsd', definition); Następnie utworzenie tabeli z zapewnieniem sprawdzania poprawnościprzechowywanych dokumentów: CREATE TABLE EmpTable OF XMLTypeXMLSchema "http://myschema.pl/test.xsd"ELEMENT "Emplist"; -- Tabela obiektowa EmpTable dokumentów XML

  50. Konwersja: dane relacyjne -> XML CREATE TABLE XmlEmp OF XMLType; query := 'SELECT empno, ename, sal, dname FROM emp JOIN dept USING (deptno)'; INSERT INTO Xmlemp SELECT DBMS_XMLGEN.getxmltype(query) FROM dual; SELECT t.OBJECT_VALUE FROM xmlemp t;-- daje: OBJECT_VALUE---------------------------<ROWSET><ROW><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME> ...</ROW><ROW> ...>/ROWSET>

More Related