| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
P°ed nßvrhem vhodnΘho zp∙sobu uchovßnφ XML dokument∙ bychom si m∞li nejprve ujasnit, jak² hlavnφ ·Φel pro nßs bude plnit nasazenφ XML jazyka v danΘ aplikaci. SouΦasnΘ nasazenφ XML v aplikacφch se odehrßvß p°evß₧n∞ ve dvou rovinßch:
- zam∞°enΘ na data (data based)
- zam∞°enΘ na dokument (document based)
Äßdn² ze zmφn∞n²ch sm∞r∙ nemß samoz°ejm∞ naprosto pevnΘ mantinely, ale v₧dy bychom m∞li b²t schopni urΦit, kter² z nich p°eva₧uje. Bude to pro nßs vodφtkem, kterΘ nßm pom∙₧e determinovat typ vhodnΘho datovΘho ·lo₧iÜt∞.
"Data based" XML dokumenty
Tφmto pojmenovßnφm m∙₧eme oznaΦovat XML dokumenty, kterΘ plnφ funkci samopopisnΘ obßlky pro p°enos Φi manipulaci s daty. Samotnß struktura dokumentu je vedlejÜφ, proto₧e hlavnφm cφlem je "vydolovat" data a zcela jednoznaΦn∞ pochopit relace mezi nimi. Jednφm z typick²ch p°φklad∙ tohoto pojetφ je bezesporu vyu₧φvßnφ XML p°i p°enosu tabulek bez ztrßty informace o vzßjemn²ch relacφch.
"Document based" XML dokumenty
U tΘto varianty nasazenφ vyu₧φvßme p°edevÜφm mo₧nosti sΘmantickΘho strukturovßnφ tφmto zp∙sobem napsanΘho dokumentu. XML nßm v tomto p°φpad∞ pomßhß pracovat s dφlΦφmi Φßstmi dokumentu podle jejich v²znamu. DocBook Φi DITA schΘmata jsou praktickou ukßzkou tohoto sm∞ru.
Datovß ·lo₧iÜt∞ pro "data based" XML dokumenty
Jeliko₧ data jsou u tohoto sm∞ru to hlavnφ, co nßs zajφmß, nebude se ani v otßzce datovΘho ·lo₧iÜt∞ jednat o ₧ßdn² p°evrat. RelaΦnφ databßze z∙stßvajφ prozatφm nejvhodn∞jÜφ variantou. Na tomto mφst∞ nßs budou zajφmat nßstroje, kterΘ nßm pomohou p°i zachßzenφ s "data based" dokumentem. V∞tÜina komerΦnφch relaΦnφch databßzi se ji₧ m∙₧e v dneÜnφ dob∞ pyÜnit nßlepkou "XML enabled", co₧ znamenß, ₧e zpracovßnφ dat v XML podob∞ jim ji₧ ₧ßdn² problΘm ned∞lß. P°φpady, kdy datovΘ ·lo₧iÜt∞ nenφ jeÜt∞ zcela vybaveno XML podporou, uvol≥ujφ prostor pro komponenty (meziΦlßnky), kterΘ m∙₧eme pou₧φt pro zpracovßnφ XML dat. V neju₧Üφm slova smyslu jsou asi nejznßm∞jÜφm zßstupcem ADO.NET komponenty.
Charakteristick²m rysem je skuteΦnost, ₧e databßze nßm data m∙₧e poskytnout zp∞t v rozdφln∞ strukturovanΘm XML dokumentu, ne₧ jsme jφ poskytly my. S tφmto rysem se Φasto setkßme pod pojmem "round-tripping". D∙vodem jsou p°evodnφ algoritmy (table based, object based a podobn∞), kterΘ ze svΘ podstaty nejsou schopny p°edat informace o specifick²ch, pro data nepodstatn²ch elementech.
Nativnφ XML databßze
Prßv∞ existence relativn∞ novΘho sm∞ru v²voje dokument∙, kter² m∙₧eme spat°ovat v rovin∞ "document based" XML dokument∙, zap°φΦinil vznik novΘho typu databßzov²ch server∙ (Native XML databases). Hlavnφm ·kolem nativnφch XML databßzφ (dßle jen NXD) je ulo₧it XML dokument vΦetn∞ jeho logickΘ struktury a podoby. Dokument obdr₧φme zp∞t p°esn∞ v takovΘ podob∞, v jakΘ jsme jej p°edali databßzi, vΦetn∞ vÜech poznßmek apod.
Princip fyzickΘho uklßdßnφ dat je r∙zn². Nativnφ XML databßze m∙₧e vyu₧φvat bu∩ svΘ proprietßrnφ °eÜenφ nebo vyu₧φt slu₧eb relaΦnφ databßze. V souΦasnΘ dob∞ nebude neobvyklΘ, kdy₧ narazφte na NXD, kterß bude sm∞°ovßna pouze jako p°φstupovß vrstva, umφst∞nß nad relaΦnφ databßze. Zp∙sob fyzickΘho uklßdßnφ dat ale nenφ podstatn² a v∞tÜina NXD ho p°ed nßmi bude ·sp∞Ün∞ skr²vat.
Mnohem podstatn∞jÜφ jsou funkce, kterΘ nßm NXD p°inßÜφ. Pat°φ mezi n∞ nap°φklad mo₧nost indexovßnφ ulo₧en²ch dokument∙ pro v²raznΘ zv²Üenφ v²konu a mo₧nost provßd∞nφ dotaz∙ nap°φΦ sadou dokument∙ umφst∞n²ch v takzvanΘ kolekci. Pro lepÜφ p°edstavu si m∙₧eme p°irovnat jeden XML dokument k jednΘ °ßdce v relaΦnφ databßzi a kolekci k jednΘ tabulce v relaΦnφ databßzi. Nemusφme jφt ani p°φliÜ daleko a ji₧ objevφme rozdφl - v NXD m∙₧eme umφstit dokumenty zalo₧enΘ na r∙zn²ch XML schΘmatech do jednΘ kolekce (Schema independent). To nßm m∙₧e p°inΘst zv²Üenφ flexibility, ale ve v∞tÜin∞ p°φpad∙ to spφÜe p°inese problΘmy a nekonzistence, proto mohou b²t kolekce zßvislΘ takΘ na XML schΘmatu (Schema dependent).
Dotazovacφ jazyk
Ji₧ jsem zmφnil spojenφ "provßd∞t dotazy", ale jak²m jazykem? Odpov∞∩ nenφ zdaleka tak jednoduchß, jak by se mohlo zdßt. V souΦasnosti je Φasto vyu₧φvan²m spoleΦn²m jazykem XPath, kter² se ji₧ hojn∞ vyu₧φvß p°i XSL transformacφch, ale bohu₧el neimplementuje takovΘ funkce, kterΘ by se lΘpe hodily na skupiny XML dokument∙ (agregace...). S v∞domφm tohoto nedostatku se vyvφjφ hned n∞kolik lepÜφch variant dotazovacφch XML jazyk∙ (XQuery, XQL, viz nap°φklad XML-QL). Bohu₧el jeÜt∞ ₧ßdn² z nich nemß takovou podporu, abychom ho mohli pou₧φt jako odpov∞∩ na naÜi otßzku. Nynφ je tedy situace takovß, ₧e dotazovacφ jazyk je siln∞ zßvisl² na pou₧itΘ NXD, dokonce n∞kterΘ NXD mohou implementovat vlastnφ verze dotazovacφch jazyk∙. M²m osobnφm favoritem je XQuery (XML Query), ale ji₧ jsem se zm²lil v ₧ivot∞ mnohokrßt.
Obecn∞ lze ale °φci, ₧e pokud jste zvyklφ pracovat s XML dokumentem (DOM, SAX at.), nebude pro vßs ₧ßdn²m problΘmem zvyknout si na prßci s jakoukoli NXD.
Mo₧nosti vyu₧itφ nativnφch XML databßzφ
Osobn∞ jsem si vyzkouÜel Tamino Server, co₧ je ji₧ dostateΦn∞ etablovan² zßstupce popisovan²ch NXD. Mohu op∞t jen zd∙raznit, ₧e zda zvolφte NXD Φi relaΦnφ databßzi, zßle₧φ v prvnφ °ad∞ na cφlech, kterΘ majφ vaÜe XML dokumenty plnit ("data based" Φi "document based"). Nativnφ XML databßze jsou tedy "pouze" dalÜφm p°φjemn²m p°φr∙stkem, kter² rozÜi°uje portfolio XML nßstroj∙ a p°i jeho vyu₧φvßnφ je pot°eba dob°e zvß₧it vÜechny klady a zßpory zvolenΘho °eÜenφ.
U₧iteΦnΘ odkazy
- Aktualizovan² seznam r∙zn²ch XML nßstroj∙
- Strßnky Ronalda Bourret(a) Autor se zab²vß problematikou XML a databßzφ opravdu do hloubky.
- XML::DB Initiative (komunita zab²vajφcφ se problematikou XML a databßzφ)