Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

1 SZB, L.Banachowski Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych.

Podobne prezentacje


Prezentacja na temat: "1 SZB, L.Banachowski Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych."— Zapis prezentacji:

1 1 SZB, L.Banachowski Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych

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

3 3 SZB, L.Banachowski 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 4 SZB, L.Banachowski 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 bi z nesowej czy reprezentacji danych w bazie danych.

5 5 SZB, L.Banachowski Ułatwienie wymiany danych biznesowych mię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 6 SZB, L.Banachowski 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 7 SZB, L.Banachowski Przykład HTML: Lista publikacji Fikcja: Autor: Milan Kundera Tytuł: Identity Rok: 1998 Nauka: Autor: Richard Feynman Tytuł: The Character of Physical Law Twarda okładka

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

9 9 SZB, L.Banachowski Przykład XML: Lista publikacji Milan Kundera Identity 1998 Richard Feynman The Character of Physical Law Twardy

10 10 SZB, L.Banachowski Widok w postaci drzewa MilanKundera Identity1998 PUBLIKACJA AUTORTYTUŁROKAUTOR FORMAT TYTUŁ RichardFeynman The character of phy- sical law Hard- cover PUBLIKACJA LISTA IMIĘNAZWISKO IMIĘNAZWISKO

11 11 SZB, L.Banachowski 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 danych ID pozwala wprowadzić identyfikatory dla obiektów. Typy danych IDREF 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 12 SZB, L.Banachowski Przykład: publikacje i autorzy Lech Banachowski Krzysztof Stencel Bazy danych Projektowanie aplikacji 2001 Bazy danych Wykłady i ćwiczenia Twardy

13 13 SZB, L.Banachowski 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 14 SZB, L.Banachowski Metody reprezentowania dokumentów Dokumenty tekstowe mogą 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 15 SZB, L.Banachowski 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).http://sqlx.org Rekomendowany przez W3C od

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

17 17 SZB, L.Banachowski Użycie wyrażeń XPath do wyszukiwania XPath jest 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 18 SZB, L.Banachowski Przykłady wyrażeń XPath /BOOKLIST/BOOK/BOOKLIST/BOOK wyznacza wszystkie elementy BOOK, które są następnikami głównego elementu BOOKLIST. //AUTHOR / LASTNAME//AUTHOR / LASTNAME wyznacza 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/LASTNAME wyznacza wszystkie elementy LASTNAME autorów książek opublikowanych albo w 2001 albo w 2002.

19 19 SZB, L.Banachowski XQuery: Zapytania na danych XML v Zapytanie –FOR $l IN doc(www.books.com/books.xml)//AUTHOR / LASTNAME RETURN $l / LASTNAME –wyznacza nazwiska wszystkich autorów. Klauzula RETURN służy do zbudowania wyniku zapytania w postaci dokument u XML: Kowalski Borowski

20 20 SZB, L.Banachowski 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 21 SZB, L.Banachowski XQuery (c.d.) LET $l IN doc(www.ourbookstore.com/books.xml)//AUTHOR/LASTNAMEwww.ourbookstore.com/books.xml)//AUTHOR/LASTNAME RETURN $l daje wynik: Kowalski Borowski

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

23 23 SZB, L.Banachowski 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/PUBLISHEDwww.ourbookstore.com/books.xml)/BOOKLIST/BOOK/PUBLISHED RETURN $p, FOR $a IN DISTINCT /BOOKLIST/BOOK[PUBLISHED=$p]/AUTHOR/LASTNAME RETURN $a daje w wyniku 1980 Kowalski Borowski....

24 24 SZB, L.Banachowski Alternatywna reprezentacja danych XML w bazie danych odwzorow anie 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 25 SZB, L.Banachowski Konwersja: XQuery -> zapytanie SQL FOR $b IN doc(www.ourbookstore.com/books.xml)/BOOKLIST/BOOKwww.ourbookstore.com/books.xml)/BOOKLIST/BOOK WHERE $b/PUBLISHED=1980 RETURN $b/AUTHOR/FIRSTNAME, $b/AUTHOR/LASTNAME 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 26 SZB, L.Banachowski Prezentacja danych relacyjnych w postaci dokumentu XML 2345 SCOTT

27 27 SZB, L.Banachowski Tekstowa baza danych v Tekstowa baza danych: zbiór dokumentów tekstowych v 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. u 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 28 SZB, L.Banachowski Model wektorowy Zawiera informacje: termin j występuje k razy w dokumencie i. docidAgentBondChainJamesMobilemovie

29 29 SZB, L.Banachowski 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 30 SZB, L.Banachowski Wyszukiwanie w tekstach - p liki odwrócone 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 list odwrócon ych. Przykład : Agent AND James - przecięcie dwóch list odwróconych. Mobile agent 2 Agent James 1 DokumentDID Mobile James Agent Lista odwrócon a Słowo

