XML w bazach danych
- Tomasz Kopacz,
- 11.02.2002
Wiele operacji bazodanowych można wykonać przy użyciu XML.
Wiele operacji bazodanowych można wykonać przy użyciu XML.
Pierwotnie XML był po prostu językiem pozwalającym wygodnie zapisywać hierarchiczne dokumenty. Obecnie to także język definiujący strukturę dokumentu (DTD, XML-Schema), a także język zapytań (Xquery, XPath czy XQL), służący do wyszukiwania informacji. W motorach relacyjnych baz danych pojawia się coraz więcej elementów, związanych z obsługą tego formatu danych.
Powszechna "iksemelizacja"
XML w Oracle 9i może być traktowany albo jako typ kolumny, albo jako sposób prezentacji wyniku dowolnego wyrażenia SQL. Do przeszukiwania dokumentów XML, umieszczonych w bazie Oracle, jest wykorzystywany mechanizm, w którym programista może zadać pytanie łączące pewne elementy składni SQL i XPath, np. wybiera właściwy rekord i podgałąź dokumentu.
Z poziomu PL/SQL można manipulować XML-owym widokiem dowolnego zbioru rekordów. W motorze Oracle znajduje się maszyna wirtualna Javy, nic więc nie stoi na przeszkodzie, by także w kodzie procedury wbudowanej napisanej w Javie przeprowadzić bardziej wyrafinowane analizy czy ręcznie stworzyć dokument XML i przekazać go jako kursor. Równocześnie baza Oracle zawiera pewne mechanizmy, pozwalające dokładnie określać sposób indeksowania dokumentów XML.
W Microsoft SQL Server 2000 programista sam określa, jak ma być tworzony XML-owy obraz bazy. Poprzez wybór odpowiedniej struktury w standardzie XDR jest definiowany dokładny sposób odwzorowania danych relacyjnych na hierarchię XML. Można pominąć niektóre atrybuty pól i zrezygnować z części informacji. Dokument XML może być nowym typem kursora, który przetwarza się przy użyciu procedur T/SQL. Serwer automatycznie przekazuje klientowi dane w formacie XML, co bardzo upraszcza integrację MS SQL z serwerem WWW i późniejszą prezentację wyników.
SQL Server umożliwia aktualizowanie danych w bazie za pośrednictwem pliku XML. Specjalna składnia pozwala otworzyć dowolny plik XML (może to być też strumień danych z formularza WWW) i potraktować go jako "wirtualną" tabelę. Następnie, już przy normalnej składni SQL, można aktualizować bazę, wstawiając np. rekordy pochodzące z tabeli.
Ciekawie rozwiązano bezpośrednie przekazywanie zapytań z witryny WWW. SQL Server może być zarejestrowany jako katalog wirtualny. Można zadawać zarówno pytania SQL (wtedy przekazywanym parametrem w URL jest odpowiednia kwerenda), jak i wyrażenia XPath. Istnieje także możliwość definiowania wzorców zapytań. W specjalnym pliku XML jest definiowana dokładna postać zapytania SQL, XPath oraz parametry. Następnie klient "otwiera" ten wzorzec (plik) i podaje w linii URL wartości parametrów. W wyniku takiej operacji przeglądarka otrzyma prawidłowy dokument XML, który w połączeniu z odpowiednim skryptem formatującym może być wyświetlony w oknie jako tabela.
Na uwagę zasługuje rozwiązanie firmy Sybase. Motor ASE 12.5 pozwala na równorzędne traktowanie zapytań SQL i XPath. W momencie zapytania XPath serwer tworzy XML-owy obraz danych relacyjnych, który jest przechowywany, tak by kolejne zapytanie nie wymuszało ponownej budowy dokumentu XML. Wszelkie zmiany w bazie powodują aktualizację dokumentu (a nie jego budowę od początku). Oprócz tego motor pozwala na łączenie w bazie dokumentów zewnętrznych, np. plików XML, znajdujących się na dysku lub w Internecie. Moduł XML Search może być wykorzystany do wyszukiwania danych w bazie i przeglądania dokumentów zewnętrznych. Dokumenty zewnętrzne mogą również być indeksowane.
IBM wspiera wiele projektów związanych z XML, jednak dotąd nie opracował mechanizmów integrujących technologię XML z DB2. Do motoru bazodanowego dodano mechanizmy, pozwalające wczytywać dane XML. Definiuje się sposób generowania relacyjnego widoku na podstawie danych XML, a następnie określa sposób odwzorowywania pól tego "wirtualnego" widoku na pola w tabelach DB2.
Tamino Software AG to pierwsza baza danych, w której wszystkie informacje są przechowywane w formacie XML. Nie jest to baza relacyjna, jej architektura przypomina bazy sieciowe. Jednak w odróżnieniu od baz z lat 60. Tamino nie nakłada tak ścisłych wymagań na strukturę.
Programista samodzielnie określa, w których fragmentach aplikacji będzie konieczne, by dane dokładnie odpowiadały strukturze DTD, a gdzie można zaakceptować dowolny dokument XML. Bardzo ciekawą opcją tego motoru jest łączenie danych relacyjnych, pochodzących z innych baz z drzewem hierarchicznym, zdefiniowanym przy użyciu XML. Elementem gałęzi może być tabela lub pewien wynik kwerendy kierowanej do innego motoru danych. Stwarza to duże możliwości w zastosowaniach integracyjnych. Oczywiście, Tamino, podobnie jak MS SQL 2000, pozwala na kierowanie zapytań za pośrednictwem URL. Motor, po zintegrowaniu z ser- werem WWW, przekazuje pewne informacje w niestandardowych polach nagłówka HTTP.
W IBM trwają prace nad bazą Xperanto, która, podobnie jak Tamino, ma przechowywać dane w formacie XML i posługiwać się zapytaniami XML Query Language. Xperanto stanie się częścią DB2 Universal Database. W ten sposób IBM zamierza stworzyć rozwiązanie, dzięki któremu będzie łatwo połączyć dane relacyjne i hierarchiczne, a także obsłużyć informacje bez określonej struktury. Produkt powinien się pojawić w IV kwartale 2002 r.