You are on page 1of 42

Laboratorium Oprogramowania IBM Polska w Krakowie

System zarządzania
bazami danych IBM DB2

- zajęcia nr 6 – pureXML

Marcin Marczewski
Marcin.Marczewski@pl.ibm.com

12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Zajęcia nr 6

pureXML w DB2
– wbudowany typ danych XML a kolumny XML
– zapytania do danych XML
– IBM DB2 Developer Workbench

 Ćwiczenia praktyczne!!!

2 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

pureXML

3 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Czym jest XML?

Język znakowania teksu, czytelny także dla człowieka


<book>
<authors>
<author id=“47”>John Doe</author>
<author id=“58”>Peter Pan</author>
</authors>
<title>Database systems</title>
<price>29</price>
<keywords>
<keyword>SQL</keyword>
<keyword>relational</keyword>
</keywords>
</book>

XML = eXtensible Markup Language


4 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

Czym jest XML?


Także język opisu danych.
Atrybut
<book>
Znacznik <authors>
początkowy <author id=“47”>John Doe</author>
<author id=“58”>Peter Pan</author>
Znacznik </authors>
końcowy <title>Database systems</title>
<price>29</price> Element
Znacznik
<keywords>
początkowy
<keyword>SQL</keyword>
Znacznik <keyword>relational</keyword>
końcowy </keywords>
</book>
Dane
5 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

Czym jest XML?


<book>
<authors> Parsowanie XML
<author id=“47”>John Doe</author>
<author id=“58”>Peter Pan</author>
</authors>
<title>Database systems</title>
<price>29</price>
<keywords>
<keyword>SQL</keyword> book
<keyword>relational</keyword>
</keywords>
</book>
authors title price keywords
Każdy węzeł
ma ścieżkę
Database
(XPath) author author
Systems
29 keyword keyword
/book
/book/authors
id=47 John Doe id=58 Peter Pan SQL relational
/book/authors/author
/book/authors/author/@id
(...)
6 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

Wady i zalety XML


Łatwy do odczytania, zarówno dla człowieka, jak dla maszyny
(zwykły tekst)

Zawiera dane i jednocześnie opisuje znaczenie danych


(self-documenting)

Może reprezentować praktycznie dowolny rodzaj danych:


hierarchie, rekordy, listy (elastyczność, uniwersalność).

Sformalizowany zapis pozwala na komputerowe przetworzenie,


weryfikację dokumentów XML (well-formed).

Ma też swoje wady, do głównych można zaliczyć nadmiarowość


informacji (powtarzające się znaczniki, zagnieżdżone elementy).

Nie wszystko da się wyrazić elastycznie w postaci struktury


hierarchicznej (albo Film->Aktor, albo Aktor->Film)

7 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Zastosowanie XML

Elektroniczna wymiana danych


Usługi e-biznesu: transakcje zakodowane w postaci XML
(XML podstawą Web Serwisów), wiele formatów
pochodnych (np. XBRL, FIXML, ACORD,…)

Komunikacja w sferze publicznej


(np. podatnik – urząd podatkowy).

Informacje o luźniej strukturze, trudnej do


jednoznacznego opisana w momencie projektowania, np.
formularze WWW, wymagające częstych zmian;

Format przechowywania dokumentów

8 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XMLRóżnice
w relacyjnych bazach
pomiędzy modelem XML danych
a relacyjnym:

Model XML jest modelem hierarchicznym, natomiast


dane relacyjne mają płaską strukturę.

Dane XML opisują swoje znacznie, a dane relacyjne


nie.

Dane XML mają określoną kolejność, a dane


relacyjne nie.

kłopotliwa konwersja

nie tak trudna konwersja

9 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w relacyjnych bazach danych

W dużych obiektach W tabelach relacyjnych


tzw. CLOB-ach /
BLOB-ach

10 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w polach binarnych


Szybkie wstawianie oraz pobieranie
+ całych dokumentów

+ Swoboda definiowania struktury


dokumentu (schematu)

- Konieczność parsowania dokumentu w


momencie realizowania zapytań przy
odwołaniu do elementów nie
poindeksowanych (niska wydajność
zapytań)

Daje dużą elastyczność w przechowywaniu dokumentów XML o różnej


