Interval.cz
Nativnφ XML databßze v praxi I

V p°edchozφm Φlßnku o nativnφch XML databßzφch jsem popisoval tento relativn∞ nov² druh softwarovΘho vybavenφ v obecnΘ rovin∞. V tomto navazujφcφm serißlu vßs chci seznßmit s mo₧nostmi nativnφch XML databßzφ z praktickΘho hlediska. ZaΦneme zalo₧enφm vlastnφ databßze, podφvßme se na ukßzku PHP komunikace pomocφ XML-RPC a nebude chyb∞t ani p°φstup k XML dokument∙m pomocφ SOAP standardu v .NET prost°edφ.

I kdy₧ budou nßsledujφcφ Φlßnky zalo₧eny p°evß₧n∞ na praktick²ch ukßzkßch souvisejφcφch prßv∞ s jednou zvolenou databßzφ, rozhodn∞ to neznamenß, ₧e poznatky vyu₧ijete pouze za p°edpokladu stejnΘ volby nativnφ XML databßze (dßle jen NXD). Principy administrace jsou u v∞tÜiny NXD shodnΘ, n∞kde chudÜφ jinde bohatÜφ, a pro komunikaci budu vyu₧φvat zcela standardnφch protokol∙, kterΘ nabφzφ op∞t v∞tÜina z dostupn²ch NXD. Jako zßklad jsem zvolil "open-source" NXD Exist. Na tomto ambici≤znφm projektu mn∞ zaujalo hned n∞kolik parametr∙ - pestrß podpora relaΦnφch databßzφ vyu₧iteln²ch pro "back end", udßvanΘ v²konovΘ parametry a v neposlednφ °ad∞ Üirokß nabφdka komunikaΦnφch standard∙.

LetmΘ seznßmenφ

Java prost°edφ poskytuje NXD Exist platformnφ nezßvislost na stran∞ jednΘ a Üirokß paleta implementovan²ch komunikaΦnφch standard∙ bortφ omezenφ na pou₧itφ v dan²ch programovacφch jazycφch na stran∞ druhΘ. Exist ve svΘ dosavadnφ verzi 0.9 implementuje nßsledujφcφ standardy:

  • XML:DB API (rozhranφ, kterΘ vyu₧ijφ zejmΘna Java v²vojß°i)
  • standardnφ HTTP protokol (rozhranφ pro komunikaci s databßzφ pomocφ GET a POST p°edßvan²ch parametr∙)
  • XML-RPC (standard umo₧≥ujφcφ komunikaci mezi objekty b∞₧φcφ v jinΘ aplikaΦnφ domΘn∞)
  • SOAP (standard umo₧≥ujφcφ komunikaci mezi objekty b∞₧φcφmi v jinΘ aplikaΦnφ domΘn∞, tento standard je pou₧it v pozadφ webov²ch slu₧eb .NET platformy)
  • WebDAV (standard umo₧≥ujφcφ Φφst a m∞nit datovΘ elementy databßze podobn∞ jako slo₧ky a soubory souborovΘho systΘmu)

Tento p°ehled je d∙kazem faktu, ₧e pro Exist neexistuje omezenφ platformy, aplikaΦnφ domΘny Φi vyu₧itelnΘho programovacφcho jazyka. V rßmci programov²ch ukßzek se budeme zab²vat p°evß₧n∞ XML-RPC, SOAP a WebDAV. Pro fyzickΘ uklßdßnφ dat vyu₧φvß Exist implicitn∞ svoje proprietßrnφ °eÜenφ, ale v p°φpad∞ pot°eby jej m∙₧eme svßzat s relaΦnφ databßzφ.

NXD Exist umo₧≥uje provoz ve t°ech zßkladnφch re₧imech:

  • "Standalone" re₧im: databßze je spuÜt∞na ve vlastnφm procesu.
  • "Embedded" re₧im: databßze je p°ilinkovßna p°φmo ke klientskΘ aplikaci a je spuÜt∞na ve spoleΦnΘm procesu.
  • "Servlet" re₧im: databßze je spuÜt∞na formou servlet∙ a je kontrolovßna servlet strojem (Servlet engine).

