DB2 XML Extender. Opracowane na podstawie dokumentacji IBM XML Extender



Podobne dokumenty
Wykład 8. SQL praca z tabelami 5

Język SQL, zajęcia nr 1

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Projektowanie systemów baz danych

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

Wykład 5. SQL praca z tabelami 2

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

XML w bazie danych IBM DB2

Autor: Joanna Karwowska

Wykład 05 Bazy danych

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

Struktura drzewa w MySQL. Michał Tyszczenko

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

Oracle11g: Wprowadzenie do SQL

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

Bazy Danych i Usługi Sieciowe

Relacyjne bazy danych. Podstawy SQL

Bazy danych i usługi sieciowe

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

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

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

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

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

Model semistrukturalny

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

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

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

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

Nowe technologie baz danych

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

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Oracle PL/SQL. Paweł Rajba.

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

Relacyjne bazy danych. Podstawy SQL

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

Bazy danych. Dr inż. Paweł Kasprowski

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

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

Bazy danych Ćwiczenia projektowe

Systemy GIS Tworzenie zapytań w bazach danych

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

XML-owe bazy danych ćwiczenia 1

Bazy danych i usługi sieciowe

Podstawowe wykorzystanie Hibernate

Bazy danych 10. SQL Widoki

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

Komunikacja z bazą danych psql

Bazy danych - Materiały do laboratoriów VIII

Widok Connections po utworzeniu połączenia. Obszar roboczy

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

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

ACESS- zadania z wykorzystaniem poleceń SQL

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

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

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Wykład 4. SQL praca z tabelami 1

Bazy danych. Polecenia SQL

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

Pakiety podprogramów Dynamiczny SQL

PHP: bazy danych, SQL, AJAX i JSON

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

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

Programowanie w Ruby

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

Wykład 6. SQL praca z tabelami 3

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

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

Oracle PL/SQL. Paweł Rajba.

15. Funkcje i procedury składowane PL/SQL

Database Connectivity

BAZY DANYCH wprowadzenie do języka SQL. Opracował: dr inż. Piotr Suchomski

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Paweł Rajba

Jerzy Nawrocki, Wprowadzenie do informatyki

Multimedialne bazy danych - laboratorium

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

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

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

BAZY DANYCH. CREATE TABLE dbo.wydzialy (ID INT, Akronim VARCHAR(4) NOT NULL, Wydzial VARCHAR(30) NOT NULL, CONSTRAINT Kluczyk PRIMARY KEY(ID) )

Wykład 2. SQL 1 Structured Query Lenguage

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

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

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

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

2017/2018 WGGiOS AGH. LibreOffice Base

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

Instalacja MySQL.

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

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

Oracle PL/SQL. Paweł Rajba.

NARZĘDZIA WIZUALIZACJI

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

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

Transkrypt:

DB2 XML Extender Opracowane na podstawie dokumentacji IBM XML Extender mgr inż. Adam Duszeńko Politechnika Śląska w Gliwicach, 2005

