Co je XQuery?

DEFINICE Technologie XQuery je primárně určena k tvorbě dotazů nad XML daty, respektive daty, která se mohou tvářit j...


DEFINICE
Technologie XQuery je primárně určena k tvorbě dotazů nad XML daty, respektive
daty, která se mohou tvářit jako XML.

S jazykem XML (Extensible Markup Language) se v posledních letech můžeme stále
častěji setkávat i v oblasti relačních databází. Přispěl k tomu jak nový
standard SQL 2003, jenž zavedl nový datový typ Xml, tak univerzálnost XML.
Abychom však mohli dat ve formě XML (viz schéma XML) plně využívat, potřebujeme
mít k dispozici silný dotazovací jazyk. Podobný, jakým je například SQL pro
relační databáze. Velmi dobré vyhlídky stát se tímto mocným prostředkem má
jazyk XQuery. Tvůrci XQuery přistupovali k jeho vývoji s cílem vytvořit
deklarativní programovací jazyk, který nabídne práci nad datovým modelem XML
struktury a umožní výběr potřebných informací z obecných dat s využitím
podmínečných výběrů, agregací, třídění či seskupování. Dále má být schopen
pracovat s více datovými zdroji, zajistit silnou typovou kontrolu a tvorbu
nových libovolných datových struktur.

XQuery standardem?
Jazyk XQuery 1.0 je vyvíjen pod hlavičkou konsorcia W3C (World Wide Web
Consortium). Jeho vývoji je přikládán značný význam pracovní skupina XQuery se
skládá z výzkumných kapacit firem IBM, Oracle, Microsoft, AT&T, Software AG,
DataDirect Technologies, Bell Labs či BEA a patří k největším vývojovým týmům v
rámci W3C. Sdružení dosud nevydalo konečné "W3C Doporučení", které mohou
implementátoři jazyka použít jako závazný podklad pro vývoj procesorů XQuery.
Poslední pracovní koncept pochází z dubna 2005 a odborná veřejnost očekává
ustanovení standardu v dalším průběhu letošního roku. Již dnes však vznikají
komerční i open source implementace jazyka XQuery. Zmiňme například javový
procesor Saxon 8 (Saxonica), aplikační platformu Tamino XML Server (Software
AG), řešení pro integraci databázových zdrojů Liquid Data for WebLogic (BEA),
či použití jazyka XQuery v databázových serverech SQL Server 2005 Beta
(Microsoft), Oracle XML DB (Oracle) nebo Berkeley DB XML (Sleepycat).

Začínáme s XQuery
Než začneme pracovat s XQuery, potřebujeme mít povědomí o specifikaci XML
Schema 1.0, na níž je založen typový systém jazyka. Mnoho vlastností čerpá
XQuery z adresovacího jazyka XPath verze 2.0. Od něj přebírá jak formální
sémantiku, strukturu datového modelu, tak například i knihovnu funkcí a
operátorů. Také si musíme uvědomit, že program nepracuje s textovým XML
dokumentem jako takovým, nýbrž s instancí jeho objektové reprezentace, tzv.
datovým modelem. Stromová struktura datového modelu obsahuje uzly, které mohou
být druhu dokument, element, atribut, text, komentář, procesní instrukce nebo
jmenný prostor. Datový model zároveň povoluje atomické hodnoty, což jsou
hodnoty jednoduchých typů, definovaných XML schématem. Termínem položka se
rozumí právě uzel nebo atomická hodnota. Položky seskupené do jednorozměrného
pole vytvářejí sekvenci. A právě sekvence je základní a jedinou návratovou
hodnotou každého výrazu. V žádné sekvenci nemohou být vnořeny další sekvence.
Program v XQuery se skládá z výrazů, které po vyhodnocení vracejí sekvenci.
Tudíž i jediná návratová hodnota atomického typu (například xs:integer) je ve
skutečnosti sekvencí. Výrazem je i samotný program rovněž vrací sekvenci
(většinou kořenový uzel), jež je po vyhodnocení odeslána na výstup a poté je
serializována do XML souboru nebo jiného datového úložiště.

Vlastnosti
XQuery je ve skutečnosti silně typový jazyk. Podobně jako například Java nebo
C# zajišťuje typovou kontrolu jak během překladu (statickou), tak v průběhu
zpracování (dynamickou).
Program v jazyce XQuery může být rozdělen do více modulů (souborů), kde každý z
nich se obecně skládá z prologu a těla programu. Do těla modulu patří výkonná
část, oddíl prolog slouží pro zápis uživatelem definovaných funkcí, deklarace
jmenných prostorů, proměnných či knihoven. Právě knihovny nám zajistí
přehlednější strukturu tvořeného kódu a jeho znovupoužitelnost podobně, jak to
známe z "běžných" funkcionálních programovacích jazyků. Specifikace jazyka
pamatuje i na situaci, kdy krom vestavěných funkcí jazyka XQuery nebo těch,
které si vlastnoručně napíšeme, lze využít i funkcí externího prostředí.
Kolekce těchto funkcí plně závisí na konkrétní implementaci XQuery procesoru a
platformě, na níž je vyvinut. Třeba procesor Saxon vyvíjený v jazyce Java
umožňuje přístup k javovým metodám. Lze si například deklarovat jmenný prostor
math, na který namapujeme metody knihovny java.lang.Math, a těch je pak možno v
XQuery programu podle libosti využívat.

Shrnutí
Jazykem XQuery se můžeme dotazovat nad libovolnými daty, která se mohou tvářit
jako XML (například tabulky relačních databází), což je silným argumentem k
využití jazyka pro vývojáře, kteří pracují s heterogenními databázovými zdroji.
Část odborné veřejnosti považuje jazyk XQuery za nástupce SQL. Právě díky
schopnosti XML reprezentovat relační data nemusí být tento názor utopií.
Značným nedostatkem této teorie však je momentální absence podpory některých
základních DML (Data Manipulation Language) operací typu insert, update a
delete.
Neméně zajímavý bude jazyk XQuery i pro programátory, kteří dnes hojně
využívají formát XML k nejrůznějším účelům. Právě mocné schopnosti lokalizace,
transformace a vytváření nových XML dat mohou jejich práci značně zjednodušit a
zefektivnit. Rozšíření jazyka XQuery bude (jako u každého standardu) záležet
především na ochotě vlivných softwarových společností zahrnout XQuery do svých
vývojových nástrojů. Stane-li se tak, můžeme se těšit na novou dimenzi práce s
XML jazykem i databázemi obecně.


Autor pracuje jako senior vývojář v .Net a technologiích SAS ve společnosti
Adastra.









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.