strukturze, niestety kosztem wydajności zapytań.

11 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w tabelach relacyjnych (shredding)

Schemat dokumentu (metadane) Zapytania


Dokument
XML do dokumentów

XQuery

Kod mapujący Kod pobierający

SQL Insert SQL Select

Dokument dekomponowany do
tabel relacyjnych

12 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w tabelach relacyjnych (shredding)


Zwykle dla każdego elementu, który może wystąpić wiele razy
tworzona jest tabela relacyjna.
<? xml version=“1.0” ?> POid CustId
<purchaseOrder id=‘12345” secretKey=‘4x%$^’>
987564331 A6789
<customer id=“A6789”>
<name>John Smith Co</name> …. …
<address>
<street>1234 W. Main St</street> POid PartNo Quantity
<city>Toledo</city>
<state>OH</state>
<zip>95141</zip> 987564331 A54 12
</address>
</customer> 987564331 985 1
<itemList>
…. …. ….
<item>
<partNo>A54</partNo>
<quantity>12</quantity> Custid Name Street City State Zip
</item>
<item>
<partNo>985</partno> A6789 John Smith Co 1234 W. Main St Toleodo OH 95141
<quantity>1</quantity>
</item>
… … … … … …
</itemList>
</purchaseOrder>

13 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w tabelach relacyjnych (shredding)

+ Stosunkowo szybkie wyszukiwanie,


nawet mimo konwersji XQuery na SQL

- Konieczność definiowania struktury


(schematu) dokumentu przed wstawieniem

- Tylko jeden schemat dla kolumny

- Problem ze zmianą schematu

Mimo stosunkowo dobrej wydajności wyszukiwania, tracimy to co


motywuje do korzystania z formatu XML – elastyczność.

14 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w DB2 9
Dokument jest wstawiany do pola o typie XML, w tle węzły
dokumentu są dekomponowane do hierarchicznej postaci

Duża elastyczność, brak wymogu


+ definiowania schematu

Szybkie wyszukiwanie, bez


+ konieczności dynamicznego
parsowania

Spowolnione przy wstawianiu


= dokumentu.

Hybrydowa architektura serwera DB2 pozwala zachować elastyczność formatu


XML przy zachowaniu odpowiedniej wydajności.
15 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

XML w DB2 9
Serwer
Klient
SQL/XML DB2 Storage
Interfejs
DB2 Klient / relacyjny
DB2
Aplikacja Relacyjny
Engine
XQuery
Interfejs XML
XML

Wiele interfejsów dostępu do Obsługa XML wbudowana w DB2


danych Wysoka wydajność dzięki głębokiej integracji
SQL/XML oraz XQuery XML w silnik DB2
⇒ Obydwa języki mogą pobierać
dane Zoptymalizowane przechowywanie XML
⇒ Pozwala dopasować się do Nowy sposób składowania oraz indeksowania
potrzeb danej aplikacji dokumentów XML – silnik hierarchiczny.

16 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w DB2 9
create table T (i int, doc xml)
insert into T values (22, ?)
insert into T values (22, xmlvalidate(?))
SQL jako
język
select i, doc from T podstawowy

