XML w bazie danych IBM DB2



Podobne dokumenty
Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie.

DB2 XML w relacyjnych bazach danych wstęp do wprowadzenia. Kuba Pochrybniak

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Wykład 5. SQL praca z tabelami 2

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Model semistrukturalny

Jerzy Nawrocki, Wprowadzenie do informatyki

Wykład 05 Bazy danych

Wykład 8. SQL praca z tabelami 5

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Generowanie dokumentów XML z tabel relacyjnych - funkcje SQLX

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Relacyjne bazy danych. Podstawy SQL

Oracle11g: Wprowadzenie do SQL

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Ref. 7 - Język SQL - polecenia DDL i DML

Język SQL, zajęcia nr 1

P o d s t a w y j ę z y k a S Q L

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Bazy Danych i Usługi Sieciowe

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

Bazy danych i usługi sieciowe

Przykładowy dokument XML

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Intro. I.Wojnicki, ZTB:XML ZTB: XML. Igor Wojnicki. Katedra Informatyki Stosowanej, Akademia Górniczo-Hutnicza w Krakowie. 6 października 2016

XML w bazach danych i bezpieczeństwie

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Relacyjne bazy danych. Podstawy SQL

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

DECLARE VARIABLE zmienna1 typ danych; BEGIN

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Przykładowy dokument XML

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Bazy danych i usługi sieciowe

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Bazy danych 6. Klucze obce. P. F. Góra

Microsoft SQL Server Podstawy T-SQL

Przykładowy dokument XML

Systemy GIS Tworzenie zapytań w bazach danych

1 Zaznacz poprawne stwierdzenia dotyczące grup plików (filegroup) możemy określić do której grupy plików trafi

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

15. Funkcje i procedury składowane PL/SQL

Wykład 6. SQL praca z tabelami 3

Relacyjne bazy danych a XML

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Projektowanie systemów baz danych

Bazy danych. Dr inż. Paweł Kasprowski

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Oracle PL/SQL. Paweł Rajba.

XML w bazach danych i bezpieczeństwie

Struktura drzewa w MySQL. Michał Tyszczenko

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Internetowe bazy danych

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

Tworzenie tabeli przez select CREATE TABLE PRAC2 AS SELECT P.NAZWISKO, Z.NAZWA FROM PRAC P NATURAL JOIN ZESP Z

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wstęp do relacyjnych baz danych. Jan Bartoszek

Zbiór pytań nr 5. 2 Które stwierdzenie opisuje najlepiej zbiór uprawnień dostępny po wykonaniu

Bazy danych. dr inż. Arkadiusz Mirakowski

Pakiety podprogramów Dynamiczny SQL

I. Język manipulowania danymi - DML (Data Manipulation Language). Polecenia INSERT, UPDATE, DELETE

Relacji między tabelami klucze obce. Schemat bazy danych, wczytanej z pliku create_tables.sql. Klucz obcy jako ograniczenie dla kolumny

Bazy danych. Polecenia SQL

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Indeksowanie w bazach danych

Komunikacja z bazą danych psql

1 XML w bazach danych

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

Bazy danych - Materiały do laboratoriów VIII

PODSTAWY BAZ DANYCH. 17. Obiektowość w Oracle. 2009/2010 Notatki do wykładu "Podstawy baz danych"

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

SQL DDL DML TECHNOLOGIE BAZ DANYCH. Wykład 5: Język DDL i DML. Małgorzata Krętowska

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Oracle PL/SQL. Paweł Rajba.

SQL :: Data Definition Language

DB2 XML Extender. Opracowane na podstawie dokumentacji IBM XML Extender

Wybór EUROPEAN będzie rozpoznawał dzień przed miesiącem, natomiast US miesiąc przed dniem.

Paweł Rajba

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Kolekcje Zbiory obiektów, rodzaje: tablica o zmiennym rozmiarze (ang. varray) (1) (2) (3) (4) (5) Rozszerzenie obiektowe w SZBD Oracle

SQL (ang. Structured Query Language)

Modelowanie wymiarów

Operacja PIVOT w języku SQL w środowisku Oracle

Administracja i programowanie pod Microsoft SQL Server 2000

