Přítomnost a budoucnost XML databází

Navzdory poslednímu vývoji zůstává i dnes v oblasti XML databází nevyřešena řada problémů. Jak je navrhovat? Jak s...


Navzdory poslednímu vývoji zůstává i dnes v oblasti XML databází nevyřešena
řada problémů. Jak je navrhovat? Jak systematicky a efektivně integrovat
relační a XML data?
Jazyk XML se používá pro značkování dvou typů dat. V prvním reprezentuje XML
semistrukturovaná data, která mají nepravidelnou strukturu a požadují
uspořádání elementů. Cílem je podchytit jejich logickou strukturu. Druhou
variantou jsou XML data, která obsahují zdrojová data pravidelně strukturovaná,
o nichž se předpokládá, že budou spíše zpracovávána strojově než dotazována
člověkem. Typicky jde o data z relační databáze, jež jsou transportována v B2B
úlohách.
Praxe rozlišila oba typy XML dat na dokumentově orientovaná (document-oriented,
document-centric) a datově orientovaná (data-oriented, data-centric). Jakákoliv
XML data lze také pojmout jako nestrukturovaný text. Pak lze použít prostředky
umožňující indexaci, vyhledávání podle klíčových slov apod.; nevyužita však
zůstává stromová struktura XML dat daná hnízděním elementů a atributů.
XML databáze představují novou databázovou technologii, jež se vyvíjí paralelně
k existujícím (objektově) relačním databázím. Jde o software, který by měl
podporovat přijímání, perzistentní ukládání, prohledávání a generování XML dat.
Ze souvisejících standardů jsou důležitá doporučení konsorcia W3C, zvláště pak
jeho pracovní skupiny XML Query WG, a aktivity týmů rozvíjejících pod ISO a
ANSI relační jazyk SQL. Další významnou iniciativou je XML:DB, která se zabývá
návrhem API k XML databázím. Populární je její neprocedurální jazyk XUpdate pro
aktualizaci XML dat.

XML databáze
Možné postupy pro realizaci XML databáze jsou dva:
přizpůsobení databázového stroje XML strukturám a XML dotazovacím jazykům
(databáze zpřístupňující XML)
vybudování speciální implementace databázového stroje (nativní XML databáze)
Pro uložení XML dat do databáze hraje v prvním případě roli cílový databázový
model, který je většinou relační nebo objektově relační, tak jak jej známe ze
standardu SQL:2003 a jeho verzí implementovaných výrobci objektově relačních
databází. XML data jsou rozložena do tabulek nebo nestrukturovaně jako data
typu BLOB. V SQL je umožněno zpracovávat XML data společně s relačními daty.
Další funkce XML databází zahrnují:
Dotazování: Nejde pouze o to, vybrat z databáze XML dat dokumenty vyhovující
logickým či strukturálním podmínkám. Vyžadovány jsou části XML stromu, případně
je třeba zkonstruovat nová XML data z těch, která jsou v databázi. U
heterogenních zdrojů XML dat se uplatňuje i přibližné vyhledávání.
Aktualizace: Mění se nejen textový obsah elementů, ale i struktura XML
dokumentu.
Transakční zpracování: Příkladem je uzamykací mechanismus pro souběžné použití
XML databáze více uživateli.
Nativní databáze se snaží překonat problémy, které vznikají při realizaci
těchto funkcí v klasických databázích. Například pro dokumentově-orientovaná
data s hloubkou XML stromu větší než 9 je jejich tabulková reprezentace pro
dotazování nepružná. Požaduje mnoho tabulkových spojení. Rigidnost databázového
schématu klasické databáze znemožňuje složitější aktualizaci XML dat. Uzamykání
části XML stromu vede k nepružnému uzamykání mnoha řádků ve více tabulkách.

Dotazování XML dat
Jako dotazovací jazyky se prosazují XPath a XQuery. První z nich hraje
významnou roli pro současné XML databáze, druhý bezpochyby pro XML databáze
budoucí. XPath 1.0 je jednodušší, neumožňuje například realizovat spojení XML
dokumentů, jejich třídění a seskupování. XPath 2.0 již je podmnožinou výpočetně
úplného jazyka XQuery. Zatím však není jasná finální verze standardu XQuery, s
nemalými problémy se řeší jeho efektivní implementace cíl všech dodavatelů
nativních XML databází.
Zcela odlišným jazykem je SQL/XML (též SQLX) definovaný v části standardu
SQL:2003. Ten je vyvíjen skupinou H2.3 Task Group. Ve skupině participují firmy
Oracle, IBM, Microsoft, DataDirect Technologies a Sybase. (SQL/XML je odlišný
od jazyka SQLXML firmy Microsoft. Jde o proprietární řešení v SQL Serveru.
Microsoft neplánuje implementovat SQL/XML.) Ve verzi SQL:2003 jde o rozšíření
objektově relačního jazyka SQL, které obsahuje:
funkce pro vytváření XML dat
datový typ XML
mapovací pravidla
Funkce pro vytváření XML dat se používají přímo v příkazu SELECT, datový typ
XML umožňuje přiřadit typ výsledku dotazu, který obsahuje XML data. Mapovací
funkce určují, jak reprezentovat SQL data jako XML data a jak zobrazit relační
metadata do konstruktů jazyka SQL/XML a naopak. Metadata pro XML data jsou
vyjádřena v jazyku XML Schema vyvinutém W3C.

V komerčních databázích
Správa XML dat se objevuje v komerčních produktech známých výrobců relačních
databází. Jedná se zejména o produkty IBM DB2 Universal Database V8.1, Oracle
Database 10g, Sybase ASE 12.5.1 a MS SQL Server 2000. Všechny systémy podporují
nestrukturované ukládání a rozkládání XML dat do tabulek. Kromě MS SQL Serveru
se ostatní produkty hlásí k podpoře nativního uložení XML dat. Využívají také v
různém rozsahu jazyků XPath a XQuery.
K nejčastěji jmenovaným komerčním produktům s nativní XML databází patří Tamino
firmy Software AG. Schéma databáze se v něm definuje pomocí podmnožiny jazyku
XSchema. Ve verzi 4.1.4 najdeme prototypovou implementaci XQuery. Za zmínku
stojí, že nativní XML databáze je vybudována na základech starého databázového
produktu ADABAS, kterým byla firma Software AG slavná v době sálových počítačů.
Nelze se však příliš divit, protože původní ADABAS implementoval hierarchický
model dat.
Jmenovat lze dále produkty jako XIS (eXtendible Information Server),
integrovaný do produktů Sonic Software firmy Progress Software, nebo X-Hive/DB
firmy X-Hive Corporation. Mezi citované implementace patří i eXist. Dalším
zajímavým systémem je open source software Xindice od The Apache Software
Foundation.

Kudy dál
Je zřejmé, že v XML databázích zůstává nevyřešena řada problémů. Jak například
tyto databáze navrhovat? Jak systematicky a efektivně provádět integraci
relačních dat a XML dat? SQL/XML je vhodný pro programátory využívající SQL,
kteří potřebují výstup v XML. XQuery je vhodnější pro programátory nativních
XML databází, kteří případně vyžadují práci s XML databází a relační databází
současně.
Výzvou je nalézt vhodné techniky pro efektivní implementaci dotazovacího jazyka
XQuery, a tedy nové typy indexačních struktur.
Autor článku je vedoucím Katedry softwarového inženýrství na MFF UK Praha.
Tématu XML databází se věnuje přednáška na konferenci Datakon (Brno, 24.-26.
10. 2004), které je Computerworld mediálním partnerem.









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