II Szkoła PLOUG: Przegląd tematyki

Przechowywanie i przetwarzanie danych XML w systemach baz danych

Poznań, 12-14.02.2003

Bezprecedensowa kariera XML, początkowo jako uniwersalnego formatu wymiany danych w sieci Internet, a dziś jako struktury zapisu informacji w coraz większej liczbie systemów baz danych, sprawiła, że format ten stał się naturalnym narzędziem w rękach projektantów systemów informatycznych. Wbrew pierwotnym przypuszczeniom, że XML będzie służyć wyłącznie do modelowania ogólnie rozumianych „dokumentów” (np. noty bankowe, cenniki, zamówienia, faktury), okazało się, że został on bardzo szybko doceniony przez projektantów klasycznych baz danych, gdzie nierzadko zastosowanie formatu XML pozwoliło wyeliminować z modelu danych nawet kilkanaście tabel/encji, połączonych skomplikowanymi kluczami/związkami. Wczesne zastosowania XML do opisu złożonych struktur danych napotykały na trudną do pokonania barierę ubogiej funkcjonalności wyrażeń definicji danych DTD. Szczęśliwie jednak, powszechna akceptacja następcy DTD – XML Schema, spowodowała, że dziś dane zapisane w formacie XML mogą podlegać równie precyzyjnym opisom struktury informacyjnej i więzów integralności jak dane w klasycznych relacyjnych bazach danych.

Dzięki postępom w implementacji bibliotek programistycznych i parserów XML, w ostatnich latach istotnie wzrosło znaczenie technik modelowania danych XML przy użyciu obiektowych drzew dokumentów (DOM). W wielu środowiskach deweloperskich, transformacje XML->DOM i DOM->XML stają się coraz bardziej przezroczyste dla programistów. Doczekaliśmy się także efektywnych metod transformacji danych XML. Powszechnie stosowane arkusze stylistyczne XSL i procesory XSLT umożliwiają zautomatyzowaną reorganizację dokumentów XML, najczęściej polegającą na ich konwersji do formatów HTML, WML, PDF, RTF, itp.

Dziś praktycznie każdy wiodący system zarządzania bazą danych oferuje możliwości przechowywania dokumentów XML w strukturach relacyjnych. Oracle9i Release 2 udostępnia w tym zakresie dwa rozwiązania. Z jednej strony, projektant ma do dyspozycji wyspecjalizowany typ danych XMLType do zastosowania w definicjach kolumn tabel relacyjnych. Z drugiej strony, baza danych, traktowana jako składnica dokumentów XML (XML Repository), może dokonywać wewnętrznej częściowej lub pełnej dekompozycji dokumentów w tradycyjne struktury relacyjne. Dostęp do tak zapisanych danych XML może być w Oracle9i Release 2 realizowany zarówno z poziomu rozszerzonego języka zapytań SQL, jak i metodami hierarchicznymi, przy wykorzystaniu protokołów komunikacyjnych FTP i HTTP/WebDAV.

Realizacja aplikacji zaawansowanego przetwarzania danych XML w bazie danych wymaga znajomości nowych lub rozszerzonych interfejsów: SQL/XML + XMLType API, XQuery i Oracle Text. SQL/XML, uzupełniony przez Oracle o XMLType API, obejmuje rozszerzenie standardowego języka zapytań SQL idące w kierunku umożliwienia transformacji danych relacyjnych do formatu XML (funkcje SQL XMLAgg(), XMLConcat(), XMLElement(), XMLForest(), XMLColAttVal(), XMLSequence()), przeszukiwania dokumentów XML przy użyciu wyrażeń XPath (funkcje SQL ExtractValue(), Extract()), realizacji przekształceń XSLT (funkcja SQL XMLTransform()), modyfikacji wybranego fragmentu dokumentu XML, itp. Obecnie SQL/XML toruje sobie drogę do wejścia w obręby standardu ANSI/ISO SQL, a niemal wszystkie jego elementy zostały zaimplementowane w systemie zarządzania bazą danych Oracle9i Release 2. Podobną do SQL/XML funkcjonalność oferuje API nowego typu danych XMLType, udostępniające szereg metod obiektowych do zastosowania zarówno w zapytaniach SQL, jak i w procedurach PL/SQL składowanych w bazie danych. Z drugiej strony, projektant może rozważyć użycie odmiennej filozofii przetwarzania XML – przy wykorzystaniu technik nowego standardu XQuery. XQuery zorientowany jest na zbiory danych zbudowane w całości w formacie XML. Trzecia grupa metod obróbki danych XML w bazie danych Oracle9i Release 2 obejmuje użycie rozszerzeń pakietu Oracle Text. Szczególnie istotne są tutaj funkcje kontekstowego przeszukiwania dokumentów XML przy użyciu m.in. rozbudowanego operatora Contains, mogące stanowić podstawę do budowy indeksów na obiektach XML.

System zarządzania bazą danych Oracle9i Release 2 oferuje szereg mechanizmów do generowania dokumentów XML na podstawie zawartości tabel bazy danych. W tym kontekście bardzo ważne są nowe funkcje języka SQL – sys_xmlgen() i sys_xmlagg(), pakiety standardowe PL/SQL – m.in. DBMS_XMLGEN, a także zewnętrzne narzędzia w postaci serwletu XSQL i zestawu XSU. Równie interesujące podejście reprezentują tzw. perspektywy XML, umożliwiające XML-owy dostęp do świata danych relacyjnych, zrealizowany w zaawansowany technicznie sposób (m.in. przepisywanie zapytań).