METODY INŻYNIERII WIEDZY ASOCJACYJNA REPREZENTACJA POWIĄZANYCH TABEL I WNIOSKOWANIE IGOR CZAJKOWSKI

Multi-wyszukiwarki. Mediacyjne Systemy Zapytań wprowadzenie. Architektury i technologie integracji danych Systemy Mediacyjne

Procedury i funkcje składowane

BAZY DANYCH Cz III. Transakcje, Triggery

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Transkrypt:

Instytut Informatyki Politechnika Śląska Gliwice, ul. Akademicka 16 XML w bazie danych IBM DB2 Dr inż. Dariusz Mrozek Wykład: IBM DB2 uniwersalna platforma przetwarzania danych

O czym dzisiaj? XML w relacyjnej bazie danych Sposoby obsługi danych XML w IBM DB2 Przechowywanie danych XML Przetwarzanie danych XML Indeksowanie danych XML 2

Dlaczego XML?.. Wymiana danych pomiędzy luźno powiązanymi systemami Niezależność od platformy Dobry w aplikacjach klient-serwer typu HTTP Reprezentacja dokumentów (znaki sterujące, np. HTML, Word,..) Doskonała reprezentacja powiązań hierarchicznych oraz rekurencyjnych pomiędzy danymi (FK w b.d.) Wsparcie dla kolejności danych i wstępne sortowanie (ważne dla aplikacji typu Content Management) Samoopisywalność i rozszerzalność XML 3

Dlaczego XML w relacyjnej bazie danych? Dokumenty/dane XML zgromadzone w jednym miejscu Możliwość zadawania zapytań jak do b.d., indeksowania i tworzenia planów zapytań Wysokie koszty parsowania dokumentów XML lepiej przechowywać całe Rozszerzenia XML w b.d. nie powodują zmian w działaniu aplikacji relacyjnych Wsparcie serwera na poziomie utrzymania b.d., np. kopie zapasowe 4

Dokument XML 5

Model danych XML rodzaje węzłów 6

Bazy danych XML-enabled 7

Obsługa XML w IBM DB2 Typ danych: xml Wsparcie dla XPath i XQuery Indeksowanie danych XML 8

DB2 purexml Kolumny relacyjne są przechowywane w typowym formacie relacyjnym (tabele) Natywne składowanie XML Dokumenty XML są przechowywane z zachowaniem pełnej hierarchii w postaci sparsowanego drzewa hierarchicznego Do manipulacji danymi można używać SQL lub XQuery 9

Natywny sposób przechowywania danych XML 10

Typ danych XML 11

Wewnętrzny sposób przechowywania dokumentów XML Drzewo XML reprezentujące dokument jest przechowywane na stronach danych Dokumenty, których rozmiar przekracza rozmiar strony są dzielone na regiony i przechowywane na wielu stronach Poszczególne gałęzie są identyfikowane przez NodeID 3 regiony przechowywane na 3 stronach 12

Dostęp do regionów Dostęp do danych w tym samym regionie jest szybszy niż między regionami Indeks regionów wspomaga trawersowanie pomiędzy regionami drzewa 13

Przechowywanie XML: Wewnętrzne obiekty i ich powiązanie Dane XML przechowywane są w innych strukturach niż dane relacyjne 14