Rozszerzenie DB2 XML Extender umożliwia: - dostęp i składowanie dokumentów XML, - tworzenie nowych dokumentów XML na podstawie relacyjnych danych, - dekompozycj ę dokumentów XML na posta ć danych relacyjnych. Funkcjonalno ść ta jest realizowana poprzez nowe funkcje, typy danych i procedury składowane bazy danych. Głównym językiem operowania na danych pozostaje SQL nawet w przypadku operowania bezpośrednio na dokumentach XML. XML Extender umożliwia składowanie całych dokumentów XML w strukturach bazy danych DB2 lub ich dekompozycj ę na tabele relacyjne bazy. Możliwe jest równie ż dołączanie do przestrzeni danych bazy zewnętrznych dokumentów XML znajdujących si ę w lokalnym systemie plików poprzez zapis wskaźnika do zasobów systemu plików. Dostępne są dwie metody obsługi dokumentów XML: XML Columns metoda ta pozwala składować całe dokumenty wewnątrz bazy DB2. Dokumenty umieszczone w przeznaczonych do tego kolumnach mogą być aktualizowane, przeszukiwane, pobierane. Wybrane elementy dokumenty i ich atrybuty można mapować na pomocnicze tabele (ang. side tables) na których dla przyspieszenia operacji tworzone są indeksy. XML Collections metoda pozwalająca zmapować strukturę dokumentu XML z tabelami bazy DB2 dzięki czemu możliwe jest tworzenie dokumentów XML z danych umieszczonych w tabelach, oraz dekomponowanie istniejących dokumentów na tabele. Dzięki metodzie kolumn XML składowane dokumenty można: Pobierać, przeszukiwać elementy i atrybuty dokumentu (wykonując wyszukiwanie bezpośrednio w dokumencie XML, tabelach pomocniczych lub za pomocą wyszukiwania pełnotekstowego) aktualizować wartości elementów i atrybutów udostępniać innym aplikacjom Metoda kolekcji XML umożliwia: tworzenie nowych dokumentów XML w oparciu o dane znajdujące się w relacyjnych tabela bazy (powiązanie pomiędzy tabelami a elementami i atrybutami dokumentu XML jest definiowane w opisanym niżej pliku DAD). składowanie zawartości dokumentów XML z pominięciem nadmiarowych znaczników dostęp do danych plików XML tak jak do danych relacyjnej bazy danych. Document Type Definition (DTD) XML Extender współpracuje z plikami DTD opisującymi struktur ę dokumentów. Włączenie obsługi dokumentów XML przez baz ę powoduje stworzenie tabeli DTD_REF. Każdy wiersz tej tabeli zawiera plik DTD wraz z dodatkowymi metadanymi. Dokumenty zachowane w tej tabeli wykorzystywane s ą do przeprowadzania walidacji dokumentów. Przykład: DTD file example (customer.dtd file): <?xml version="1.0"?> <!ELEMENT person (firstname,lastname,phone*)> <!ATTLIST person id CDATA #REQUIRED > <!ELEMENT firstname (#PCDATA )> <!ELEMENT lastname (#PCDATA )> <!ELEMENT country (#PCDATA )> <!ELEMENT phone (type,number)>

