XML w bazach danych

Wiele operacji bazodanowych można wykonać przy użyciu XML.

Wiele operacji bazodanowych można wykonać przy użyciu XML.

XML w bazach danych

Architektura motoru Sybase ASE 12.5, obsługującego zapytania XQL i wyszukiwanie 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.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200