select i, xmlquery(‘$d//address’ passing doc as “d”) from T

xquery for $d in db2-fn:xmlcolumn(‘T.DOC’)//address return $d

XQuery jako język podstawowy

17 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XQuery – wyrażenia FLWOR

XQuery
 FOR: dokonuje iteracji wiążąc zmienną z elementem
 LET: wiąże zmienną z sekwencją
 WHERE: eliminuje elementy do iteracji
 ORDER: szereguje elementy do iteracji
 RETURN: buduje wynik zapytania

FOR $movie in db2-fn:xmlcolumn(‘TABLE1.MOVIES’)


LET $actors := $movie//actor
<movie>
WHERE $movie/duration > 90 <title>Chicago</title>
ORDER by $movie/@year <actor>Renee Zellweger</actor>
RETURN <movie> <actor>Richard Gere</actor>
{$movie/title, $actors} <actor>Catherine Zeta-Jones</actor>
</movie> </movie>
18 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

SQL/XML
Dept Unit
deptID unitID deptdoc <dept bldg="G"> unitID Empcount bldg

100 10
<name>Engineering</name> 10 234 G
<manager>Anjul</manager>
110 10 20 123 H
<backup>Susan</backup>
220 20 30 32 H
<admin>Mary</admin>
240 20
<chargecode>CW345</chargecode>
310 30
</dept>

select d.deptID, xmlquery(‘$deptdoc/dept/name’ passing d.deptdoc as “deptdoc“), u.empcount


from dept d, unit u
where d.unitID = u.unitID and u.empcount > 200
and xmlquery(‘$deptdoc/dept/@bldg’ passing d.deptdoc as “deptdoc“) = u.bldg
and xmlexists(‘$deptdoc/dept/name’ passing d.deptdoc as “deptdoc“)

Złączenie danych XML z relacyjnymi


19 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

Dekomponowanie do danych relacyjnych


Dokument XML Tabela relacyjna
<ipo:purchaseOrder ORDERID ORDERDATE XMLPO

xmlns:ipo="http://www.example.com/IPO" Typ CHAR(13) Typ DATE Typ XML


orderDate="1999-12-01“ 19991201-AZFG 1999-12-01 <ipo:purchaseOrder …>
orderID=“19991201-AZFG”>
…….
<shipTo exportCode="1" > … </shipTo>
<billTo>……. </billTo>
</ipo:purchaseOrder>
<items>
<item partNum="833-AA">
<productName>…</productName>
<quantity>…</quantity>
Schemat XML
<USPrice>…</USPrice>
<ipo:comment>…</ipo:comment> <complexType name="PurchaseOrderType">
<shipDate>1999-12-05</shipDate> <sequence>…..</sequence>
</item></items>
<attribute name="orderDate" type="date“
</ipo:purchaseOrder>
db2-xdb:rowSet = “PURCHASE_ORDER”
db2-xdb:column = “ORDERDATE” />
Dekompozycja może być <attribute name="orderID" type=“xs:string“
zrealizowana zarówno po db2-xdb:rowSet = “PURCHASE_ORDER”
stronie bazy danych, jak i po db2-xdb:column = “ORDERID” />
stronie aplikacji </complexType>
20 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

Publikowanie dokumentów XML z tabel


FIRSTNAME LASTNAME DEPARTMENT

SEAN LEE A00

MICHAEL JOHNSON B01

VINCENZO BARELLI A00


SELECT
XMLSERIALIZE ( CONTENT
XMLELEMENT (NAME "Department",
XMLATTRIBUTES (e.department AS "name" ),
XMLAGG ( XMLELEMENT (NAME "emp", e.firstname))) as CLOB(10000) )
AS "department_list"
department_list
FROM employee e GROUP BY e.department;
<Department name="A00">
<emp>VINCENZO </emp>
<emp>SEAN</emp>
</Department>
<Department name="B01">
<emp>MICHAEL</emp>
</Department>

21 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Tworzenie bazy obsługującej XML

 Baza danych musi być w Unicode UTF-8 (od 9.5 nie)

CREATE DATABASE test USING CODESET utf-8 TERRITORY US

 Tworzenie tabeli z kolumnami XMLowymi

CREATE TABLE o2
(oid INT, otype CHAR(2), ocust XML, oinfo XML)

 Baza danych – jedna partycja

22 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Dodawanie rekordów do tabeli

insert into order(orderid,orderinfo)


values (4,'<?xml version="1.0"?>
<person>
<name>John Dee</name>
<age>37</age>
</person>');

23 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML schema, walidacja danych XML

1 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema„>
2 <xsd:element name="person">
3 <xsd:complexType>
4 <xsd:sequence>
5 <xsd:element name="name" type="xsd:string" />
6 <xsd:element name="age" type="xsd:integer" />
7 </xsd:sequence>
8 </xsd:complexType>
9 </xsd:element>
10 </xsd:schema>

24 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML schema w DB2

 Rejestracja schematu XML

register xmlschema http://person from c:\person.xsd


as john.person;
complete xmlschema john.person;

 Usuwanie schematu XML


DROP SCHEMA person RESTRICT;

25 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML schema, walidacja danych XML

 Walidacja na serwerze
– explicit
insert into test values xmlvalidate
(xmlparse(document'<XML document>'
preserve whitespace) ACCORDING TO XMLSCHEMA ID sample.pets)

–implicit
insert into test values xmlvalidate
(xmlparse(document'<XML document>'
preserve whitespace))

 Walidacja na poziomie aplikacji


 Brak walidacji

26 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

SQL/XML (1)

 Jak odpytywać dane w DB2 V9.1?


– XQuery jako podstawowy język zapytań
– SQL jako podstawowy język zapytań

– SQL/XML in DB2
• więcej niż 15 funkcji zaimplementowanych w DB2 9
• wyszukiwanie danych wewnątrz dokumentów XML
• konwersja danych relacyjny do danych XML
• konwersja danych XML do danych relacyjnych

27 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

SQL/XML (1)

28 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

SQL/XML (2)

 SQL/XML functions supported in DB2:


– XMLQUERY
– XMLTABLE
– XMLEXISTS
– XMLCAST
– XMLPARSE
– XMLVALIDATE
– IS VALIDATED

29 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

SQL/XML (3)

 SQL/XML functions supported in DB2:


– XMLELEMENT

– XMLATTRIBUTES
– XMLFOREST
– XMLCONCAT
– XMLNAMESPACES
– XMLAGG

30 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

SQL/XML (4)

 SQL/XML functions supported in DB2:


– XMLSERIALIZE

– XMLCOMMENT
– XMLPI
– XMLTEXT
– XMLDOCUMENT

31 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w DB2 9 a indeksy


Indeksowanie określonych elementów dokumentu XML

create unique index idx1 on dept(deptdoc) generate key


using xmlpattern '/dept/employee/@id' as sql double
create index idx2 on dept(deptdoc) generate key
using xmlpattern '//text()' as sql varchar(hashed)

Indeksy pełnotekstowe na dokumentach XML (w standardzie)

create index text_idx1 for text on dept (deptdoc)


format xml
select deptdoc from dept where
contains (deptdoc,'sections("/dept/comment")
"olimpiada" ') = 1

32 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Indeksy XML & Visual Explain


/customerinfo/name="Matt Foreman" AND phone = "905-555-4789"

33 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Narzedzia export/import dla XML

 Dane XML mogą być eksportowane

34 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Narzedzia export/import dla XML

 Dane XML mogą być importowane

35 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

XML w DB2 v9.5

 Aktualizacja fragmentu dokumentu XML


 inline XML / kompresja XML
 Triggery sprawdzające dokumenty XML
 Funkcje XLST
 XML Load
 XML nie tylko w bazach UNICODE
 Replikacja dokumentów XML
 Przyjazne funkcje publikowania XML
 Federowanie tabel XML
 IBM Data Studio

 Jeszcze więcej w DB2 9.7 (COBRA)

36 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Więcej informacji o XML w DB2

 DB2 9: pureXML Guide


redbook

 Query XML data with DB2 9


(CG10)

 Query and Manage XML Data


with DB2 9 (CG13)

 Manage XML data with DB2 9


(CG16)

 DeveloperWorks: ibm.com/developerworks/db2
37 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation
System zarządzania bazami danych IBM DB2

IBM DB2
Developer Workbench

38 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

IBM DB2 Developer Workbench (1)

 IBM DB2 Developer Workbench


– oparty na platformie Eclipse
– zastępuję poprzednie DB2 Development Center
– wizualnie buduje zapytania SQL i XQuery
– wykorzystywane do budowania procedur składowanych,
funkcji użytkownika itd.
– wykorzystywany do debugowania procedur składowanych
SQL i Java

39 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

IBM DB2 Developer Workbench (2)

40 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Ćwiczenia praktyczne

41 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation


System zarządzania bazami danych IBM DB2

Pytanie dodatkowe nr 2

 Pytanie dodatkowe nr 2 (za 6pkt)

Jakie funkcje SQL/XML są wspierane w DB2 9.5/9.7?


Opisz (w języku polskim) zastosowanie każdej z funkcji.
Napisz przykładowe zapytania wykorzystujące wszystkie z funkcji.

Odpowiedzi należy nadsyłać na adres Marcin.Marczewski@pl.ibm.com


do końca dnia 5.01.2010r.

42 Laboratorium Oprogramowania IBM Polska w Krakowie 12/15/2009 © 2007 IBM Corporation

You might also like