Článek přečtěte do 5 min.

Tradiční úložiště XML v databázi Oracle

V roce 2010 Oracle Database představila nativní funkce úložiště XML pro optimalizaci ukládání a používání dokumentů XML pomocí Oracle Database 11g (11.2.0.2). Přístup společnosti Oracle k nativnímu úložišti XMLType byl pak čistě orientovaný na dokumenty, nazvaný Compact Schema-Aware XML (CSX) nebo Non-transportable Binary XML. Tento binární formát byl postaven na přístupu centrální sady tokenů, kde je každý dokument XML zakódován v binárním formátu a klíče pro kódování a dekódování binárních dat jsou uloženy v jediném centrálním slovníku. Takový design je vynikající pro úložiště a výkon v rámci jedné databáze. Neexistuje žádná duplicitní práce pro kódování a dekódování tokenů a vždy existuje pouze jeden odkaz. Vzhledem k tomu, že hashování tokenů je jedním z nejdražších úkolů, tento přístup šetří spoustu času. Přirozeným důsledkem však je, že každá operace zahrnující dekódování binárních dat XML potřebuje přístup do centrálního slovníku.

Co je přenositelné binární XML

Ačkoli CSX stručně komprimuje data XMLType, jeho použití centrálního slovníku (tabulky tokenů) a registrů schémat brání snadnému přijetí pro distribuované a vzdálené architektury, jako je sharding, křížové kontejnery, vzdálené databázové odkazy nebo dokonce robustní možnosti importu/exportu. Jakýkoli scénář, kdy centrální slovník není přímo přístupný, představuje výzvu. K překonání těchto výzev zavedla Oracle Database 23c jako možnost úložiště Transportable Binary XML (TBX), variantu postavenou na CSX, ale bez závislosti na centrálním slovníku.

TBX je mnohem flexibilnější a škálovatelnější bez této závislosti, což umožňuje, aby binárně uložené XML dokumenty byly přenosné a použitelné v distribuovaných prostředích. Přenosné binární XML je doporučená metoda pro nativní ukládání dokumentů XML v databázi Oracle, počínaje Oracle Database 23c. Následující text vás provede tím, jak používat přenositelné binární XML a jak migrovat starší binární formáty úložiště XML.

Práce s přenositelným binárním XML

Počínaje Oracle Database 23c je výchozím typem úložiště XML přenositelné binární XML. Nemusíte explicitně specifikovat typ úložiště vašich sloupců XML. Pokud však chcete specifikovat TBX explicitně, DDL vypadá následovně:

CREATE TABLE tx( ID NUMBER, XMLDOC XMLTYPE) 
XMLTYPE COLUMN XMLDOC STORE AS TRANSPORTABLE BINARY XML;

Chcete-li ověřit, že tabulka má sloupec XMLType uložený jako TBX, stačí tabulku popsat:

DESCRIBE TX 
Name               Null?    Type 
------------------ -------- ----------------------------------------- 
ID                           NUMBER 
XMLDOC                       SYS.XMLTYPE STORAGE TRANSPORTABLE BINARY

Přenosné binární XML poskytuje plnou kompatibilitu zpracování dat s nepřenosným binárním úložištěm XML. Všechny operátory XML a SQL obecně nadále fungují jako dříve bez jakýchkoli změn chování. Přenosné binární XML mění pouze to, jak jsou vaše dokumenty XML uloženy v databázi a jak je s dokumenty XML interně nakládáno.

Jedinou změnou v Transportable Binary XML je odstranění stávajících omezení a umožnění binárních dokumentů XML v moderních architekturách, jako je Oracle Sharding .

Přenosné binární XML a Oracle Sharding

Sdílení je technika databázové architektury používaná ke škálování databází rozdělením dat na několik nezávislých serverů nebo instancí, z nichž každý obsahuje část celkových dat (úlomky). Všechny úlomky jsou koordinovány jednou instancí (koordinátorem), kde jsou všechny informace shromažďovány a prezentovány jako jediná databáze.