<!ELEMENT type (#PCDATA )> <!ELEMENT number (#PCDATA )> Document Access Definition Wspomniane wcześniej mapowanie struktury dokumentu XML na struktur ę relacyjnych tabel bazy danych realizowane jest przez pliku DAD. Plik DAD jest plikiem XML wykorzystywanym w obu metodach składowania dokumentów XML w bazie do określania powiąza ń między elementami i atrybutami z kolumnami tabel. Dokumenty DAD składowane s ą w tabeli XML_USAGE tworzonej wraz z tabel ą DTD_REF. Do wskazywania elementów i atrybutów w dokumencie XML wykorzystywana jest notacja zgodna z XPath. Praca z rozszerzeniem XML Extender: 1. Stworzenie bazy danych. Za pomoc ą wiersza polece ń bazy (Command Line Processor) lub narzędzia Command Center wydajemy polecenie CREATE DATABASE MYDB gdzie MYDB to nazwa tworzonej bazy danych. 2. Po stowrzeniu bazy należy j ą odpowiednio posłączy ć do rozwszerzenia: a. Za pomoc ą DB2 Command Window, łączymy si ę z utworzon ą poprzednio baz ą danych: db2 connect to mydb b. Zmieniamy bieżący katalog na podkatalog BND katalogu instalacji XML Extender. Standardowo XML Extender jest instalowany w C:\DXX, więc należy przej ść do C:\DXX\BND za pomoc ą komendy: cd /d C:\DXX\BND c. Podłączamy baz ę do XML Extender poprzez: db2 bind @dxxbind.lst d. Zmieniamy bieżący katalog na podkatalog BND katalogu instalacji bazy DB2 za pomoc ą komendy: cd /d %DB2PATH%\bnd e. Podłączamy baz ę do CLI poprzez: db2 bind @db2cli.lst f. Rozłączamy si ę z baz ą: db2 terminate Pierwszym krokiem do umożliwienia składowania dokumentów XML w bazie danych DB2 jest uaktywnienie rozszerzenia XML Extender. Krok ten powoduje: Stworzenie schematu db2xml (wraz z odpowienimi uprawnieniami). Zadeklarowanie typów user-defined (UDT) XMLVARCHAR, XMLCLOB, XMLFILE, oraz wielu user-defined functions (UDF). Tabele administracyjne wykorzystywane przez DB2 XML Extender, DTD_REF i XML_USAGE. Rozszerzenie DB2 Extender udostępnia polecenie dxxadm. W celu uaktywnienia rozszerzenia XML należy uruchomić to polecenie z nast. parametrami dxxadm enable_db mydb gdzie mydb to nazwa bazy danych dla której rozszerzenie ma być aktywne. Po uaktywnieniu rozszerzenia można ju ż umieszcza ć we wskazanej bazie dokumenty XML stosując metody składowania XML Collection lub XML Column. Tworzenie tabel dla XML Aby rozpocz ąć składowanie dokumentów XML w bazie należy najpierw przygotowa ć tabele z przeznaczonymi dla nich kolumnami. Możliwe jest stworzenie tabeli od podstaw lub na drodze zmiany definicji istniejącej tabeli przez dodanie nowej kolumny. DB2 XML Extender dostarcza trzy nowe typy danych umieszczone w schemacie db2xml przeznaczone do składowania danych XML: XMLVarchar: przeznaczony do składowania dokomentów XML o rozmiarze do 3 KB. XMLCLOB: przeznaczony do składowania dokomentów XML o rozmiarze do 2 GB. XMLFILE: Odniesienie do zasobów dyskowych gdzie fizycznie składowany jest dokument. Poniższy przykład stworzy tabel ę wykorzystując ą metod ę XML Column i typ XMLCLOB: create table person1(id integer not null primary key, person db2xml.xmlclob not logged);

W celu zmodyfikowania istniejącej tabeli przez dodanie kolumny dla XML można uży ć polecenia postaci: alter table person2 add person db2xml.xmlvarchar; Tworzenie pliku DAD Plik Document Access Definition określa w zasady dostępu do składowanych dokumentów XML. W przypadku metody XML Column, plik DAD jest potrzebny tylko w przypadku gdy chcemy przeprowadza ć walidacj ę dokumentów przed ich składowaniem w bazie, lub gdy chcemy wykorzystać tabele pomocnicze do stworzenia indeksów na dokumentach. Tabele pomocnicze s ą tworzone przez rozszerzenie XML Extender w celu dodania indeksów przyspieszających dostęp do węzłów dokumentu XML składowanego za pomoc ą metody XML Column. Przed stworzeniem dokumentu DAD należy: Określi ć które elementy i atrybuty dokumentu XML będ ą najczęściej kryterium wyszukiwania Dla każdego elementu i atrybutu, który chcemy indeksowa ć określi ć: - Ścieżk ę dostępu: Za pomoc ą modelu XPath wskaza ć element który ma zostać połączony ze struktur ą relacyjnej tabeli indeksów. - Typ danych do którego element lub atrybut maj ą zosta ć przekonwertowane. W ramach dokumnetu XML wszystkie elementy i atrybuty s ą analizowane jako dane znakowe, natomiast w tabeli pomocniczej należy używa ć typów relacyjnej bazy danych DB2. - Ilo ść wystąpie ń. Określi ć czy jest to warto ść pojedyncza czy wielokrotna. Elementy i atrybuty nie występujące wielokrotnie, znajdujące si ę na tym samym poziomie dokumentu XML mog ą by ć umieszczane w tych samych tabelach pomocniczych. Elementy i atrybuty występujące wielokrotnie należy umieszcza ć w osobnych taelach pomocniczych. Czy ma zachodzi ć walidacja dokumentów. Zanim uruchomimy walidacj ę należy najpierw zarejestrowa ć odpowiedni dokument DTD. W tym celu należy dokument DTD umieści ć w tabeli DTD_REF znajdującej si ę w schemacie DB2XML dodając do niego unikalny identyfikator DTD ID. Za pomoc ą operacji INSERT języka SQL umieszczamy plik DTD w kolumnie typu XMLCLOB w tabeli DTD_REF wykorzystując funkcj ę XMLClobFromFile dostarczan ą przez DB2 XML Extender. insert into db2xml.dtd_ref(dtdid, content, usage_count, author, creator,updator) values('c:\code\person.dtd', db2xml.xmlclobfromfile('c:\code\person.dtd'), 0, 'xmlext','xmlext', 'xmlext'); Teraz możemy ju ż stworzy ć odpowiedni plik DAD: <?xml version="1.0"?> 1 <!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd"> 2 <DAD> 3 <dtdid>c:\sg246130\code\person.dtd</dtdid> 4 <validation>no</validation> 5 <Xcolumn> 6 <table name="person_names"> 7 <column name="fname" 8 type="varchar(50)" 9 path="/person/firstname" 10 multi_occurrence="no"/> 11 <column name="lname" type="varchar(50)" path="/person/lastname" multi_occurrence="no"/> </table> <table name="person_phone_number"> 12 <column name="pnumber" type="varchar(20)" path="/person/phone/number" multi_occurrence="yes"/> 12 </table> <table name="person_phone_number"> <column name="pnumber"

type="varchar(20)" path="/person/phone/number" multi_occurrence="yes"/> </table> <table name="person_phone_type"> <column name="ptype" type="varchar(20)" path="/person/phone/type" multi_occurrence="yes"/> </table> </Xcolumn> </DAD> 1. Dokument DAD jest równie ż dokumentem XML. 2. Dokument DAD musi by ć zgodny z specyfikacj ą zawart ą w DAD.DTD dostarczan ą przez DB2 XML Extender w podkatalogu dtd katalogu instalacyjnego rozszerzenia. 3. Dokumenty DAD zaczynaj ą si ę i kończ ą znacznikami <DAD>. 4. W korzeniu pliku DAD znajduj ą si ę 3 znaczniki: <dtdid>, <validation> oraz <Xcolumn> lub <Xcollection>. Znacznik dtdid odnosi si ę do identyfikatora nadanego dokumentowi DTD podczas umieszczania go w tabeli DTD_REF. Wykorzystywany jest podczas walidacji dokumentów. 5. Umieszczenie w drugim znaczniku YES lub NO decyduje o tym czy walidacja będzie przeprowadzana. W naszym przypadku rezygnujemy z walidacji. 6. W powyższym przypadku używamy metody XML Column. 7. Znacznik <table> pozwala określi ć kolejne tabele pomocnicze. 8. Dla każdej tabeli pomocniczej określamy jej struktur ę za pomoc ą zniaczników <column>. Każda kolumna <column> posiada 4 atrybuty: nazw ę, ścieżk ę, typ i ilo ść wystąpie ń. Atrybut nazwy znacznika <column> określa nazw ę tabeli pomocniczej. 9. Atrybut scieżki wskazuje ścieżk ę w strukturze dokumentu XMLdo indeksowanego elementu. Wykorzystywana jest notacja XPath. 10. Atrybut typu określa typ kolumny. 11. Ilo ść wystąpie ń określa czy element może wystąpi ć wielokrotnie w dokumencie. Uruchamianie metody XML Column Po stworzeniu pliku DAD należy określi ć do której kolumny w której tabeli plik ten si ę odnosi. W tym celu ponownie wykorzystujemy polecenie administracyjne dxxadm, tym razem z opcją enable_column. Wymagane parametry to: 1. Nazwa bazy danych 2. Nazwa tabeli zawierającej XML Column 3. Nazwa kolumny w tej tabeli 4. Nazwa pliku DAD skojarzonego z t ą XML Column For our simple illustration, the command to enable the XML Column is: dxxadm enable_column xmltest person1 person c:\sg246130\code\personcolumn.dad -r id Operacje Insert, delete, extract, oraz update Teraz baza jest gotowa do przetwarzania dokumentów XML. Możliwe s ą następujące operacje: składowanie w bazie przeszukiwanie aktualizacja usuwanie Do każdej z tych operacji DB2 XML Extender dostarcza cztery grupy user-defined funkcji (UDFs). Składowanie Funkcje UDF składowania wykorzystywane s ą do pobrania dokumentu XML do zachowania w bazie. Dostępne s ą cztery funkcje (zależnie od źródła i przeznaczenia dokumnetu): XMLVarcharFromFile(): import dokumentu XML z pliku lokalnego systemu plików do kolumny XMLVarchar XMLCLOBFromFile(): import dokumentu XML Document z pliku lokalnego systemu plików do kolumny XMLCLOB

XMLFileFromVarchar(): odczyt dokumentu XML z pamięci jako VARCHAR, zapis do systemu plików i wstawienie nazwy pliku do pola typu XMLFile XMLFileFromCLOB(): odczyt dokumentu XML z pamięci jako CLOB, zapis do systemu plików i wstawienie nazwy pliku do pola typu XMLFile W naszym przykłądzie umieszczamy plik XML person.xml umieszczony w katalogu C:\code w tabeli person1: insert into person1 values(1, db2xml.xmlclobfromfile('c:\code\person.xml')); Przeszukiwanie Dostępne s ą dwie metody przeszukiwania dokumentów składowanych w bazie DB2: z użyciem tabel pomocniczych Na przykład szukamy służbowego numeru telefonu Pana Smith : select pnumber from person_names t1, person_phone_number t2, person_phone_type t3 where t1.id = t2.id and t1.id = t3.id and t2.dxx_seqno = t3.dxx_seqno and t1.lname='smith' and t3.ptype='office'; z użyciem funkcji ekstrakcji danych elementów i atrybutów bezpośrednio z dokumentu XML zachowanego w DB2 Column. Funkcje te umożlwiaij ą zarówno przeszukiwanie jak i odczyt wartości w zależności czy sa użyte w frazie select lub where zapytania. Wszystkie te funkcje bazuj ą na notacji XPath używanej do wskazywania żądanego elementu lub atrybutu. Funkcje UDF ekstrakcji dzielimy na grupy: - skalarne: odczytujące pojedynczy element lub atrybut. Element taki lub atrybut musi wystąpi ć w dokumencie tylko raz. Zwracany jest typ skalarny bazy DB2. - tablicowe: odczytujące elementy lub atrybuty występujące wielokrotnie w dokumencie. Zwracana jest tabela. Każda funkcja ekstrakcji przyjmuje dwa parametry: - dokument XML do przeszukania (XMLFile, XMLVarchar lub XMLCLOB) - ścieżka wyrażona w notacji XPath wskazująca element lub atrybut Przyk ad: ł select db2xml.extractvarchar(person, '/person/country') from person1 t1, person_names t2 where t1.id = t2.id

and t2.lname='smith' Przykład 2: select lname, fname from person1 t1, person_names t2 where t1.id = t2.id and db2xml.extractvarchar(person, '/person/country') = 'US'; Aktualizacja Możliwe s ą dwie metody aktualizacji dokumentów XML: Wykorzystanie zapytania update SQL do zamiany składowanego dokumentu w całości: update person1 set person = db2xml.xmlclobfromfile('c:\code\personbis.xml'); Tablice pomocnicze s ą w takiej sytuacji automatycznie modyfikowane dla utrzymania synchronizacji z aktualnie składowanym dokumentem. Wykorzystanie funkcji Update UDF. Funkcje te umożliwiaj ą modyfikacj ę dokumentu XML zmieniając warto ść wskazanych elementów lub atrybutów bez konieczności zmiany całego dokumentu. Przykład: update person1 set person = db2xml.update(person, /person/country, UK ); Pobieranie Dostępne s ą różne metody pobierania dokumentów XML. Jeżeli dokument XML by ł zapisany w postaci XMLCLOB lub XMLVarchar, możliwe jest zrzutowanie go bezpośrednio do CLOB or VARCHAR. Funkcje rzutowania dostępne s ą w postaci UDF w schemacie db2xml. Oprócz tego DB2 XML Extender dostarcza przeciążon ą funkcj ę UDF Content pozwalając ą na pobieranie danych z bazy DB2. Dostępne s ą trzy implementacje tej funkcji eksportu dokumentu XML z: XMLVarchar do pliku XMLCLOB format do pliku XMLFile do CLOB Przykład: select db2xml.content(person, 'c:\retrievedperson.xml') from person1 where id = 1; Metoda XML Collections Metoda XML Collections pozwala mapowa ć struktur ę dokumentu XML na relacyjne tablice baza DB2, dzięki czemu możliwe jest tworzenie nowych dokumentów XML w oparciu o dane relacyjne lub dekomponowa ć istniejące dokumenty na tabele. W celu przeprowadzenia procesu kompozycji dokumentu XML przygotujemy baz ę. CREATE TABLE Customer(ID INTEGER NOT NULL PRIMARY KEY,Country VARCHAR(30),LName VARCHAR(30),FName VARCHAR(30)) CREATE TABLE Customer_Details(ID INTEGER,Phone_Number VARCHAR(20), Phone_Type VARCHAR(20), CONSTRAINT CUST_DETAIL_FK FOREIGN KEY (ID) REFERENCES Customer (ID)) Wypełniamy przykładowymi danymi: INSERT INTO Customer values(1,'us','smith','bill'); INSERT INTO Customer values(2,'india','gupta','raj'); INSERT INTO Customer_Details values(1,'408-231-300','office') INSERT INTO Customer_Details values(1,'408-200-301','home') INSERT INTO Customer_Details values(2,'91-80-5262355','office') INSERT INTO Customer_Details values(2,'91-80-527117','home') U yjemy tego samego pliku DTD co poprzednio. ż <?xml version="1.0"?> <!ELEMENT person (firstname,lastname,phone*)> <!ATTLIST person id CDATA #REQUIRED > <!ELEMENT firstname (#PCDATA )> <!ELEMENT lastname (#PCDATA )>

<!ELEMENT country (#PCDATA )> <!ELEMENT phone (type,number)> <!ELEMENT type (#PCDATA )> <!ELEMENT number (#PCDATA )> mapowanie dokumentu XML na baz ę danych Plik DAD z SQL_stmt Plik DAD wykorzystywany do tworzenia dokumentów XML ma na przykład następując ą posta ć: <?xml version="1.0"?> <!DOCTYPE DAD SYSTEM "c:\dxx\dtd\dad.dtd"> <DAD> <validation>no</validation> <Xcollection> <SQL_stmt> SELECT c.id,country,lname,fname,p.phone_id,phone_number,phone_type from CUSTOMER C, table (SELECT substr(char(timestamp(generate_unique())),16) as PHONE_ID,ID,PHONE_NUMBER,PHONE_TYPE from customer_details) P where P.ID=C.ID order by ID, PHONE_ID </SQL_stmt> <prolog>?xml version="1.0"?</prolog> <doctype>!doctype person SYSTEM "C:\dxx\samples\dtd\person.dtd"</doctype> <root_node> <element_node name ="person"> <attribute_node name="id"> <column name="id"/> </attribute_node> <element_node name="firstname"> <text_node> <column name="fname"/> </text_node> <element_node name="lastname"> <text_node> <column name="lname"/> </text_node> <element_node name="phone" multi_occurrence="yes"> <element_node name="type"> <text_node> <column name="phone_type"/> </text_node> <element_node name="number"> <text_node> <column name="phone_number"/> </text_node> </root_node> </Xcollection> </DAD> Uruchamianie obsługi metody collections za pomocą DB2 command shell

Uruchamianie wykonujemy za pomoc ą następującej komendy: dxxadm enable_collection dbname collection DAD_file -t tablespace gdzie: dbname nazw abazy danych collection nazwa kolekcji XML DAD_file nazwa pliku z dokumentem DAD tablespace schemat w którym znajduj ą si ę tabele kolekcji. Komponowanie dokumentu XML Do kompozycji dokumentu XML wykorzystamy procedur ę składowan ą dxxgenxml(). Do wywołania tej metody użyjemy przykładowego programu w języku Java dostarczonego wraz z rozszerzeniem XML Extender. Kompozycja dokumentu: 1. Kompilacja programu Generate.java znajdującego si ę w INSTALL_DIR\ samples\jdbc za pomocą polecenia javac Generate.java. INSTALL_DIR to katalog instalacji XML Extender (C:\dxx). 2. Stworzenie tabeli RESULT_TAB za pomoc ą polecenia: create table result_tab(doc varchar(3000)) 3. Uruchomienie programu generatora: java Generate xmltest C:\dxx\samples\dad\person.dad result_tab gdzie: XMLTEST jest baz ą zawierając ą dane relacyjne. C:\dxx\samples\dad\person.dad to plik DAD. RESULT_TAB to tabela przechowująca stworzony dokument. 4. Przeniesienie zawartości tabeli RESULT_TAB do pliku: select db2xml.content(db2xml.xmlvarchar(doc), 'DOC_DIR\person1.xml') from result_tab where db2xml.extractvarchar(db2xml.xmlvarchar(doc), '/person/@id') = '1' select db2xml.content(db2xml.xmlvarchar(doc), 'DOC_DIR\person2.xml') from result_tab where db2xml.extractvarchar(db2xml.xmlvarchar(doc), '/person/@id') = '2' gdzie: DOC_DIR to docelowa lokalizacja plików docelowych // XMLFILE W celu zlinkowania struktur bazy danych z dokumentami XML przechowywanymi na w przestrzeni składowania systemu operacyjnego należy wykonać nast. kroki: db2 create table patientxmlfile (id integer not null primary key, dataxmlfile db2xml.xmlfile) dxxadm enable_column mkad patientxmlfile dataxmlfile c:\dxx\xml\columnfile.dad -r id db2 commit db2 insert into patientxmlfile (id,dataxmlfile) values(1, db2xml.xmlfile ('c:\dxx\xml\file\bloggs.xml')) db2 insert into patientxmlfile (id,dataxmlfile) values(2, db2xml.xmlfile ('c:\dxx\xml\file\moore.xml')) db2 select db2xml.extractvarchar(dataxmlfile, '/patient/born') from patientxmlfile p, doctor_submitted d where pager='998' and d.id = p.id db2 update patientxmlfile set dataxmlfile = db2xml.update (dataxmlfile,'/patient/born','1960') where id in (select id from doctor_submittedf where pager='998')