Wstawianie danych XML Niejawne parsowanie XML Wstawianie danych tekstowych do kolumny typu XML INSERT INTO dept VALUES ('PR27',, '<dept> <emp> </emp> </dept>'); Jawne parsowanie z użyciem XMLPARSE Transformuje wartość XML z postaci serializowanej do wewnetrznej reprezentacji hierarchicznej Pozwala określić, co zrobić ze spacjami (strip/preserve) INSERT INTO dept VALUES ( PR27, xmlparse(document '<a>...</a>')); INSERT INTO dept VALUES ( PR27, xmlparse(document '<a>...</a> preserve whitespace)); 15

Usuwanie danych XML Polecenie DELETE Usuwa dokument XML wraz z innymi danymi dla wskazanego wiersza DELETE FROM dept WHERE deptid= A001 ; Warunek może również bazować na zawartości dokumentu XML DELETE FROM dept WHERE XMLEXISTS ('$d//phone[type="home"] passing INFO as "d"); Ustawienie wartości NULL Usuwa dokument XML UPDATE dept SET custdoc = NULL WHERE deptid='a001 ; 16

Import danych XML 17

Walidacja podczas ładowania danych Rejestracja schematu w bazie danych register xmlschema 'http://mysample.org' from 'C:/XMLFiles/DeptInfo.xsd' as user1.mysample complete; Importowanie danych z walidacją import from dept.del of del xml from C:/data/XMLFILES xmlvalidate using xds default user1.mysample insert into dept; SQL3149N 5 rows were processed from the input file. 4" rows were successfully inserted into the table. "1" rows were rejected. Number of rows read = 5 Number of rows skipped = 0 Number of rows inserted = 4 Number of rows updated = 0 Number of rows rejected = 1 Number or rows committed = 5 18

Eksport danych XML 19

SQL/XML i XQuery DB2 umożliwia operowanie na danych z użyciem dwóch języków: XQuery SQL/XML XPath Umożliwia nawigowanie wewnątrz dokumentów XML Podstawa operowania dla XQuery i SQL/XML XQuery Udostępnia dwie istotne funkcje pozwalające na dostęp do danych db2-fn:sqlquery db2-fn:xmlcolumn Zwraca rezultaty w postaci sekwencji elementów SQL/XML Udostępnia funkcje pozwalające na jednoczesną pracę z danymi relacyjnymi i XML 20

Język XPath 21

Przykładowe wyrażenia w języku XPath 22

Wprowadzenie do XQuery w DB2 W odróżnieniu od relacyjnych danych (posiadających określoną strukturę i przez to przewidywalnych), dane XML są: Często nieprzewidywalne Wysoce zmienne Samoopisujące Zapytania do danych XML pozwalają na przeprowadzenie różnych operacji: Poszukiwać w danych XML obiektów na nieznanym poziomie w hierarchii Wykonywać strukturalne transformacje danych Zwracać rezultaty różnych, czasem mieszanych typów 23

Funkcje XQuery w DB2 db2-fn:xmlcolumn ( xml-column-name ) Zwraca kolumnę XML jako sekwencję wartości XML Parametr wejściowy identyfikuje nazwę kolumny XML w tabeli xquery db2-fn:xmlcolumn( CUSTOMER.INFO )/customerinfo; db2-fn:sqlquery ( full-select-sql-statement ) Pozwala zadać zapytanie SQL, którego celem jest zwrócenie kolumny XML Parametr wejściowy jest traktowany jako polecenie SQL i parsowane przez parser XML xquery db2-fn:sqlquery( SELECT INFO FROM CUSTOMER WHERE CID=6 )/customerinfo; 24

db2-fn:xmlcolumn Pobiera wszystkie dokumenty XML ze wskazanej kolumny, a następnie wykonuje na nich zapytanie XQuery 25

Inne ciekawe zapytania Transformacja dokumentu xquery <ShippedItems> {db2-fn:xmlcolumn("purchaseorder.porder") /PurchaseOrder[@Status="Shipped"]/item/name} </ShippedItems>; FLOWR xquery for $po in db2-fn:xmlcolumn("purchaseorder.porder")/purchaseorder for $quantity in $po/item/quantity where $po/@status="shipped" return ($po/item/name, $quantity); 26

db2-fn:sqlquery Pobiera dokumenty XML używając polecenia SQL, a następnie wykonuje na nich zapytanie XQuery Pozwala na filtrowanie danych w modelu relacyjnym 27

Funkcje SQL/XML Pozwalają wykonać polecenia XQuery zanurzone wewnątrz poleceń SQL XMLQUERY() XMLTABLE() XMLEXISTS() Umożliwia to na: Operowanie na fragmentach dokumentów XML zamiast na całych dokumentach Wykorzystanie danych XML jako części zapytań SQL Operowanie zarówno na danych relacyjnych, jak i XML Wtórne przetworzenie zwróconych danych XML w zapytaniu SQL 28

Funkcja XMLQUERY Funkcja skalarna, wykonywana raz dla każdego kwalifikującego się dokumentu Wykonuje polecenie w języku XPath lub XQuery Pozwala na wprowadzenie parametrów wejściowych do zapytania XQuery Zwraca sekwencję 0, 1 lub więcej obiektów z każdego dokumentu 29

Funkcja XMLQUERY (2) SELECT XMLQUERY( $i/customerinfo/name PASSING INFO AS i ) FROM CUSTOMER; Polecenie SELECT iteruje po wszystkich wierszach tabeli CUSTOMER Dla każdego wiersza wykonywane jest polecenie XQuery Klauzula passing wiąże zmienną $i z wartością kolumny INFO w bieżącym wierszu Następuje wykonanie polecenia XQuery XMLQUERY zwraca rezultat wykonania polecenia XQuery, jako wartość typu XML 30

Funkcja XMLTABLE Tworzy tymczasową tabelę z danych XML 31

Funkcja XMLEXISTS Predykat testujący, czy polecenie XQuery zwraca jakąś wartość 32

Funkcja XMLEXISTS (2) ID klientów, którzy mają asystenta select CID from CUSTOMER where XMLEXISTS ('$d/customerinfo/assistant' passing INFO as "d"); Nazwy klientów (element name) z Toronto/Kanada select XMLQUERY('$d/customerinfo/name' passing INFO as "d") from CUSTOMER where XMLEXISTS('$x/customerinfo/addr[@country ="Canada" and city="toronto"]' passing INFO as "x"); 33

XMLELEMENT Pozwala skonstruować dokument XML na podstawie danych z relacyjnej tabeli select XMLELEMENT (NAME "PurchaseOrder", XMLELEMENT (NAME "poid", POID), XMLELEMENT (NAME "status", STATUS), XMLELEMENT (NAME "custid", CUSTID), XMLELEMENT (NAME "orderdate", ORDERDATE)) from PURCHASEORDER where POID = 5001; 34

Indeksy XML Indeksy zakładane na kolumnach XML Poprawiają efektywność wykonania zapytań kierowanych do danych XML Podobnie jak w przypadku tradycyjnych indeksów mają pewne wady: Wpływ na polecenia modyfikujące Zajmowana przestrzeń dyskowa 35

Indeksy XML Elementy indeksów XML umożliwiają dostęp do gałęzi dokumentów XML poprzez utworzenie kluczy indeksu w oparciu o wyrażenia wskazujące odpowiednie węzły CREATE INDEX IDX1 ON TB1(XMLDOC) GENERATE KEY USING XMLPATTERN /company/emp/salary AS SQL DOUBLE; CREATE INDEX IDX2 ON TB1(XMLDOC) GENERATE KEY USING XMLPATTERN //@id AS SQL VARCHAR(20); 36

Indeksy XML a tradycyjne indeksy Tradycyjne indeksy Oparte na kolumnach Jedna lub więcej kolumn Indeksy XML Oparte na wyrażeniach XML ścieżkach Tylko jedna kolumna XML 1 wiersz 1 klucz indeksu Wszystkie gałęzie, które satysfakcjonują predykat XML 1 dokument 0, 1 lub więcej kluczy indeksu B-Tree B-Tree 37

Budowa indeksu Indeks XML zawiera pary ścieżka-wartość Ścieżka jest identyfikowana przez PathID DocID wskazuje na region zawierający korzeń dokumentu Bezpośredni dostęp do podelementów drzewa 38

Wsparcie dla programistów 39

Podsumowanie i przypomnienie Natywny sposób przechowywania danych XML w DB2 Nie ma wymagania ekstrakcji danych, użycia typów CLOB, BLOB Zoptymalizowany silnik dla języków XPath i XQuery Wysoka wydajność Możliwość indeksowania danych Dokumenty nie są parsowane w momencie wykonania zapytania W pełni zintegrowane przetwarzanie relacyjne i XML Bez konieczności wewnętrznej translacji zapytań XQuery do SQL Bezproblemowe przetwarzanie danych różnego rodzaju za jednym zamachem 40

Dzikękuję za uwagę! Pytania? Dariusz.Mrozek@polsl.pl