V nadcházejících verzích oblíbené open-source databáze MySQL je k dispozici nativní podpora XML. První část je už ve verzi 5.1 (nyní jako release candidate), zbytku se dočkáme ve verzi 6.0 (zatím alfa). S novou funkcionalitou je možné zejména formátovat výsledky dotazů jako XML, používat v SQL dotazech XPath a načítat celé dokumenty XML do tabulek.
Podrobnosti o tom, jaké konkrétní funkce jsou ve které verzi a jak je používat, zájemci najdou v článku Using XML in MySQL 5.1 and 6.0 od Jona Stephense.
Problém je, že to nikdo z těch mamlasů vývojářů nechce používat. Když to navrhnete, tak vám 80% odpoví jako dayvee. To, že se SQL/XML funkcema jim pro většinu úloh, které si posílají XML stačí jeden SQL dotaz a přidat MIME a mají hotovo. Navíc se to odbude na dost nízké úrovni, takže sestavení XML je pak řádově rychlejší než např. v PHP. Oracle je v implementaci XML hodně daleko, tak daleko, že si myslím, že možná až příliš. I když, v podstatě koupí Oracle zároveň získáte nadupané DMS jádro. To jsou už funkce, které jsou parádní, ale využít je umí promile programátorů.
Potřebuju hlavně ukládat celé fragmenty XML a pak mít možnost v selectech používat XPath podmínky. Dál je zajímavá možnost formátovat XML pro další zpracování pomocí db a ušetřit aplikační kód a snad i čas. Takže nic neobvyklého, podle dokumentace by to mělo jít. Spíš mě zajímá, jak je to se stabilitou a efektivitou. Díky.
Všechno, co potřebujete je k dispozici:
http://www.pgsql.cz/index.php/SQL_Triky#Indexov.C3.A1n.C3.AD_funkce_xpath
http://www.root.cz/clanky/postgresql-8-3-nejen-razantni-navyseni-vykonu/
Stabilní by to mělo být také, jen to obaluje libxml2 a v jádře je to už půl roku - ale v devel verzi. Takže to má stabilitu obvyklou pro takovou verzi, tj. zatím k této funkcionalitě nejsou žádné nahlášené bugy, ale je to opravdu nové (na druhou stranu teď už by to signalizovalo bug v libxml2). Rychlostně .. je to tak rychlé, jako když sestavujete nebo parsujete xml v C pomocí libxml2. Hrdlem je libxml2. Podle mých zkušeností je to několikanásobně rychlejší než použití PHP nebo PL/pgSQL.
Ako velmi nativna je ta podpora XML? Myslim si totiz, ze podobne ako v pgsql je XML ulozene ako typ text. To znamena ze pri kazdom dotaze sa XML musi naparsovat. Oracle ma nativny XML typ, kde sa sposob ulozenia podoba tomu, ktory pouzivaju XML databazy. Nemam s tym prakticke skusenosti, ale zda sa mi, ze rychlost spracovania XPath dotazov v pripade ulozenia v nejakom nativnom tvare by mala byt radovo lepsia. Nevie ku tomuto niekto nieco viac?
10.
Uloženo je to jako text. Což má daleko do ideálu. To parsování bych překousl, stejně je potřeba index, ale u krátkých xml <2kB je zbytečná redundance .. pokud, ke sloupci definujete DTD, tak můžete místo tagů ukládat tokeny. S delšími xml není problém, tam automaticky nastoupi gz komprimace všech textů. Libxml2 nepodporuje binární formát, i když to by se mohlo letos změnit. Co je opravdu minimalistické je podpora XPath. XPath je podporováno plně jako jazyk, tak jak je podporuje libxml2, není však podporováno GiST ani GiN indexem .. XPath vyžaduje rekurzivní vícerozměrný index. Nechybí ale podpora funkcionálního indexu, takže konstatní XPath dotazy lze provést relativně rychle .. funkcionální index udržuje výsledek, takže nedochází k parsování:
http://www.pgsql.cz/index.php/SQL_Triky#Indexov.C3.A1n.C3.AD_funkce_xpath
Efektivnější implementací operace se může dosáhnout cca 100% zrychlení, což v databázích moc neznamená. Větší vliv by měla interní implementace XPath včetně podpory planneru a zmínil jsem multidimenzionálního rekurzivního indexu. Bez podpory libxml2 to v žádném případě hned tak nebude. XPath je principiálně duplicitní dotazovací jazyk k SQL a mít dvě dotazovací jádra není udržitelné. Oleg Bartunov, což je jeden z autorů TSearch2 má v ToDo jak určitou akceleraci XPath dotazů, tak skutečně nativní XML datový typ. Jestli bude nebo nebude je ve hvězdách.
Ona podpora XML v PostgreSQL je dost velká partyzánština několika málo evropanů, kterou jsem začal já napsáním prototypu SQL/XML. Konferenci sleduji skutečně pozorně, a s tímto požadavkem se ozvali 3-4 uživatelé. Takže jsem docela čekal, že se XML vůbec v pg neobjeví. Nakonec je to jedna z hlavních fíčur 8.3 :). Rozhodně SQL/XML zůstane, záleží ale na reakcích uživatelů zda-li to budou používat a s jakým výsledkem. Pokud to uživatelé budou používat, tak se vyplatí pracovat dále na podpoře, pokud ne, tak to zůstane tak jak je.
Přečteno 7 920×
Přečteno 6 030×
Přečteno 6 020×
Přečteno 5 947×
Přečteno 5 814×