Oracle Sharding - architektura

Tato architektura je založena na architektuře sdíleného nic, což znamená, že každý fragment neví nic o ostatních fragmentech. Každý fragment lze také použít jako nezávislou, jedinou databázi. Přenosné binární XML jako samozapouzdřené binární úložiště s vlastním dekódováním/kódováním na úrovni tabulky umožňuje použití nativního XMLType se Sharding: umožňuje bez omezení posílat dokumenty XML po drátě do jakékoli jiné databáze. Přenosné binární XML je jediným podporovaným formátem úložiště XMLType v prostředí Oracle Sharding; zadáním jiných typů úložiště XMLType dojde k chybě.

Chcete-li vytvořit sdílenou tabulku se sloupcem XMLType pomocí přenositelného binárního XML, DDL vypadá následovně:

CREATE SHARDED TABLE SHARDEDTAB
   ( SHDKEY NUMBER NOT NULL, 
     CTRY_CODE VARCHAR2(3) NOT NULL, 
     XMLDOC XMLTYPE, 
     CONSTRAINT SHARD_PK PRIMARY KEY (SHDKEY, CTRY_CODE)
    ) 
PARTITION BY LIST (CTRY_CODE) 
    ( PARTITION P_REG_1 VALUES (‘RG1’) TABLESPACE TBS1, 
      PARTITION P_REG_2 VALUES (‘RG2’) TABLESPACE TBS2, 
      PARTITION P_REG_3 VALUES (‘RG3’) TABLESPACE TBS3 
     ) 
XMLTYPE COLUMN XMLDOC STORE AS SECUREFILE TRANSPORTABLE BINARY XML;

Vaše tabulka bude rozdělena do všech zúčastněných databází (shards) pomocí nového přenositelného binárního XML jako formátu úložiště pro vaše dokumenty XML bez potřeby centrálního úložiště. Netřeba dodávat, že TBX je podporováno také v systémovém nebo kompozitním shardingovém prostředí. Máte-li zájem, podívejte se na přehled Sharding Database Schema Design společnosti Oracle.

Přenosné binární XML a vyhledávací indexy

Ruku v ruce s TBX představila Oracle Database 23c novou, zjednodušenou syntaxi SQL pro indexy vyhledávání XML speciálně pro TBX. Kdykoli požadujete možnosti fulltextového a/nebo rozsahového vyhledávání ve velkých, nestrukturovaných dokumentech XML a přijali jste nový formát úložiště Transportable Binary XML, společnost Oracle doporučuje, abyste k indexování dat XML použili index vyhledávání XML.

Chcete-li vytvořit index vyhledávání XML pro fulltextové i rozsahové vyhledávání, můžete použít syntaxi podobnou následujícímu DDL:

CREATE SEARCH INDEX myXMLDocumentsSearchIndex 
ON myXMLDocumentsTable(myXMLTypeColumn)
FOR XML PARAMETERS ('SEARCH_ON TEXT_VALUE (BINARY_DOUBLE, VARCHAR2, TIMESTAMP)');

Tento příklad povoluje pro zadané datové typy BINARY_DOUBLE, VARCHAR2 a TIMESTAMP komponenty fulltextového vyhledávání i vyhledávání rozsahu.

Pokud si nejste jisti svou pracovní zátěží a obchodními požadavky, doporučuje se vytvořit index pro vyhledávání a prohledávání rozsahu pro běžné datové typy ve vašich dokumentech XML.

Případy použití indexu vyhledávání pro fulltextové vyhledávání a prohledávání rozsahu pomocí relačních operátorů (>, <, <=, >= nebo =) ve výrazu XMLExists v rámci SQL, kde se klauzule mírně liší povahou interního zpracování, takže můžete optimalizovat strukturu indexu vyhledávání XML pro vaše specifické požadavky.