JednotlivΘ re₧imy ovliv≥ujφ mno₧inu aktivnφch komunikaΦnφch standard∙ a jeliko₧ SOAP a WebDAV protokoly jsou aktivnφ pouze v servlet re₧imu, rozhodl jsem se prßv∞ pro n∞j. U₧ivatel se nemusφ obßvat stφ₧enΘ instalace, proto₧e v instalaΦnφm balφku je uschovßn takΘ Jetty servlet engine, kter² vÜe obstarß.

Instalace NXD

Pro sprßvnou funkci NXD Exist je zapot°ebφ nainstalovat Java prost°edφ. DoporuΦuji zvolit cφlov² adresß° pokud mo₧no s krßtkou cestou (nap°φklad C:\j2se\), proto₧e p°i spouÜt∞nφ Java program∙ jsou vytvß°eny mnohdy velice spletitΘ systΘmovΘ prom∞nnΘ prßv∞ s touto cestou a v p°φpad∞ dlouhΘho nßzvu se mohou vyskytovat problΘmy. To samΘ platφ takΘ pro instalaΦnφ adresß° NXD Exist.

P°ed samotn²m spuÜt∞nφm NXD je pot°eba vytvo°it systΘmovΘ prom∞nnΘ $EXIST_HOME a $JAVA_HOME s danou instalaΦnφ cestou, nap°φklad SET JAVA_HOME=c:\j2se a SET EXIST_HOME=c:\exist.

FyzickΘ spuÜt∞nφ obstarß sada dßvkov²ch soubor∙ v adresß°i $EXIST_HOME\bin\. Pro spuÜt∞nφ aplikace v nßmi zvolenΘm re₧imu je urΦen soubor STARTUP.BAT. Sprßvnou funkci databßze ov∞°φme navÜtφvenφm http://localhost:8080/exist/index.xml. (Zde se takΘ p°edem omlouvßm vÜem "unix-like" u₧ivatel∙m. ╚lßnky p°ipravuji na stroji s Windows a pro lepÜφ Φitelnost textu nebudu zavßd∞t syntaktickΘ rozdφly mezi t∞mito dv∞ma sv∞ty. U₧ivatele "unix-like" stroje si jednoduÜe mohou dosadit syntaktickΘ ekvivalenty svΘho prost°edφ.)

Administrace

Pro administraci databßze je urΦena sada nßstroj∙ - nßstroje p°φkazovΘ °ßdky, souborov² mana₧er podporujφcφ WebDAV nebo m∙₧eme pou₧φt nßstroje t°etφch stran. Pro rychlΘ vyzkouÜenφ WebDAV m∙₧ete navÜtφvit adresu http://localhost:8080/exist/webdav/ a p°φmo tak provßd∞t zßkladnφ administraΦnφ ·kony. WebDAV podporuje takΘ nap°φklad Windows Explorer, co₧ m∙₧ete vyzkouÜet jednoduÜe p°idßnφm zmi≥ovanΘ adresy mezi svΘ webovΘ slo₧ky.

XML dbGUI

Jako zßstupce nßstroje t°etφch stran jsem si p°ipravil aplikaci XMl dbGUI, kterß slou₧φ pro administraci NXD, kterΘ podporujφ rozhranφ XML:DB API. Op∞t se jednß o Java aplikaci a jejφ instalace nenφ nijak zßludnß.

Jak jsem ji₧ zmφnil v p°edchozφm Φlßnku, XML dokumenty spoleΦnΘho zam∞°enφ se uklßdajφ do takzvan²ch kolekcφ. Pro nßÜ p°φklad si proto vytvo°φme kolekci s nßzvem myarticles:

XML dbGUI - kolekce "myarticles"

XML dokumenty

Pro dalÜφ Φlßnky jsem si p°ipravil jednoduchΘ DTD schΘma popisujφcφ XML dokument pro psanφ mini-ΦlßneΦk∙, kterΘ vyu₧ijeme pro naÜe praktickΘ ukßzky. VÜechny dokumenty budu vytvß°et v k≤dovßnφ UTF-8.

V p°φÜtφm Φlßnku se u₧ budu zab²vat rozborem dotazovacφho XML jazyka a praktickou ukßzkou jeho pou₧itφ.

P°edchozφ Φlßnky



Petr Äi₧ka (10.3. 2003)

Redakce Interval.cz |  Inzerce na Interval.cz |  Hledßme novΘ autory ISSN 1212-8651 
 ⌐ Zoner software, s.r.o., vÜechna prßva vyhrazena, tento server dodr₧uje prßvnφ p°edpisy o ochran∞ osobnφch ·daj∙.