| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 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φ.