31 31 SZB, L.Banachowski Zastosowanie funkcji haszującej v h(k) – wektor bitowy dla słowa kluczowego k v Niech dokument D zawiera słowa kluczowe k1,…,kn. Sygnatura dokumentu H(D)=h(k1) OR … OR h(kn) v Jeśli zapytanie dotyczy koniunkcji słów kluczowych z1,…, zi liczymy sygnaturę zapytania: H(Z)=h(z1) OR … OR h(zi) v 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 32 SZB, L.Banachowski Oracle Text Przeszukiwanie zbiorów dokumentów takich jak: 1.strony WWW 2.magazyny dokumentów 3.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 33 SZB, L.Banachowski Utworzenie tabeli z dokumentami CREATE TABLE docs (id NUMBER PRIMARY KEY, text VARCHAR2(200)); Wstawienie dokumentów tekstowych INSERT INTO docs VALUES(1, ' California is a state in the US. '); INSERT INTO docs VALUES(2, ' Paris is a city in France. '); INSERT INTO docs VALUES(3, ' France is in Europe. ');

34 34 SZB, L.Banachowski 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 35 SZB, L.Banachowski Zapytanie rankingowe Znajdź dokumenty zawierające słowo France: COLUMN text FORMAT a40; SELECT SCORE(1), id, text FROM docs WHERE CONTAINS(text, 'France', 1) > 0; SCORE(1) ID TEXT France is in Europe. 4 2 Paris is a city in France.

36 36 SZB, L.Banachowski 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 37 SZB, L.Banachowski Oracle: Typ obiektowy XMLType CREATE TABLE Kontakty( Nazwisko VARCHAR2(50), Karta XMLTYPE, Data_utworzenia DATE); l ub CREATE TABLE Obj_Kontakty OF XMLType;

38 38 SZB, L.Banachowski Wstawianie do kolumn typu XMLType INSERT INTO Kontakty VALUES ('KOWALSKI', XMLType(' Wygodna 9m1 Warszawa '), Sysdate);

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

40 40 SZB, L.Banachowski Wyszukiwanie w dokumentach XML v Przy wydobywaniu danych z obiektu typu XMLType korzystamy z metod konwersji : –GetStringval(): XMLType -> VARCHAR2 –GetClobval(): XMLType -> CLOB –GetNumberval: XMLType -> NUMBER

41 41 SZB, L.Banachowski Wyszukiwanie w dokumentach XML v Metoda Extract z użyciem argumentu będącym wyrażeniem XPath wyznacza wszystkie elementy dokumentu XML opisane przez podaną ścieżkę. v SELECT w.Karta.Extract('/KARTA/ /text()').GetStringVal() " " FROM Kontakty w; v W wyniku otrzymujemy kolumnę wartości typu VARCHAR2:

42 42 SZB, L.Banachowski v Bez funkcji text() na końcu wyrażenia ścieżkowego: v SELECT w.Karta.Extract('/KARTA/ ').GetStringVal() " " FROM Kontakty w; v otrzymamy wartości typu VARCHAR2:

43 43 SZB, L.Banachowski v Aby wziąć cały dokument XML i przesłać go jako duży dokument tekstowy typu CLOB: v SELECT w.Karta.GetClobval() as KartaKow FROM Kontakty w WHERE w.Nazwisko = 'KOWALSKI';

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

45 45 SZB, L.Banachowski Aktualizacja kolumny XMLType UPDATE Kontakty w SET w.Karta = UpdateXML(w.Karta, ' ') WHERE w.Nazwisko='KOWALSKI';

46 46 SZB, L.Banachowski Aktualizacja kolumny XMLType UPDATE Kontakty w SET w.Karta = UpdateXML XMLType(' Aksamitna 90m10 Warszawa ')) WHERE w.Nazwisko='KOWALSKI';

47 47 SZB, L.Banachowski 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ży je tego indeksu funkcyjnego, zamiast parsować dokumenty XML wiersz po wierszu i obliczać wartości wyrażeń XPath.

48 48 SZB, L.Banachowski 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łowo Pentium w elemencie DESC, możemy użyć operatora WITHIN operator as follows: SELECT p.id FROM po_tab p WHERE CONTAINS(p.doc, 'Pentium WITHIN desc') > 0;

49 49 SZB, L.Banachowski XML Schema - poprawność dokumentów XML Najpierw rejestracja definicji XML Schema: definition = '......'; DBMS_XMLSCHEMA.RegisterSchema ('http://myschema.pl/test.xsd', definition); Następnie u tworzenie tabeli z zapewnieniem sprawdzania poprawności przechowywanych dokumentów: CREATE TABLE EmpTable OF XMLType XMLSchema "http://myschema.pl/test.xsd" ELEMENT "Emplist";http://myschema.pl/test.xsd -- Tabela obiektowa EmpTable dokumentów XML

50 50 SZB, L.Banachowski 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 SMITH......>/ROWSET>

51 51 SZB, L.Banachowski Transformacja XSL CREATE TABLE xslemp OF XMLType; INSERT INTO xslemp VALUES(XMLType( ' WML> Employees: column="2"> Person Dept '))

52 52 SZB, L.Banachowski Generowanie strony WWW z XML i XSL CREATE OR REPLACE PROCEDURE xslt_test IS doc XMLType; BEGIN SELECT p.OBJECT_VALUE.transform(t.OBJECT_VALUE) INTO doc FROM XMLemp p, xslemp t WHERE ….; htp.print(doc.getclobval); END;


Pobierz ppt "1 SZB, L.Banachowski Wyk ł ad 5 XML w obiektowo-relacyjnej bazie danych."

Podobne prezentacje


Reklamy Google