Pokud se zaměřujete pouze na textové vyhledávání, můžete vytvořit index vyhledávání XML zadáním klauzule FOR XML v příkazu CREATE SEARCH INDEX . Jak již bylo zmíněno, takový index vyhledávání XML můžete vytvořit pouze na dokumentech XML uložených jako TBX a musíte mít přidělenou databázovou roli CTXAPP .

Syntaxe pro vytvoření vyhledávacího indexu pro pouze indexování dokumentů pro textové vyhledávání je stejně jednoduchá jako v následujícím příkladu.

CREATE SEARCH INDEX myXMLDocumentsSearchIndex 
ON myXMLDocumentsTable(myXMLTypeColumn) 
FOR XML;

NEBO pomocí podrobnější syntaxe. Udělali byste to pouze z důvodů jasnosti; toto je výchozí, jak je vidět v předchozím příkladu:

CREATE SEARCH INDEX myXMLDocumentsSearchIndex 
ON myXMLDocumentsTtable(myXMLTypeColumn) 
FOR XML PARAMETERS (‘SEARCH_ON TEXT’);

Pokud se snažíte vytvořit svůj index výhradně pro skenování rozsahu v dokumentech XML, stačí zadat seznam datových typů, ve kterých chcete hledat:

CREATE SEARCH INDEX myXMLDocumentsSearchIndex 
ON MyXMLDocumentsTable(myXMLTypeColumn) 
FOR XML PARAMETERS ('SEARCH_ON VALUE (BINARY_DOUBLE, VARCHAR2, TIMESTAMP)');

Převod na přenositelné binární XML

I když je snadné vidět, jak zavést TBX pro budoucí aplikace a systémy, mnoho stávajících aplikací vytvořených pomocí úložiště XML v databázi Oracle bude upgradováno na Oracle Database 23c. Doporučuje se migrovat všechny vaše tabulky pomocí staršího formátu úložiště XML do TBX.

Existují různé možnosti, jak tuto migraci provést:

  • Můžete provést jednoduchý CTAS (Create Table As Select), přetypování staršího datového typu XML do TBX. Toto je nejpragmatičtější přístup. Zavádí však prostoje vaší aplikace a vyžaduje, abyste ručně znovu sestavili všechny závislé struktury, jako jsou indexy.
  • Online redefinice je podobná přístupu CTAS, ale umožňuje, aby vaše migrace probíhala v ONLINE režimu.
  • DataPump má specifické parametry importu pro provedení migrace úložiště v době importu dat, konkrétně TRANSFORM = XMLTYPE_STORAGE_CLAUSE: ‚“ TRANSPORTABLE BINARY XML“‚.
  • GoldenGate, vlajkový produkt společnosti Oracle pro integraci a replikaci dat v reálném čase v heterogenních IT prostředích. Tato metoda je použitelná pouze v případě, že přesouváte celou databázi.

Závěr

Transportable Binary XML představuje novou generaci optimalizovaného binárního úložiště XML v databázi Oracle, které je vytvořeno pro moderní databázové a cloudové architektury. Jeho efektivní binární formát nejen snižuje požadavky na úložiště, ale umožňuje jej použít pro distribuované architektury a zpracování dat. Společně s novým indexováním vyhledávání XML poskytuje Transportable Binary XML vylepšenou integrovanou podporu XML v rámci databáze Oracle, což z něj činí ideální platformu pro vysoce výkonná prostředí a aplikace závislé na XML datech.

Pokud se chcete dozvědět více o novém úložišti Oracle TBX pro dokumenty XML nebo porozumět indexům vyhledávání XML hlouběji, máme pro vás k dispozici dostatek materiálů:

  • Přenosné binární úložiště XML je vysvětleno v dokumentaci spolu se staršími formáty úložiště zde.
  • Podrobnější informace o indexech vyhledávání XML naleznete zde.
  • Pokud znáte XML, ale potřebujete si zopakovat jeho funkčnost, vždy vám doporučujeme vyzkoušet Oracle LiveLabs, a konkrétně ten, který jsme vytvořili pro XML.

Jděte, uveďte svá data XML do práce a přeměňte je na informace.

Zdroj: Oracle