15 - XML databáze Flashcards
XML databáze
XML DB je DB s podporou XML – tzn. dovoluje data specifikovat, a někdy i ukládat v XML formátu.
Většina DB podporuje XML alespoň tak, že jej umožňuje do DB ukládat (tzv. XML enabled DB).
Je-li podpora vnitřní (DB “rozumí” struktuře XML, pracuje s DOM apod.), mluvíme o NATIVNÍ podpoře XML.
Motivací pro XML DB je velké rozšíření tohoto formátu a má-li pro něj DB přímou podporu, je snadnější s ním pracovat.
Mohou existovat wrappery umožňující provádět SQL dotazy nad XML DB. Mezi nativní XML DB patří např. open source DB eXist.
SQL podpora pro XML v SQL:2003
- Zavádí datový typ XML (XMLType) umožňující ukládat “XML hodnoty” (XML dokumenty).
- SQL/XML - funkce, které lze použít v příkazech SQL:
- xmlelement - vytvoří element s daným jménem a do obsahu uloží hodnotu
- xmlforest - vytvoří skupinu XML elementů z názvů sloupců relační tabulky
- xmlconcat - sloučení XML hodnot
- xmlattribute, xmlroot, xmlparse, …
• Mapování SQL na XML a naopak. (datových typů, metadat, export/import dat z DB ve formátu XML)
- Sloupec typu XML může obsahovat:
- XML dokument
- jednotlivé elementy
- strom elementů a semistrukturovaný obsah
• Atributy se mohou vyskytovat pouze v rámci elementů, samy o sobě nejsou legální XML hodnotou.
Podpora XML u serveru Oracle 10g (2002)
- Oracle server od roku 2002 podporuje tyto věci plus některé další (XPath, XML Schémata, …).
- Typ XMLType - odpovídá standardnímu typu XML
- SQL funkce a operátory pro práci s XML
- Podpora XML Schema
- Dualita XML a SQL - lze používat SQL operace nad XML daty a naopak
- Podpora dotazování SQL/XML, XPath, XQuery
- Organizace dat - hierarchická struktura pomocí XML DB Repository
Typy XML dokumentů
Datové XML dokumenty (data-centric) - XML použit pro zápis dat (typicky k přenosu)
• typický životní cyklus: DB -> XML -> DB • nezáleží na pořadí dat (rozhodující název elementu/atributu) • pravidelná struktura • jemná granularita Příklady: faktury, objednávky; dokumenty vytvořené podle šablony; export dat z DB.
Dokumentově zaměřené XML dokumenty (document-centric) - Často určené pro čtení či zpracování lidmi, data zpravidla nepochází z DB
• pořadí elementů zásadní • méně pravidelná struktura Příklady: Knihy, e-maily, WWW stránky v XHTML.
Typy Ukládání XML do DB (3)
Shredding (rozklad XML dokumentu do relačního modelu)
• používaný dříve, ztrácí výhody XML (Microsoft SQL Server používá doteď; má více druhů podpory XML dokumentů)
• výhoda použití již implementovaných operací, indexů, …
• možnost převést XPath, XQuery na standardní SQL dotaz
• náročná operace sestavení originálního XML dokumentu
• rozklad/sestavení XML dokumentu na aplikační úrovni ↔ standardní uložení/načtení do/z DB
Uložení do CLOB
• uložení celého dokumentu do CLOB
• flexibilní s ohledem na změnu schématu
• rychlé získání dokumentu
• operace nad částmi pomalé a paměťově náročné
• pomalé aktualizace
Objektově - relační uložení
• použití typu XMLType pro vytvoření sloupcových objektů a objektových tabulek
• mapování a validace na základě XML schématu
• efektivní práce s částí dokumentu pomocí XPath
• možnost využití podpory pro omezení v SQL (např. PRIMARY KEY)
XML databázové produkty
Nativní XML databázové systémy
• datový model vychází z modelu XML dokumentu
XML servery
• JEE, webové aplikační a další servery s datovým rozhraním v XML
• slouží k vytváření distribuovaných aplikací nebo pouhému publikování XML dokumentů na webu
Dokumentově zaměřené aplikace
Systémy pro správu obsahu (CMS - content management system)
• typicky systémy nad nativní XML DB, souborovým systémem nebo RDB
• prostředky pro kontroly, editaci, verzování atd.
Datově zaměřené aplikace (zbytek)
Databázové systémy s podporou XML (XML enabled)
• většina komerčních relačních DB, PostgreSQL má podporu XML nad CLOB a umožňuje provádět XPath dotazy
• DB -> XML, XML -> DB
Middleware
• data v relační tabulce, ale pracujeme s nimi jako s XML
• prostředník mezi aplikacemi
• DB -> XML, XML -> DB, (podpora XML ale není v DB ale v middleware)
• např. Mícrosoft ADO
Wrappery
• data v XML, ale dotazujeme jako na relační
• programy umožňující relační pohled na XML (dotazování v SQL na data pocházející z XML)
Nástroje pro navázání XML dat (XML data binding)
• z XML dokumentu vytvoří objekty zapouzdřující data (XML -> objekt)
• resp. z XML schématu třídy pro práci s dokumentem (XML Schema -> třída)
• např.: JAXB (Java Architecture for XML Binding)
Dotazování nad XML
Xpath (popř. i XSLT pro transformaci výsledku) – Např. ZAKAZNICI/* vybere všechny potomky uzlu ZAKAZNICI.
XQuery – Funkcionální dotazovací jazyk.
XSQL – Jazyk kombinující XML a SQL.