• No results found

Compression of XML Files

N/A
N/A
Protected

Academic year: 2021

Share "Compression of XML Files"

Copied!
57
0
0

Loading.... (view fulltext now)

Full text

(1)ˇ – Technicka´ univerzita Ostrava VSB Fakulta elektrotechniky a informatiky Katedra informatiky. Komprese XML souboru˚ Compression of XML Files. 2010. Pavel Hruˇska.

(2) Souhlas´ım se zveˇrejnˇen´ım t´eto diplomov´e pr´ace dle poˇzadavku˚ cˇ l. 26, odst. 9 Studijn´ıho ˇ a zkuˇsebn´ıho rˇa´ du pro studium v magistersk´ych programech VSB-TU Ostrava.. V Ostravˇe 7. kvˇetna 2010. .............................. Prohlaˇsuji, zˇ e jsem tuto diplomovou pr´aci vypracoval samostatnˇe. Uvedl jsem vˇsechny liter´arn´ı prameny a publikace, ze kterych ´ jsem cˇ erpal.. V Ostravˇe 7. kvˇetna 2010. ..............................

(3) Dˇekuji vˇsem, kteˇr´ı mi pom´ahali bˇehem pˇr´ıprav t´eto diplomov´e pr´ace, pˇredevˇs´ım vedouc´ımu pr´ace Ing.Janu Martinoviˇcovi, Ph.D. za jeho ochotu, trpˇelivost a cenn´e rady..

(4) Abstrakt Pr´ace s XML soubory je dnes cˇ ´ım d´al t´ım v´ıce cˇ astˇejˇs´ı. Existuj´ı tak´e XML dokumenty, kter´e obsahuj´ı velk´e mnoˇzstv´ı dat. Tato diplomov´a pr´ace popisuje existuj´ıc´ı algoritmy ˚ pouˇz´ıvan´e ke kompresi XML dokumentu˚ a tak´e popisuje nˇekter´e nov´e zpusoby, jak st´avaj´ıc´ı pˇr´ıstupy vylepˇsit. Zamˇerˇ uje se na nˇekolik popul´arn´ıch kompresn´ıch algoritmu˚ a jejich pouˇzit´ı jak pˇri kompresi XML jako textu, tak i pˇri kompresi XML s vyuˇzit´ım s´emantickych ´ informac´ı dostupnych ´ v XML dokumentech. D´ale popisuje rozˇs´ırˇ en´ı tˇechto metod o optimalizaci XML pomoc´ı shlukov´an´ı. Na z´akladˇe provedenych ´ testu˚ jsou porovn´any efektivnosti jednotlivych ´ algoritmu˚ a vysloven z´avˇer, zda lze rozˇs´ırˇ en´ım st´avaj´ıc´ıch metod komprese XML dokumentu˚ dos´ahnout lepˇs´ıch vysledk u˚ komprese. ´ ˇ a´ slova: komprese, komprese textu, XML, shlukov´an´ı dokumentu, ˚ analyza Kl´ıcov ´ XML.. Abstract Working with XML files is now becoming more frequent. There are XML documents containing large amount of data. This thesis deals with existing algorithms used for XML compression and some new ways of improving current approaches. This thesis focuses on some popular text compression algorithms and their application either in standard text file compression or in XML compression through semantic information that is present in XML documents. The thesis also describes extending the methods with XML optimization through agglomerative clustering. Various compression methods are compared on the basis of testing in order to find out whether XML compression methods extension can achieve better results. Keywords: Compression, Text Compression, XML, Documents Clustering, Parsing XML..

(5) 1. Obsah 1. ´ Uvod 1.1 Struktura pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 4 4. 2. XML 2.1 Charakteristika XML 2.2 Vyhody XML . . . . ´ 2.3 Nevyhody XML . . . ´ 2.4 Zpracov´an´ı XML . . 2.5 Analyza ´ XML . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. 6 6 6 7 7 9. Komprese XML 3.1 Principy komprese . . . . . . . . . . . . . 3.2 Komprese XML jako textu . . . . . . . . . 3.3 XML-Aware komprese . . . . . . . . . . . 3.4 Komprese XML s podporou dotazov´an´ı . 3.5 Komprese XML bez podpory dotazov´an´ı. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. 11 11 12 16 17 20. 4. XMill 4.1 Architektura XMill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 4.2 Pˇr´ıklad kodov´ an´ı uk´azkov´eho XML . . . . . . . . . . . . . . . . . . . . . . 4.3 Datovy´ form´at XMill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 25 26 28 30. 5. SharpXMill 5.1 N´avrh architektury SharpXMill . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Podporovan´e kompresn´ı metody . . . . . . . . . . . . . . . . . . . . . . . . 5.3 SXMill – rozˇs´ırˇ en´ı funkcionality XMill . . . . . . . . . . . . . . . . . . . . .. 34 34 36 36. 6. Testov´an´ı 6.1 Parametry testov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Vysledky testov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´. 38 38 40. 7. Z´avˇer. 50. 8. Reference. 51. 3. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . .. . . . . ..

(6) 2. Seznam tabulek 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24. Pˇrehled s´emantickych ´ kompresoru˚ n´astroje XPRESS . . . . . . Standardn´ı s´emantick´e kompresory XMill . . . . . . . . . . . . Kombinovan´e kompresory XMill . . . . . . . . . . . . . . . . . XMill – pˇrehled cˇ a´ st´ı uk´azkov´eho fragmentu XML . . . . . . . XMill – pˇr´ıklad naplnˇen´ı slovn´ıku . . . . . . . . . . . . . . . . XMill – pˇr´ıklad datovych ´ kontejneru˚ . . . . . . . . . . . . . . . XMill – Pˇr´ıklad obsahu kontejneru struktury . . . . . . . . . . XMill – uloˇzen´ı cˇ ´ısel bez znam´enka (uint32) . . . . . . . . . . . XMill – uloˇzen´ı cˇ ´ısel se znam´enkem (sint32) . . . . . . . . . . . XMill – form´at souboru XMI . . . . . . . . . . . . . . . . . . . . XMill – pˇr´ıkazy kontejneru struktury . . . . . . . . . . . . . . . Sada testovac´ıch XML souboru˚ . . . . . . . . . . . . . . . . . . Testovac´ı soubory XML pˇred a po normalizaci . . . . . . . . . Parametry komprese bˇezˇ nymi programy . . . . . . . . . . . . ´ Parametry komprese SXMill . . . . . . . . . . . . . . . . . . . . Notace pouˇzit´a pˇri prezentaci vysledk u˚ experimentu˚ . . . . . ´ Absolutn´ı vysledky komprese bˇezˇ nymi n´astroji . . . . . . . . . ´ ´ Kompresn´ı pomˇery pˇri pouˇzit´ı bˇezˇ nych ´ n´astroju˚ . . . . . . . . Srovn´an´ı XMill a bˇezˇ n´e komprese . . . . . . . . . . . . . . . . . ˇ Casov´ a n´aroˇcnost XMill komprese se shlukov´an´ım kontejneru˚ XMill komprese se shlukov´an´ım kontejneru˚ . . . . . . . . . . . Parametry shlukov´an´ı celych ´ XML souboru˚ . . . . . . . . . . . Komprese shlukovanych n´astroji . . . ´ XML souboru˚ bˇezˇ nymi ´ Komprese shlukovanych ´ XML souboru˚ pomoc´ı XMill . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . .. 19 26 26 28 30 31 31 32 32 33 33 39 39 40 40 41 43 43 44 46 46 47 49 49.

(7) 3. ´ u˚ Seznam obrazk 1 2 3 4 5 6 7 8 9 10 11 12 13. Obecny´ model zpracov´an´ı XML . . . . . . . . . . . . . . . . . . . . . . . . . Pˇr´ıklad XML s nejasnˇe analyzovatelnou strukturou . . . . . . . . . . . . . Pˇr´ıklad DTD [13] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pˇr´ıklad XML pro kompresi pomoc´ı DTD [13] . . . . . . . . . . . . . . . . . Model architektury XMill [14] . . . . . . . . . . . . . . . . . . . . . . . . . . XMill – uk´azkovy´ fragment XML pro pˇr´ıklad zpracov´an´ı dat . . . . . . . . Architektura SharpXMill . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kompresn´ı pomˇery bˇezˇ nych ´ n´astroju˚ . . . . . . . . . . . . . . . . . . . . . . ˚ ci bˇezˇ n´e kompresi . . . . . . . . . . Srovn´an´ı vysledk u˚ XMill komprese vuˇ ´ Zlepˇsen´ı komprese v z´avislosti na velikosti pamˇet’ov´eho okna . . . . . . . XMill komprese se shlukov´an´ım kontejneru˚ . . . . . . . . . . . . . . . . . . Srovn´an´ı bˇezˇ n´e komprese po proveden´ı shlukovan´ı celych ´ XML souboru˚ Srovn´an´ı XMill komprese po proveden´ı shlukovan´ı celych ´ XML souboru˚ .. 8 9 23 24 27 29 35 42 42 45 47 48 48.

(8) 4. 1. ´ Uvod. XML [29] je v dneˇsn´ı dobˇe velmi rozˇs´ırˇ eny´ jazyk pro ukl´ad´an´ı a vymˇ ´ enu dat. Pˇres sv´e ne´ sporn´e vyhody, kter´ e pramen´ ı pˇ r edevˇ s ı m z jeho univerz´ a lnosti a tak´e z textov´e podoby ´ jeho datov´eho form´atu (dobˇre cˇ iteln´eho pro cˇ lovˇeka), m´a i nˇekter´e nevyhody. Mezi hlavn´ı ´ patˇr´ı pˇredevˇs´ım nutnost analyzy ´ XML dat pˇred jejich pouˇzit´ım. Pokud jej srovn´ame s nativn´ımi bin´arn´ımi form´aty, jedn´a se tak´e o relativnˇe vyˇ ´ reˇcny´ jazyk, ktery´ klade vˇetˇs´ı n´aroky na prostor nutny´ k uloˇzen´ı reprezentovanych ´ dat. V t´eto pr´aci struˇcnˇe charakterizujeme XML a zabyv´ ´ ame se tak´e problematikou spojenou s jeho analyzou. ´ Probl´em vyˇ ´ reˇcnosti XML lze rˇ eˇsit pomoc´ı komprese dat. Jelikoˇz se na XML d´a d´ıvat ˚ e poˇzadavky, je z v´ıce pohledu˚ a i na samotnou kompresi XML se mohou kl´ast ruzn´ ˚ moˇzn´e tak´e k problematice komprese XML pˇristupovat v´ıce zpusoby. Jelikoˇz je XML v podstatˇe textovy´ dokument, je pˇrirozen´a myˇslenka komprimovat jej bˇezˇ n´ymi kompresn´ımi n´astroji, kter´e dennˇe pouˇz´ıv´ame pro kompresi jinych ´ nejen textovych ´ dokumentu˚ a ˚ Tyto n´astroje vyuˇz´ıvaj´ı osvˇedˇcen´e kompresn´ı algoritmy, kter´e jsou d´ıky obecnˇe souboru. bohat´e historii prakticky ovˇerˇ en´e a velmi cˇ asto vyuˇz´ıvan´e jako spolehliv´e prostˇredky ke kompresi dat. Jejich pouˇzit´ı je tedy velmi snadn´e a vysledky se dostavuj´ı okamˇzitˇe. ´ V t´eto pr´aci testujeme kompresi XML souboru˚ pomoc´ı algoritmu˚ Deflate, BZip2, PPMdI a LZMA. Kompresi XML lze rˇ eˇsit i specializovanymi n´astroji, ty se nazyvaj´ ´ ´ ı XML-aware kompre˚ kter´e jsme shrom´azˇ dili studiem sory. V t´eto pr´aci uv´ad´ıme pˇrehled n´astroju˚ a algoritmu, odbornych ´ cˇ l´anku˚ a internetovych ´ zdroju˚ vˇenuj´ıc´ıch se XML kompresi. D´ale se podrobnˇeji vˇenujeme n´astroji XMill. Popisujeme zde v´ıce detailnˇeji jeho princip komprese, datovy´ form´at a dalˇs´ı informace. S t´ımto n´astrojem pak d´ale pracujeme, pˇredevˇs´ım s naˇs´ı vlastn´ı implementac´ı v prostˇred´ı .NET Framework (v jazyce C#). XMill jsme si zvolili pˇredevˇs´ım proto, zˇ e se jedn´a o velmi popul´arn´ıho z´astupce XML-aware komprese, ktery´ velmi cˇ asto slouˇz´ı jako etalon pˇri srovn´an´ı odliˇsnych ´ pˇr´ıstupu˚ komprese XML. Nav´ıc je velmi dobˇre zdokumentov´an. Po detailn´ım popisu XMill d´ale popisujeme naˇs´ı implementaci tohoto n´astroje, kterym ´ je SXMill (SharpXMill). Zamˇerˇ ujeme se pˇredevˇs´ım na z´akladn´ı architekturu navrˇzen´eho ˚ syst´emu a na jeho odliˇsnosti oproti puvodn´ ımu XMill. D´ale se vˇenujeme problematice shlukov´an´ı dat, pˇredevˇs´ım vyuˇzit´ı t´eto metody ve spojen´ı s kompres´ı XML. Konkr´etnˇe jsme shlukov´an´ı dat vyuˇzili k optimalizaci XML a experimentovali jsme, zda nepovede k dosaˇzen´ı lepˇs´ıch vysledk u˚ komprese. Vyzkouˇseli ´ jsme dvˇe moˇzn´e cesty optimalizace — shlukov´an´ı dat v kontejnerech bˇehem XMill komprese a shlukov´an´ı cel´ych XML souboru. ˚ V z´avˇeru pr´ace pak vyhodnocujeme proveden´e experimenty. Testovali jsme bˇezˇ n´e metody komprese dat i navrˇzen´e optimalizace. Veˇsker´e vysledky srovn´av´ame v kontextu ´ ˚ jednotlivych ´ metod komprese a n´astroju.. 1.1. ´ Struktura prace. Charakteristikou XML a jeho vyhodami a nevyhodami se zabyv´ ´ ´ ´ ame v sekci 2. V sekci ˚ zpra2.4 se vˇenujeme problematice zpracov´an´ı XML a nejˇcastˇeji pouˇz´ıvanym ´ modelum.

(9) 5. cov´an´ı XML — XML DOM a SAX. Kompresi XML je vˇenov´ana sekce 3, konkr´etnˇe v sekci 3.2 popisujeme kompresi XML jako textu (vˇcetnˇe popisu jednotlivych metod kompre´ se) a v sekc´ıch 3.3, 3.4 a 3.5 se zamˇerˇ ujeme na kompresi specializovanymi (XML-aware) ´ n´astroji, kde postupnˇe rozeb´ır´ame kompresi XML s podporou dotazovan´ı a n´aslednˇe bez podpory dotazov´an´ı. Sekce 4 se podrobnˇe vˇenuje n´astroji XMill, ktery´ je typickym ´ pˇredstavitelem kategorie XML-aware komprese bez podpory dotazov´an´ı. V sekci 4.1 popisujeme jeho architekturu, v sekci 4.2 uv´ad´ıme na jednoduch´em pˇr´ıkladu j´ım pouˇz´ıvany´ princip oddˇelen´ı struktury od dat a v sekci 4.3 popisujeme datovy´ form´at tohoto n´astroje. Sekce 5 popisuje n´ami implementovany´ n´astroj SXMill (SharpXMill). Jeho architektura je pops´ana v sekci 5.1, podporovan´e kompresn´ı metody pak v sekci 5.2 a popis ˚ rozˇs´ırˇ en´ı oproti puvodn´ ımu XMill je uveden v sekci 5.3. ˚ V sekci 6.2.1 jsou Sekce 6 se vˇenuje prezentaci vysledk u˚ provedenych ´ ´ experimentu. k dispozici vysledky komprese XML souboru˚ jako textu (bˇezˇ n´a komprese), v sekci 6.2.2 ´ uv´ad´ıme vysledky komprese pomoc´ı n´astroje XMill. Sekce 6.2.3 se zabyv´ ´ ´ a ot´azkou, jak ’ ˇ ´ esˇ nost komprese pˇri pouˇzit´ı u n´astroje XMill ovlivnuje velikost pamˇet ov´eho okna jeho uspˇ jednotlivych ´ kompresn´ıch metod. Sekce 6.2.4 se vˇenuje kompresi XML pomoc´ı n´astroje XMill s optimalizac´ı kontejneru˚ vyuˇz´ıvaj´ıc´ı shlukov´an´ı. V sekci 6.2.5 ukazujeme vysledky ´ ˚ komprese XML bˇezˇ nou kompres´ı po proveden´ı shlukov´an´ı celych ´ XML souboru. V sekci 7 shrnujeme vysledky experimentu˚ a vyslovujeme z´avˇer, zda je moˇzn´e pomoc´ı ´ ˚ shlukov´an´ı vylepˇsit st´avaj´ıc´ı metody komprese XML souboru..

(10) 6. 2. XML. XML (eXtensible Markup Language, cˇ esky rozˇsiˇritelny´ znaˇckovac´ı jazyk) je obecny, ´ otevrˇ eny´ znaˇckovac´ı jazyk, standardizovany´ konsorciem W3C. Vznik tohoto jazyka se datuje do roku 1998, kdy byla standardizov´ana verze 1.0. XML je zaloˇzen na obecn´em metajazyku SGML, pˇresnˇeji rˇ eˇceno tvoˇr´ı jeho podmnoˇzinu. Ve srovn´an´ı s SGML je jednoduˇssˇ´ı, snadnˇeji se analyzuje 1 [29, 32].. 2.1. Charakteristika XML. ˇ XML je obecny´ jazyk, ktery´ umoˇznuje definovat vlastn´ı jazyky — pˇredstavuje sadu pravi˚ V dneˇsn´ı dobˇe se vyuˇz´ıv´a pˇredevˇs´ım del, kter´e se pouˇz´ıvaj´ı k definici konkr´etn´ıch jazyku. jako prostˇredek pro vymˇ ´ enu dat v prostˇred´ı internetu, napˇr. u rˇ eˇsen´ı B2B2 [5] apod. D´ıky ˚ u kterych sv´e univerz´alnosti mu d´avaj´ı vyvoj´ ´ arˇ i pˇrednost u syst´emu, ´ nen´ı v dobˇe n´avrhu pˇredem jasn´e, s jakymi dalˇs´ımi syst´emy bude nutn´e komunikovat. XML nach´az´ı uplat´ ´ ziˇstˇe, velmi popul´arn´ı jsou v dneˇsn´ı dobˇe tak´e na nˇen´ı tak´e jako univerz´aln´ı datov´e uloˇ XML zaloˇzen´e konfiguraˇcn´ı soubory. ˚ kde znakem se rozum´ı libovolny´ UniXML dokument je tvoˇren posloupnost´ı znaku, code znak. XML je tedy ve sv´e podstatˇe textovy´ dokument. V XML dokumentu se rozliˇsuj´ı dva z´akladn´ı elementy — znaˇcky a obsah. Znaˇcky jsou uvozeny znakem <“ (menˇs´ı) a ” konˇc´ı >“ (vˇetˇs´ı), nebo zaˇc´ınaj´ı znakem &“ (ampersand) a konˇc´ı znakem ;“ (stˇredn´ık). ” ” ” Vˇse ostatn´ı, co nen´ı znaˇcka, je obsah [29]. XML je strukturovany´ jazyk, jeho struktura se tvoˇr´ı vz´ajemnym ´ vnoˇrov´an´ım znaˇcek. ˇ Jako kaˇzdy´ jazyk, m´a i XML svou syntaxi. Kaˇzdy´ XML soubor mus´ı splnovat minim´alnˇe pravidla well-formed XML3 z´apisu. Well-formed XML nedovoluje napˇr´ıklad pouˇzit´ı pˇrekˇr´ızˇ enych ´ znaˇcek [29]. Na jazyku XML jsou postaveny nˇekter´e dalˇs´ı jazyky. Jedn´a se napˇr´ıklad o RSS [34] a Atom [20] (syndikace obsahu), SOAP [36] (vymˇ ´ ena zpr´av), XML-RPC (vzd´alen´e vol´an´ı procedur) [40] cˇ i XHTML [37] (rozˇsiˇritelny´ hypertextovy´ znaˇckovac´ı jazyk). Mnoho aplikac´ı zaˇc´ın´a vyuˇz´ıvat XML tak´e jako z´akladn´ı datovy´ form´at, napˇr´ıklad jako popul´arn´ı kancel´arˇ sk´e bal´ıky Microsoft Office (form´at Open XML) [31] a OpenOffice.org (form´at OpenDocument) [3].. 2.2. Vyhody ´ XML. Jak jiˇz bylo rˇ eˇceno, XML je velmi rozˇs´ırˇ enym ´ a hojnˇe pouˇz´ıvanym ´ jazykem v praxi. Jeho velk´e rozˇs´ırˇ en´ı pramen´ı z nespornych kterymi tento jazyk disponuje. Pˇredevˇs´ım ´ vyhod, ´ ´ se jedn´a o univerz´aln´ı jazyk, do kter´eho je moˇzn´e serializovat4 a zpˇetnˇe z nˇej deserializovat5 libovoln´a data. D´ıky tomu se velmi cˇ asto pouˇz´ıv´a jako prostˇredn´ık u vz´ajemn´e ko1. Z anglick´eho parse. Business-to-Business 3 ˚ Syntaktick´a pravidla pro z´apis XML dokumentu. 4 ˚ kter´e reprezentuj´ı stav nˇejak´e informace. Vytvoˇren´ı proudu symbolu, 5 Reverzn´ı operace k operaci serializace. 2.

(11) 7. ˚ ymi munikace mezi ruzn ´ syst´emy, kter´e vnitˇrnˇe vyuˇz´ıvaj´ı odliˇsn´e form´aty, ale pro vymˇ ´ enu ˚ dat pouˇz´ıvaj´ı univerz´aln´ı XML. T´ım odpad´a nutnost vytv´arˇ et specifick´e pˇrevodn´ı mustky pro kaˇzdy´ novy´ partnersky´ syst´em, se kterym ´ je potˇreba komunikovat, pˇri jejichˇz tvorbˇe se dopodrobna mus´ıme sezn´amit s form´atem druh´e strany. Nam´ısto toho se definuje ˚ ze komunikovat jakykoliv pouze XML rozhran´ı, se kterym syst´em, aniˇz by znal ´ pak muˇ ´ vnitˇrn´ı strukturu dat dan´eho syst´emu. Textovy´ form´at je v neposledn´ı rˇ adˇe tak´e dobˇre cˇ itelny´ pro cˇ lovˇeka.. 2.3. Nevyhody ´ XML. Zm´ınˇen´e vyhody XML pˇrin´asˇ ej´ı na druhou stranu i jeho nevyhody. Mezi hlavn´ı nevyho´ ´ ´ du XML patˇr´ı pˇredevˇs´ım jeho vyˇ ´ reˇcnost. Vyˇ ´ reˇcnost vede v porovn´an´ı s konkr´etn´ımi ˚ Pokud s XML datovymi form´aty k mnohem vˇetˇs´ı datov´e n´aroˇcnosti XML dokumentu. ´ ˚ ze chceme pracovat, je tak´e nutn´e nejdˇr´ıve jej analyzovat (anglicky parse XML), coˇz muˇ pˇredevˇs´ım pˇri zpracov´an´ı rozs´ahlejˇs´ıch XML znamenat vyznamnou z´atˇezˇ pro vypoˇ ´ ´ cetn´ı vykon syst´emu [19]. ´ Tyto nevyhody jsou obecnˇe zn´am´e, proto vznikl napˇr´ıklad XML Binary. Jedn´a se o ´ standardizovany´ form´at, ktery´ se neshoduje se specifikac´ı XML, ale pouze si zachov´av´a ˚ ˚ ze jisty´ vztah s puvodn´ ım XML [39]. XML Binary tak lze pouˇz´ıt u aplikac´ı, u kterych ´ muˇ byt ´ vyˇ ´ reˇcnost bˇezˇ n´eho XML probl´em, ale existuje u nich poˇzadavek na vyuˇzit´ı standardizovan´eho form´atu vymˇ ´ eny dat.. 2.4. ´ ı XML Zpracovan´. ˚ datovym ´ ziˇstˇem jsou pak tyXML data jsou pˇredstavov´ana s´eri´ı Unicode symbolu, ´ uloˇ picky textov´e soubory. Pˇri pr´aci proto mus´ı bˇezˇ n´e aplikace tuto line´arn´ı strukturu zpracovat — analyzovat — a identifikovat v n´ı jednotliv´e prvky struktury a samotnych ´ dat. ´ Samozˇrejmˇe je nutn´e m´ıt k dispozici i inverzn´ı operaci, tedy vytvoˇren´ı a upravu wellformed XML reprezentuj´ıc´ıho danou strukturu a obsahuj´ıc´ıho poˇzadovan´a data. Existuje nˇekolik modelu˚ zpracov´an´ı XML, dva nejˇcastˇeji pouˇz´ıvan´e SAX (Simple Api for XML) [35] a XML DOM (XML Document Object Model) [28] struˇcnˇe pˇredstav´ıme v dalˇs´ı ˚ zitou cˇ a´ st´ı anal´yza XML, protoˇze pr´avˇe ona cˇ a´ sti textu. U zpracov´an´ı XML je velmi duleˇ ˚ ze m´ıt z´asadn´ı vliv na chov´an´ı c´ılov´e aplikace. Problematice analyzy muˇ ´ XML se vˇenujeme v n´asleduj´ıc´ım textu t´eto kapitoly. ˚ Obecny´ model zpracov´an´ı XML dat popisuje zpusob cˇ ten´ı a z´apisu XML dat ve vztahu ke klientsk´e aplikaci. Jeden z modelu˚ je zn´azornˇen na obr´azku 1. Obr´azek ukazuje ´ na nejvyˇssˇ´ı urovni klientskou aplikaci, kter´a cˇ te, popˇr. mˇen´ı XML data. Niˇzsˇ´ı vrstvy ˇ ı tuto aplikaci od operac´ı spojenych pak odstinuj´ ´ s vlastn´ım zpracov´an´ım XML dat. D´ıky ˚ ze aplikace pˇristupovat k XML na vyˇssˇ´ı, abstraktnˇejˇs´ı urovni. ´ tomuto modelu muˇ Pod klientskou aplikac´ı jsou v modelu zn´azornˇeny vrstvy XML Core (ta obsahuje funkce pro zpracov´an´ı XML dat dle konkr´etn´ıch poˇzadavku˚ implementace cˇ i prostˇred´ı) a dvojice komponent XML Writer a XML Parser (ty slouˇz´ı ke cˇ ten´ı a z´apisu XML)..

(12) 8. Klientská aplikace. SAX. DOM. XML Model. XML Core. XML Writer. XML Parser. Obr´azek 1: Obecny´ model zpracov´an´ı XML 2.4.1. XML DOM (XML Document Object Model). XML DOM (XML Document Object Model) vych´az´ı z obecn´e definice DOM (Document ˇ Object Model), coˇz je jazykovˇe a platformˇe neutr´aln´ı rozhran´ı, kter´e umoˇznuje progra˚ a skriptum ˚ dynamicky pˇristupovat a aktualizovat obsah, strukturu a styl dokumum mentu˚ [28]. ˚ KoˇrenoXML DOM nahl´ızˇ ´ı na XML jako na strom, ktery´ se skl´ad´a z jednotlivych ´ uzlu. ´ ˚ ze obsahovat uzly podˇr´ızen´e. Rekurzivnˇe vym a ten muˇ ´ uzlem je uzel na nejvyˇssˇ´ı urovni tato vlastnost plat´ı i pro podˇr´ızen´e uzly, tedy podˇr´ızen´e prvky mohou obsahovat sobˇe podˇr´ızen´e prvky a tak d´ale. Bˇehem analyzy ´ vstupn´ıch dat se v pamˇeti postupnˇe vytvoˇr´ı jim odpov´ıdaj´ıc´ı strom. ´ Upravy pak prob´ıhaj´ı v pamˇeti a cely´ strom nebo jeho cˇ a´ st je kdykoliv moˇzn´e zapsat ve ˚ form´atu XML. Z uveden´eho zpusobu pr´ace je patrn´e, zˇ e XML DOM potˇrebuje m´ıt ke sv´e ˚ ze cˇ init probl´em pˇri zprapr´aci v pamˇeti neust´ale celou strukturu i samotn´a data, coˇz muˇ ˚ Vyhodou ˚ ze cov´an´ı rozs´ahlych tohoto modelu je fakt, zˇ e aplikace muˇ ´ XML dokumentu. ´ ˇ ´ ˇ libovolnˇe cıst i mˇenit strukturu a data, protoˇze DOM podporuje operace cten´ı i modifikace a to typicky objektovˇe. 2.4.2. SAX (Simple API for XML). SAX prov´ad´ı postupnou analyzou vstupn´ıch XML dat a bˇehem n´ı identifikuje jednotliv´e ´ cˇ a´ sti XML dokumentu, jako jsou znaˇcky, atributy, entity, koment´arˇ e atp. SAX je zaloˇzen na ud´alostech, na kter´e se klientsk´a aplikace v´azˇ e a pomoc´ı nichˇz pak z´ısk´av´a data. Hlavn´ı rozd´ıl oproti dˇr´ıve zm´ınˇen´emu modelu DOM je v tom, zˇ e SAX neudrˇzuje v pamˇeti strukturu ani data cel´eho dokumentu, ale pouze data aktu´alnˇe analyzovan´e cˇ a´ sti [35]. D´ıky tomu je moˇzn´e zpracovat libovolnˇe rozs´ahly´ XML dokument, nicm´enˇe, z principu je moˇzn´e data pouze cˇ ´ıst a to pouze line´arnˇe. V praxi se bˇezˇ nˇe SAX model implemen-.

(13) 9. <poloˇzka> ´ an´ ´ ı textu</nadpis> <nadpis>Formatov <popis>V textu muˇ ˚ zeme pouˇz´ıt <b>tuˇcne´ p´ısmo</b> ale ne <i>kurz´ıvu</u>.</popis> ... </poloˇzka> <poloˇzka> ´ ´ <nadpis>Pˇr´ıklad platneho zaznamu</nadpis> ˇ ı:</b> Nepouˇz´ıvat!</popis> <popis><b>Upozornen´ ... </poloˇzka>. Obr´azek 2: Pˇr´ıklad XML s nejasnˇe analyzovatelnou strukturou tuje jako SAX parser, coˇz je konkr´etn´ı analyz´ator podporuj´ıc´ı model SAX. SAX je vhodny´ pˇri pouˇzit´ı s aplikacemi, kter´e potˇrebuj´ı vstupn´ı data pouze cˇ ´ıst a nevyˇzaduj´ı v jednom okamˇziku komplexn´ı pohled na cely´ XML dokument.. 2.5. Analyza ´ XML. XML se skl´ad´a ze znaˇcek a obsahu [29]. Znaˇcky jsou definov´any pomoc´ı speci´aln´ıch ˚ ze znaku˚ ( <“ a >“). Vˇse, co nen´ı znaˇcka, je povaˇzov´ano za obsah. Ne vˇzdy ovˇsem muˇ ” ” byt ´ rozdˇelen´ı znaˇcek a obsahu zcela zˇrejm´e. U well-formed XML dokumentu nen´ı probl´em identifikovat veˇsker´e znaˇcky, nicm´enˇe nˇekter´e znaˇcky nemus´ı m´ıt vyznam znaˇcky ´ ˚ ze se jednat o znaˇcku, kter´a je um´ıstˇena v kontextu nˇejak´eho jako definuj´ıc´ı strukturu, ale muˇ obsahu jako form´atovac´ı nebo jiny´ pomocn´y prvek (napˇr. oznaˇcen´ı tuˇcn´eho textu znaˇckou ˚ ze m´ıt za n´asledek nestandardn´ı chov´an´ı c´ılov´e aplikace. Pˇr´ıklad kon<b></b>). To muˇ kr´etn´ıho XML, ktery´ odpov´ıd´a podobn´emu popisu, je zn´azornˇen na obr´azku 2. ˚ Zpusob analyzy ´ takov´eho XML souboru m´a vliv na strukturu a obsah informac´ı, jak´e ´ aplikace z´ısk´a od analyz´atoru. Dvˇe konkr´etn´ı uskal´ ı popisuj´ı n´asleduj´ıc´ı dvˇe podkapitoly. 2.5.1. Analyza ´ struktury a obsahu. Uk´azkovy´ pˇr´ıklad obsahuje dle form´aln´ı definice XML celkem cˇ tyˇri jedineˇcn´e znaˇcky poloˇzka, nadpis, b, i a k nim odpov´ıdaj´ıc´ı koncov´e znaˇcky. Nicm´enˇe tyto znaˇcky v dan´em kontextu spadaj´ı do dvou kategori´ı. Prvn´ı kategorii tvoˇr´ı znaˇcky, pomoc´ı kterych ´ se tvoˇr´ı poˇzadovan´a struktura dat — to jsou znaˇcky poloˇzka a nadpis. Vˇse ostatn´ı, tedy texty um´ıstˇen´e uvnitˇr tˇechto znaˇcek, m´a byt ´ povaˇzov´ano za obsah. Ovˇsem vloˇzen´ı textu podobn´emu naˇsemu pˇr´ıkladu tuto myˇslenku rozb´ıj´ı. Znaˇcky b a i, kter´e slouˇz´ı v kontextu pouze ˚ jako form´atovac´ı prvky, vytv´arˇ´ı v puvodn´ ı definici XML dodateˇcnou strukturu. Jak je patrn´e, v tomto pˇr´ıkladu nejsou znaˇcky b a i znaˇckami ve smyslu struktury ˚ ze m´ıt neˇza´ douc´ı vliv na choXML, ale jsou souˇca´ st´ı obsahu znaˇcky popis. A pr´avˇe to muˇ v´an´ı aplikace, pokud analyz´ator nebude o definovan´e struktuˇre dostateˇcnˇe informov´an (napˇr. XML sch´ematem). Nav´ıc, dan´e XML je v tuto chv´ıli velmi citliv´e na zpracov´an´ı form´atov´an´ı, neboli white-spaces..

(14) 10. 2.5.2. ´ ´ ı dokumentu (white-spaces) Analyza ´ formatov an´. ˚ zeme prozradit, zˇ e XMill6 ve vychoz´ S pˇredstihem muˇ ım nastaven´ı vyuˇz´ıv´a optimalizaci ´ ˇ komprese XML t´ım, zˇ e odstranuje form´atov´an´ı XML (white-spaces), kter´e pak vytv´arˇ´ı pˇri dekompresi programovˇe. Dalˇs´ı podrobnosti o n´astroji XMill jsou v sekci 4. XML podporuje celkem cˇ tyˇri druhy white-spaces7 : carriage-return (\r), line-feed (\n), ˚ ze zd´at, zˇ e tyto informace nenetab (\t) a spacebar (mezera) [29]. Na prvn´ı pohled se muˇ ˇ sou obsahovou informaci, proto pr´avˇe zminovan y´ XMill ve vychoz´ ım nastaven´ı white´ spaces ignoruje a bˇehem dekomprese je rekonstruuje programovˇe [38]. Pokud se ale pod´ıv´ame na n´ami uv´adˇeny´ pˇr´ıklad, bude m´ıt pouˇzit´ı t´eto optimalizace vliv na obsah dat, protoˇze pˇri prov´adˇen´ı dekomprese nebudou white-spaces rekonstruov´ana korektnˇe. V pˇr´ıkladu se za koncovou znaˇckou </b> (mezi slovy p´ısmo a ale) nach´az´ı mezera a pˇri aktivn´ı optimalizaci by se bˇehem komprese jako white-space symbol ignorovala. T´ım by doˇslo ke ztr´atˇe informace, protoˇze pˇri programov´e rekonstrukci form´atov´an´ı XMill nikdy ned´av´a za znaˇcku mezeru, maxim´alnˇe odsazuje n´asleduj´ıc´ı obsah na dalˇs´ı rˇ a´ dek. Bˇehem naˇsich experimentu˚ jsme proto vˇzdy tento druh optimalizace potlaˇcili a to i ˚ u kterych u souboru, ´ to vzhledem k jejich obsahu nebylo nutn´e. Toto opatˇren´ı n´am tak´e ˚ zajistilo, zˇ e se po dekompresi soubory zcela shodovaly s puvodn´ ımi origin´aly. Jedinou nevyhodou je to, zˇ e se spolu s komprimovanymi ´ ´ daty mus´ı ukl´adat i vlastn´ı form´atov´an´ı, coˇz m´ırnˇe zhorˇsuje vysledek komprese. ´ 2.5.3. Analyza ´ XML v kontextu komprese XML. Pˇri experimentech s n´astrojem XMill a n´aslednˇe i bˇehem vyvoje vlastn´ıho n´astroje SXMill ´ ˚ zitym jsme doˇsli k z´avˇeru, zˇ e duleˇ ´ bodem komprese XML je analyza ´ vstupn´ıch XML dat. ˚ zit´e je Na uvedenych pˇr´ıkladech z pˇredchoz´ı kapitoly jsme se snaˇzili uk´azat, jak duleˇ ´ spr´avnˇe vyhodnotit strukturu dokumentu a identifikovat v n´ı data. Nespr´avn´e rozliˇsen´ı ˚ ze m´ıt neˇza´ douc´ı vliv na efektivitu komprese, protoˇze bude tˇechto dvou elementu˚ muˇ ˇ ˚ ze v´est doch´azet k nespr´avn´emu odvozen´ı s´emantickych a analyza ´ vazeb. Spatn´ ´ ale muˇ ˇ aˇz ke ztr´atˇe dat. Vylepˇsen´ı analyz´atoru XML, ktery´ by uveden´e skuteˇcnosti zohlednoval, je proto t´ematem dalˇs´ıho vyvoje. ´ V praktick´e cˇ a´ sti t´eto diplomov´e pr´ace jsme se pˇresvˇedˇcili o tom, zˇ e typickym ´ pˇredsta˚ u nichˇz je tˇreba specifickym ˚ vitelem kategorie XML souboru, analyzovat struk´ zpusobem turu XML, je soubor wiki.xml. Podrobnosti jsou k dispozici v kapitole 6, kter´a se vˇenuje testov´an´ı.. 6 7. XMill je specializovany´ XML-aware kompresor. B´ıl´a m´ısta..

(15) 11. 3. Komprese XML. XML je ze sv´e podstaty velmi vyˇ ´ reˇcnym ´ form´atem. Veˇsker´e informace jsou v XML uloˇzeny v textov´e podobˇe (samotn´e texty ale i cˇ ´ıseln´e hodnoty, vyˇ ´ ctov´e typy a dalˇs´ı specifick´e informace, kter´e se do textov´e podoby pˇrev´adˇej´ı serializac´ı dat). Nav´ıc u kaˇzd´e poloˇzky se neust´ale opakuje jej´ı s´emantick´a definice, tedy jej´ı znaˇcka. Ta urˇcuje vyznam obsahu, ´ ktery´ je v n´ı uzavˇren. Napˇr´ıklad pokud je v XML uloˇzeno nˇekolik poloˇzek obsahuj´ıc´ıch informaci o autorech knihy, napˇr´ıklad pomoc´ı znaˇcky <autor></autor>, bude se neust´ale tato dvojice znaˇcek opakovat u kaˇzd´eho jednotliv´eho jm´ena autora. A t´ım velice rychle roste objem dat v XML souboru. Zm´ınˇen´e vlastnosti XML mohou pˇredstavovat probl´em pˇri pr´aci s rozs´ahlymi XML ´ ˚ ze pˇredstavovat z´atˇezˇ pro vypoˇ soubory. Jednak je nutn´e XML data analyzovat, coˇz muˇ ´ cet˚ ze byt n´ı vykon syst´emu, ktery´ s XML pracuje. Probl´emem muˇ ´ ´ tak´e velk´e mnoˇzstv´ı dat, kter´e je nutn´e archivovat na disku nebo jin´em m´ediu, cˇ i pˇren´asˇ et po s´ıti nebo pomalych ´ ˇ ˚ ze rˇ eˇsit pr´avˇe komprese XML. WAN8 link´ach. A oba zminovan´ e nedostatky muˇ. 3.1. Principy komprese. ˚ kter´e lze pouˇz´ıt ke kompresi XML dat. Obecnˇe je moˇzn´e Existuje cel´a rˇ ada algoritmu, vˇsechny rozdˇelit do dvou skupin: • XML komprese bez podpory dotazov´an´ı • XML komprese s podporu dotazov´an´ı Algoritmy prvn´ı kategorie se zamˇerˇ uj´ı na zmenˇsen´ı velikosti XML dat s t´ım, zˇ e pokud s komprimovanymi daty potˇrebujeme pozdˇeji pracovat, mus´ıme je nejdˇr´ıve dekompri´ movat jako celek, zpracovat a posl´eze jako celek znovu komprimovat. V t´eto diplomov´e ˚ Tyto algoritmy lze d´ale pr´aci se zamˇerˇ ujeme pˇredevˇs´ım na tuto kategorii algoritmu. rozdˇelit na dalˇs´ı dvˇe podskupiny: • Komprese XML jako textu (bˇezˇ n´a komprese) • Komprese XML s vyuˇzit´ım s´emantickych ´ informac´ı (XML-aware komprese) Na kompresi XML jako textu se vyuˇz´ıvaj´ı bˇezˇ n´e kompresn´ı n´astroje, kter´e v praxi ˚ Vzhledem k tomu, zˇ e XML data slouˇz´ı ke kompresi i jinych, nejen textovych ´ ´ souboru. jsou v podstatˇe text, dosahuj´ı nejlepˇs´ıch vysledk u˚ programy implementuj´ıc´ı metody spe´ cializuj´ıc´ı se na kompresi textu. Pˇredstaviteli t´eto kategorie komprese XML jsou napˇr´ıklad programy GZip, BZip29 cˇ i 7-zip, ale existuj´ı i mnoh´e dalˇs´ı. My si d´ale v n´asleduj´ıc´ım textu ˚ ymi pop´ısˇ eme nejˇcastˇejˇs´ı metody komprese, kter´e se napˇr´ıcˇ ruzn programy pouˇz´ıvaj´ı. ´ XML-aware kompresory obecnˇe vyuˇz´ıvaj´ı s´emantiku dostupnou v XML datech (pracuj´ı se strukturou XML), ale ve sv´em j´adru st´ale zamˇestn´avaj´ı klasick´e kompresn´ı algoritmy. Fin´aln´ı komprese tedy prob´ıh´a napˇr´ıklad algoritmem Deflate cˇ i BZip2 [14]. Od 8 9. Wide-Area-Network, rozs´ahl´e s´ıtˇe. ˚ kter´e vyuˇz´ıvaj´ı kompresn´ı algoritmy Deflate, resp. BZip2. GZip, resp. BZip2 jsou n´azvy programu,.

(16) 12. ˚ komprese XML jako textu se odliˇsuj´ı pˇredevˇs´ım t´ım, zˇ e se snaˇz´ı specifickym ´ zpusobem ˚ neˇz pˇripravit XML data tak, aby komprese bˇezˇ nymi algoritmy dos´ahla lepˇs´ıch vysledk u, ´ ´ jakych se dosahuje pˇri kompresi XML jako textu. Vyuˇz´ıv´a se pˇritom znalost principu˚ ´ ˚ komprese danych ´ kompresn´ıch algoritmu. XML-aware kompresory s podporou dotazov´an´ı pak zachov´avaj´ı u komprimovanych ´ ˚ dat moˇznost dotazov´an´ı. Dotazov´an´ı m´ıv´a ruznou podporu — liˇs´ı se rozsah podporovanych ´ dotazu˚ i to, zda je moˇzn´e data pouze cˇ ´ıst nebo i mˇenit. Tyto algoritmy ve srovn´an´ı s doposud popsanymi algoritmy dosahuj´ı obvykle horˇs´ıch pomˇeru˚ komprese. Nicm´enˇe ´ vedle sn´ızˇ en´ı datov´e n´aroˇcnosti mohou odlehˇcit i vypoˇ potˇrebn´emu ke ´ cetn´ımu vykonu ´ ˚ ze byt zpracov´an´ı XML dat — vzhledem k nutnosti zpracovat menˇs´ı mnoˇzstv´ı dat muˇ ´ zpracov´an´ı komprimovanych ´ dat paradoxnˇe m´enˇe n´aroˇcn´e a to i s pˇrihl´ednut´ım na vypo´ cˇ etn´ı vykon, ktery´ je vyˇzadovany´ k dekompresi cˇ a´ st´ı XML dokumentu. ´. 3.2. Komprese XML jako textu. Pˇri kompresi XML jako textu se soubor komprimuje jako celek bez ohledu na vnitˇrn´ı strukturu. Na soubor se pohl´ızˇ ´ı jako na bˇezˇ ny´ soubor, nicm´enˇe vzhledem k tomu, zˇ e se ´ esˇ nˇe aplikovat algoritmy specializuj´ıc´ı se na komjedn´a o textovy´ soubor, lze na nˇej uspˇ ˚ presi textu. Vyhoda toho zpusobu komprese je pˇredevˇs´ım v jednoduchosti jeho nasazen´ı, ´ ˚ kter´e se zamˇerˇ uj´ı na kompresi dat, existuje cel´a rˇ ada. Modern´ı algoprotoˇze programu, ritmy komprese textu jsou nav´ıc velmi efektivn´ı (jak ukazuj´ı napˇr´ıklad vysledky naˇsich ´ experimentu˚ v kapitole 6). 3.2.1. Deflate (gzip). Deflate je bezeztr´atov´a metoda, kter´a kombinuje kompresi pomoc´ı LZ77 a Huffmanovo k´odov´an´ı [10]. Jedn´a se o velmi popul´arn´ı metodu komprese dat, coˇz napˇr´ıklad dokazuje fakt, zˇ e jej´ı podpora je implementov´ana ve vˇetˇsinˇe modern´ıch vyvojov ych ´ ´ prostˇred´ıch nebo operaˇcn´ıch syst´emech. Metodu Deflate vyuˇz´ıv´a zn´amy´ program a form´at ZIP, to je mimo jin´e tak´e obecnˇe zaˇzity´ pojem vyjadˇruj´ıc´ı kompresi dat10 nejen u laick´e veˇrejnosti. Deflate je pomˇernˇe rychly´ algoritmus, coˇz se tyk´ ´ a jak komprese, tak i pˇredevˇs´ım dekomprese. Jeho nespornou vyhodou je i to, zˇ e nen´ı pamˇet’ovˇe pˇr´ıliˇs n´aroˇcny. ´ ´ Proud dat komprimovany´ metodou Deflate je tvoˇren nˇekolika bloky, kde kaˇzdy´ blok ˚ ze byt ˚ muˇ u˚ [10]: ´ uloˇzen jedn´ım z n´asleduj´ıc´ıch zpusob ´ • Blok uloˇzeny´ bez kodov´ an´ı / komprese (hrub´a data) ´ • Blok kodovan y´ pomoc´ı pˇredem dohodnut´eho Huffmanova stromu ´ • Blok kodovan y´ pomoc´ı Huffmanova stromu, ktery´ je souˇca´ st´ı bloku Samotn´a komprese metodou Deflate prob´ıh´a dvouf´azovˇe: 1. Pomoc´ı LZ77 jsou odstranˇeny opakuj´ıc´ı se rˇ etˇezce 10. Slangovˇe se cˇ asto pouˇz´ıv´a term´ın zazipovat soubor“ ”.

(17) 13. ´ ´ 2. Vystup (1.) je kodov´ an pomoc´ı Huffmanova kodov´ an´ı ´ Huffmanovo kodov´ ´ an´ı [11] patˇr´ı do skupiny statistick´ych kompresn´ıch algoritmu. ˚ Statistick´e metody pracuj´ı s cˇ etnost´ı jednotlivych ´ znaku˚ (nebo jejich skupin) ve vstupn´ım sou˚ s vyˇssˇ´ı cˇ etnost´ı jsou pˇriˇrazov´any kratˇs´ı kody ´ (m´enˇe bitu, ˚ napˇr. nejˇcastˇeboru dat. Znakum ˚ ze byt ´ ˚ s m´enˇe cˇ astym ji se vyskytuj´ıc´ı znak muˇ an pouze jedn´ım bitem) a znakum ´ kodov´ ´ ´ vyskytem jsou pˇriˇrazov´any kody delˇs´ı. ´ Existuj´ı dvˇe varianty tohoto algoritmu. Statick´a varianta prov´ad´ı kompresi ve dvou ˚ pˇri f´az´ıch — v prvn´ı f´azi je provedena statistika cˇ etnosti vyskytu jednotlivych znaku, ´ ´ ´ ´ kter´e je vytvoˇren strom kodov´ an´ı, ve druh´e f´azi doch´az´ı k samotn´emu zakodov´ an´ı vstupn´ıch dat s vyuˇzit´ım z´ıskan´e statistiky. Vyhodou t´eto metody je vytvoˇren´ı optim´aln´ı statis´ tiky pro cely´ vstupn´ı soubor, nevyhodou je pomal´e zpracov´an´ı, protoˇze jsou nutn´e dva ´ ˚ pruchody cel´eho vstupn´ıho souboru. Dalˇs´ı nevyhodou je nutnost uloˇzen´ı bin´arn´ıho stro´ mu spolu s komprimovanymi daty. Dynamick´a varianta vytv´arˇ´ı statistiku cˇ etnosti znaku˚ a ´ ´ ˚ samotn´e kodov´ an´ı bˇehem jedin´eho pruchodu. To plat´ı jak pˇri kompresi, tak i pˇri dekompresi. D´ıky tomu nen´ı nutn´e ukl´adat bin´arn´ı strom spolu s komprimovanymi daty. Z´aro´ venˇ je proces komprese rychlejˇs´ı, protoˇze nen´ı nutn´e vstupn´ı soubor proch´azet dvakr´at, ale na druhou stranu je nutn´e upravovat strom cˇ etnost´ı, coˇz samotny´ proces komprese ve srovn´an´ı se statickou variantou zpomaluje. Jelikoˇz m´a kompresor informace o cˇ etnosti ´ u˚ znaku˚ pouze u t´e cˇ a´ sti souboru dat, kterou doposud proˇsel, nemus´ı byt ´ pˇriˇrazen´ı kod ˚ ze doch´azet v r´amci cel´eho souboru k dosaˇzen´ı horˇs´ıho vysledku zcela optim´aln´ı, cˇ ´ımˇz muˇ ´ komprese. LZ77 [23], publikovany´ v roce 1977 Abrehamem Lempelem a Jacobem Zivem, je algo˚ Algoritmus vyuˇz´ıv´a tzv. ritmus patˇr´ıc´ı do skupiny slovn´ıkovych ´ kompresn´ıch algoritmu. posuvn´e okno — sliding window — kter´e obsahuje konec (typicky posledn´ıch nˇekolik kB) doposud pˇreˇctenych ´ dat ze zdrojov´eho souboru. Bˇehem komprese se algoritmus snaˇz´ı naj´ıt v oknˇe opakuj´ıc´ı se vyskyt cˇ a´ sti vstupn´ıch dat, d´ıky cˇ emuˇz by bylo moˇzn´e tento ´ ´ vyskyt zakodovat pouze jako ofset a d´elku v posuvn´em oknˇe. Pˇri dekompresi je nutn´e ´ ˚ posuvn´e okno udrˇzovat stejnym jak tomu bylo bˇehem f´aze komprese. ´ zpusobem, ˚ e varianty algoritmu, liˇs´ıc´ı se v z´avislosti na tom, jak koduj´ ´ Existuj´ı ruzn´ ı vystup. Jako ´ ˚ zeme uv´est varianty LZSS, LZH a LZB [2]. pˇr´ıklad muˇ 3.2.2. BZip2. BZip2 je svobodny, ´ bezeztr´atovy´ kompresn´ı algoritmus a tak´e program. Jeho autorem je Julian Seward, ktery´ prvn´ı verzi publikoval v roce 1996. Jedn´a se opˇet o pomˇernˇe rychly´ algoritmus, ktery´ ve srovn´an´ı s metodou Deflate dosahuje ve vˇetˇsinˇe pˇr´ıpadu˚ ´ cinnˇejˇs´ı algoritmus. Prvn´ı verze tohoto allepˇs´ıch vysledk u˚ a jedn´a se tak celkovˇe o uˇ ´ goritmu vyuˇz´ıvala aritmetick´e k´odov´an´ı, kter´e ale bylo z´ahy nahrazeno Huffmanovym ´ ´ kodov´ an´ım. Algoritmus komprimuje bloky dat o velikosti v rozmez´ı 100 aˇz 900kB (nastaviteln´e skokovˇe po 100kB). Kombinuje techniky BWT (Burrows-Wheeler Transform), MTF (Move-To-Front transform), Huffmanovo k´odov´an´ı a RLE (Run-Length Encoding) [26]. Burrows-Wheeler Transform [16] je transformace zn´am´a tak´e pod oznaˇcen´ım komprese blokov´ym tˇr´ıdˇen´ım. Tato transformace ve vstupn´ım souboru nemˇen´ı hodnotu zˇ a´ dn´eho.

(18) 14. symbolu, prov´ad´ı pouze permutaci jejich poˇrad´ı. Pokud vstupn´ı soubor obsahuje opakuj´ıc´ı se podˇretˇezce, budou po proveden´ı transformace ve vystupu m´ısta, na kterych se ´ ´ budou za sebou nach´azet stejn´e opakuj´ıc´ı se znaky. A to je pˇredpoklad, d´ıky kter´emu je moˇzn´e n´aslednˇe dos´ahnout lepˇs´ıho vysledku komprese. Transformace se prov´ad´ı setˇr´ıdˇe´ n´ım vˇsech rotac´ı textu v tabulce a jako vystup se pouˇzije posledn´ı sloupec dan´e tabulky. ´ ˇ ´ BWT transformace, inverzn´ı operaci pak zobrazuje Algoritmus 1 zn´azornuje pseudokod algoritmus 2. Algoritmus 1 Transformace BWT (string s) ´ dky jsou vˇsechny moˇzn´e rotace s 1: vytvoˇr tabulku, rˇ a ´ dky abecednˇe 2: setˇrid’ rˇ a 3: return posledn´ı sloupec tabulky. Algoritmus 2 Inverzn´ı BWT (string s) 1: vytvoˇr pr´ azdnou tabulku 2: for i = 1 to d´elka(s) do 3: vloˇz s jako sloupec tabulky pˇred prvn´ı sloupec tabulky 4: . (prvn´ım vloˇzen´ım se vytvoˇr´ı prvn´ı sloupec) ’ 5: setˇrid sloupce tabulky abecednˇe 6: end for ´ dek, u kter´eho sloupec konˇc´ı znakem EOF 7: return rˇ a Move-To-Front transform [4], cˇ esky pˇresunˇ na zaˇca´ tek, je metoda, kter´a pracuje na principu nahrazov´an´ı symbolu˚ vstupn´ı abecedy za jejich indexy do pole symbolu˚ a naopak. Jedn´a se o reverzibiln´ı transformaci, tzn. zˇ e existuje inverzn´ı operace, kterou je ˚ moˇzn´e data vr´atit do puvodn´ ı podoby. Proces transformace MTF je n´asleduj´ıc´ı — kaˇzd´a ´ hodnota vstupu je kodov´ ana pomoc´ı indexu, ktery´ odkazuje do pole. Toto pole se v ˚ ehu transformace neust´ale mˇen´ı. Tedy — v poli je nalezena odpov´ıdaj´ıc´ı hodnota prubˇ znaku na vstupu a index t´eto hodnoty je zaps´an na vystup. Na zaˇca´ tku je pole uspoˇra´ d´ano ´ ´ podle hodnot (napˇr´ıklad kodujeme-li jednobajtovˇe, pak 0, 1, . . . , 255), prvn´ı hodnota vs´ ´ tupu je tak vˇzdy zakodov´ ana vlastn´ı“ hodnotou. Po zakodov´ an´ı kaˇzd´eho znaku je v poli ” znak pˇresunut na zaˇca´ tek (odtud n´azev metody). Reverzn´ı MTF transformace prob´ıh´a tak, zˇ e se ve vychoz´ ım stavu opˇet zaˇc´ın´a s uspo´ ´ rˇ a´ danym an´ı prob´ıh´a postupnˇe tak, zˇ e ´ polem (napˇr. hodnoty 0, 1, . . . , 255). Dekodov´ ´ zakodovan´ a hodnota ze vstupu urˇcuje index v poli, kde je uloˇzena hodnota pro vystup. ´ ´ Po dekodov´ an´ı kaˇzd´eho znaku doch´az´ı k pˇresunut´ı tohoto znaku na zaˇca´ tek, stejnˇe jako ´ bˇehem procesu kodov´ an´ı. ´ MTF transformace je zobrazen na vypisu ´ inPseudokod algoritmus 3, pseudokod ´ verzn´ı operace MTF je pak zn´azornˇen na vypisu algoritmus 4. ´ RLE (Run-length encoding) pˇredstavuje jednoduchou formu bezeztr´atov´e kompre´ se. Koduje vstupn´ı data tak, zˇ e opakuj´ıc´ı se posloupnosti znaku˚ zapisuje jako dvojici.

(19) 15. Algoritmus 3 MTF (string s) ´ dan´e jednobajtov´e hodnoty (0..255)) 1: vytvoˇr pole p (obsahuj´ıc´ı uspoˇra 2: for all (char z in s) do 3: v poli p vyhledej index i znaku z 4: zapiˇs i na vystup v ´ 5: v poli p pˇresunˇ z na zaˇca´ tek 6: end for 7: return vystup v ´ Algoritmus 4 Invezn´ı MTF (int[] vstup) ´ dan´e jednobajtov´e hodnoty (0..255)) 1: vytvoˇr pole p (obsahuj´ıc´ı uspoˇra 2: for all (int i in vstup) do 3: na vystup v zapiˇs znak z v poli p um´ıstˇeny´ na pozici i ´ 4: v poli p pˇresunˇ znak z na zaˇca´ tek 5: end for 6: return vystup v ´. ´ <d´elka posloupnosti, znak>. Nevyhodou tohoto kodov´ an´ı je to, zˇ e vyskyt jednoho opa´ ´ ´ kov´an´ı znaku (jeden bajt) je nutn´e kodovat pomoc´ı dvojice <1, znak> (dva bajty) a t´ım ´ cinnost komprese proto z´avis´ı na charakteru vstup˚ doch´az´ı k neˇza´ douc´ımu n´arustu dat. Uˇ n´ıch dat. 3.2.3. LZMA. LZMA (Lempel-Ziv-Markov-Chain Algorithm) je vylepˇsen´a verze algoritmu Deflate, resp. ˚ vyuˇz´ıv´a vylepˇsenou verzi algoritmu LZ77. LZMA pouˇz´ıv´a stejnˇe jako puvodn´ ı LZ77 slovn´ık, ale narozd´ıl od nˇej podporuje jeho mnohem vˇetˇs´ı velikost (aˇz 4GB) a tuto velikost je moˇzn´e uˇzivatelsky nastavit. LZMA se skl´ad´a celkem ze tˇr´ı souˇca´ st´ı — vedle ´ vylepˇsen´eho LZ77 pak jeˇstˇe z kodov´ an´ı Markov-Chain a range kod´eru. Algoritmus dosahuje vˇetˇsinou lepˇs´ıch vysledk u˚ neˇz Deflate nebo BZip2, jedn´a se ale o pamˇet’ovˇe n´aroˇcnˇejˇs´ı al´ goritmus, coˇz plat´ı hlavnˇe pro kompresi. Komprese dat je tak´e vyraznˇ e pomalejˇs´ı, nicm´e´ nˇe dekomprese je extr´emnˇe rychl´a a pamˇet’ovˇe m´alo n´aroˇcn´a. LZMA je vychoz´ ı kom´ presn´ı metodou form´atu 7z programu 7-zip [25]. ´ Range kod´er, neboli k´odov´an´ı pomoc´ı intervalu, vyuˇz´ıv´a k zakodov´ an´ı vˇsech symbolu˚ ´ zpr´avy pouze jedno cˇ ´ıslo — narozd´ıl napˇr´ıklad od Huffmanova kodov´ an´ı, kter´e kaˇzd´emu ˚ co nejsymbolu pˇriˇrazuje urˇcitou bitovou reprezentaci (nejˇcastˇeji se opakuj´ıc´ım znakum ˚ a na vystup ´ m´enˇe bitu) pak ukl´ad´a postupnˇe za sebou odpov´ıdaj´ıc´ı kody. D´ıky t´eto ´ ˚ ze kodov´ ´ ˚ neˇz je horn´ı odliˇsnosti muˇ an´ı pomoc´ı intervalu dos´ahnout lepˇs´ıch vysledk u, ´ ´ ´ hranice jeden-bit-na-symbol u Huffmanova kodov´ an´ı [15]. Kodov´ an´ı pomoc´ı intervalu je ´ matematicky ekvivalentn´ı k aritmetick´emu kodov´ an´ı. Podrobnˇejˇs´ı informace o principu t´eto metody jsou dostupn´e napˇr´ıklad v [15]..

(20) 16. Markov-chain je matematick´a metoda pro statistick´e modelov´an´ı. Podrobnˇejˇs´ı informace jsou k dispozici napˇr´ıklad v [9]. 3.2.4. PPM (Prediction by Partial Matching). PPM [8] je adaptivn´ı, statistick´a metoda komprese dat, zaloˇzen´a na modelech kontextu a ˚ Od sv´eho vzniku, tedy od 90. let minul´eho stolet´ı, patˇr´ı PPM k pˇredpov´ıd´an´ı symbolu. ˚ komprese textu˚ v pˇrirozen´em jazyce. Jeho historie sah´a nejv´ıce efektivn´ım algoritmum jeˇstˇe d´ale, jeho dˇr´ıvˇejˇs´ımu rozˇs´ırˇ en´ı br´anil ale fakt, zˇ e je velmi n´aroˇcny´ na pamˇet’ov´e prostˇredky. Jedn´a se tak´e o cˇ asovˇe n´aroˇcnˇejˇs´ı metodu a to se tyk´ ´ a jak komprese, tak i dekomprese. Existuje nˇekolik variant t´eto metody, nˇekter´e z nich implementuj´ı napˇr´ıklad programy WinRAR nebo 7-zip. Metoda PPM je zaloˇzena na modelech [6, 8]. Kaˇzdy´ z modelu˚ si udrˇzuje statistiky ˚ Kaˇzdy´ model m´a doposud zhl´ednutych ´ symbolu˚ v kontextu pˇredch´azej´ıc´ıch symbolu. urˇceno, kolik symbolu˚ si bude takto udrˇzovat. Cel´a metoda PPM pak udrˇzuje nˇekolik ˚ y´ poˇcet symbolu˚ — od nula symbolu˚ aˇz po tˇechto modelu˚ a kaˇzdy´ z nich udrˇzuje ruzn maxim´aln´ı poˇcet n, kde hodnota n pˇredstavuje stupenˇ PPM a znaˇc´ı se typicky PPM(n). ˇ nejsou tedy nijak limitov´any Existuj´ı tak´e varianty, kter´e nemaj´ı pevnˇe stanoveny´ stupen, d´elkou kontextu, ty se oznaˇcuj´ı PPM*. Modely slouˇz´ı k vypoˇ ´ ctu pˇredpovˇed´ı toho, s jakou pravdˇepodobnost´ı se budou vyskytovat n´asleduj´ıc´ı symboly. Vypoˇcten´a pravdˇepodob´ nost se pak pouˇz´ıv´a k zakodov´ an´ı dan´eho symbolu pomoc´ı aritmetick´eho k´odov´an´ı. Po zpracov´an´ı kaˇzd´eho symbolu se model uprav´ı tak, aby zachytil pr´avˇe zpracovany´ symbol. Pˇredpovˇed’ pravdˇepodobnosti pracuje n´asledovnˇe. Pokud je symbol nalezen v nejdelˇs´ım kontextu, je pravdˇepodobnost urˇcena jako relativn´ı cˇ etnost symbolu v dan´em kontextu. Pokud nen´ı v tomto kontextu symbol nalezen, pouˇzije se dalˇs´ı nejdelˇs´ı kontext. Pˇrechod na jiny´ kontext je indikov´an z´apisem tzv. escape-znaku [6]. Tento proces se opakuje do t´e doby, dokud nen´ı nalezena shoda, nebo dokud nen´ı k dispozici zˇ a´ dny´ dalˇs´ı kontext. V pˇr´ıpadˇe, zˇ e jiˇz nelze pravdˇepodobnost urˇcit z zˇ a´ dn´eho modelu, doch´az´ı k proveden´ı fixn´ı pˇredpovˇedi. ˚ e varianty PPM se liˇs´ı v tom, jak rˇ eˇs´ı problematiku urˇcen´ı pravdˇepodobnosti Ruzn´ ˚ Nˇekter´e varianty tˇemto symbolum ˚ pˇriˇrazuj´ı konstantnˇe doposud nezn´amych ´ symbolu. hodnotu 1. Varianta PPMd, kterou jsme vyuˇzili prakticky pˇri implementaci algoritmu˚ komprese XML, navyˇsuje hodnotu pro kaˇzdy´ doposud neshl´ednuty´ symbol o jedna a pravdˇepodobnost vyskytu tohoto symbolu je pak vypoˇctena jako pomˇer jedineˇcnych ´ ´ ˚ symbolu˚ k celkov´emu poˇctu doposud shl´ednutych ´ symbolu.. 3.3. XML-Aware komprese. Metody komprese, kter´e se pˇr´ımo zamˇerˇ uj´ı na XML, vyuˇz´ıvaj´ı s´emantick´e informace uloˇzen´e v XML datech. Tyto informace jsou v XML pˇr´ıtomny v podobˇe znaˇcek — ty d´avaj´ı s´emanticky´ vyznam obsahu, ktery´ je v nich uzavˇren. Z´akladn´ı myˇslenka vˇetˇsiny tˇechto ´ kompresoru˚ je pˇripravit data XML souboru pro bˇezˇ n´e kompresn´ı algoritmy tak, aby se vyuˇzit´ım vlastnost´ı tˇechto algoritmu˚ dos´ahlo efektivnˇejˇs´ı komprese [1, 6, 14]. Existuj´ı.

(21) 17. i algoritmy, kter´e se specializuj´ı na kompresi struktury XML, pˇriˇcemˇz vyuˇz´ıvaj´ı sch´emat XML (napˇr´ıklad DTD), nicm´enˇe i ty prov´ad´ı fin´aln´ı kompresi bˇezˇ nymi algoritmy [13]. ´ XML-aware algoritmy lze rozdˇelit do dvou z´akladn´ıch skupin — algoritmy s podporou dotazov´an´ı a algoritmy bez podpory dotazov´an´ı.. 3.4. ´ ı Komprese XML s podporou dotazovan´. Komprese s podporou dotazov´an´ı komprimuje vstupn´ı XML data a pˇri tom ponech´av´a moˇznost d´ale s daty pracovat i v komprimovan´e podobˇe. Motivace k pouˇzit´ı toho ˚ principu komprese XML nemus´ı byt zmenˇsen´ı datov´e n´aroˇcnosti se za´ cˇ istˇe z duvodu chov´an´ım dotazov´an´ı. Pr´ace s komprimovanymi daty a dekomprese pouze vybranych ´ ´ ˚ ze byt cˇ a´ st´ı XML muˇ stejn´eho XML v nekompri´ cˇ asovˇe m´enˇe n´aroˇcnˇejˇs´ı, neˇz analyza ´ movan´e podobˇe. Typickymi pˇredstaviteli t´eto kategorie jsou metody XGrind, XPRESS a ´ XQzip. 3.4.1. XGrind. ˚ ktery´ se zaˇcal zabyvat XGrind je dle dostupnych ´ materi´alu˚ jedn´ım z prvn´ıch n´astroju, ´ problematikou komprese XML s podporou dotazov´an´ı. Podrobnˇejˇs´ı informace jsou k dispozici v [21]. ´ ´ XGrind oddˇeluje strukturu od dat a strukturu koduje slovn´ıkovym an´ım. U nˇej ´ kodov´ ´ koduje kaˇzdou znaˇcku jako T (tag) a atribut jako A n´asledovan´e jedineˇcnym ´ identifik´atorem. Pomoc´ı tohoto identifik´atoru se pak odkazuje do slovn´ıku, ktery´ obsahuje ˚ ´ ´ puvodn´ ı upln y´ z´apis znaˇcky nebo n´azvu atributu. Koncov´e znaˇcky se pak koduj´ ı speci´aln´ım znakem, XGrind pouˇz´ıv´a konkr´etnˇe symbol /. Pˇri dekompresi je koncov´a znaˇcka vˇzdy odvozena z kontextu11 , nen´ı tedy nutn´e pro konkr´etn´ı koncov´e znaˇcky vytv´arˇ et z´aznamy ve slovn´ıku. ´ Kodov´ an´ı struktury je homomorfn´ı, to znamen´a, zˇ e komprimovany´ soubor je tak´e strukturovany. n´astroji, jak´e ´ T´ım p´adem je moˇzn´e prohl´ızˇ et jej a zpracov´avat stejnymi ´ se pouˇz´ıvaj´ı pro pr´aci s XML v bˇezˇ n´e formˇe [21]. Tento pˇr´ıstup m´a nˇekolik vyhod: ´ ´ • Upravy dokumentu lze prov´adˇet pˇr´ımo v komprimovan´e verzi. • Lze vyuˇz´ıt osvˇedˇcen´e techniky vyvinut´e pro pr´aci s XML (analyza ´ cˇ i dotazov´an´ı). ˚ ci komprimovan´e verzi sch´e• Komprimovanou verzi XML dat je moˇzn´e ovˇerˇ it vuˇ matu XML dokumentu. XGrind pracuje specificky s vyˇ ´ ctovymi ´ typy. K jejich identifikaci vyuˇz´ıv´a DTD sch´ema ´ ´ a koduje je pomoc´ı log2 K kodov´ an´ı, kde K je celkovy´ poˇcet hodnot dan´e dom´eny vyˇ ´ ctov´eho typu [21]. Data XGrind komprimuje pomoc´ı bezkontextov´e komprese12 . Bezkontextov´a komˇ prese umoˇznuje lokalizovat rˇ etˇezce pˇr´ımo v komprimovanych datech bez nutnosti je ´ 11. ˇ Vzpomenme, zˇ e well-formed XML dokumenty nedovoluj´ı pˇrekˇr´ızˇ en´ı znaˇcek. ´ ˚ tak, zˇ e tyto kody ´ Bezkontextov´a komprese pˇriˇrazuje kody jednotlivym nejsou z´avisl´e na ´ rˇ etˇezcum aktu´aln´ı pozici dan´eho rˇ etˇezce ve zdrojov´em souboru dat. 12.

(22) 18. ˚ pˇri jejich hled´an´ı dekomprimovat. Toho se dosahuje jednoduchym protoˇze ´ zpusobem, hledany´ rˇ etˇezec je nejdˇr´ıve komprimov´an stejnou metodou, jak´a se pouˇzila pˇri kompresi vstupn´ıho souboru. Takto komprimovany´ rˇ etˇezec se pak pˇr´ımo hled´a v komprimovanych ´ datech. ´ Proto XGrind vyuˇz´ıv´a konkr´etnˇe neadaptivn´ı Huffmanovo kodov´ an´ı. Kontextov´e13 algoritmy, jako napˇr´ıklad LZ77, nejsou pro pouˇzit´ı v t´eto situaci vhodn´e. Pokud by se ˚ pouˇzila kontextov´a komprese, doˇslo by k n´arustu reˇzie nutn´e k dekompresi kaˇzd´eho rˇ etˇezce pˇred jeho porovn´an´ım s hledanou hodnotou a pˇred proveden´ım samotn´e dekomprese by musela aplikace vyhodnotit pozici rˇ etˇezce v souboru a podle toho urˇcit pˇr´ısluˇsn´e ´ kodov´ an´ı. ´ Pro zvyˇ an´ı rozd´ıln´e tabulky roz´ sen´ı efektivity komprese pouˇz´ıv´a XGrind pˇri kodov´ loˇzen´ı cˇ etnosti znaku˚ a to zvl´asˇ t’ pro jednotliv´e prvky a pro nevyˇ ´ ctov´e atributy. T´ım ˇ zohlednuje s´emantiku dat, protoˇze jak jiˇz bylo nˇekolikr´at zm´ınˇeno, data uloˇzen´a ve stejn´e struktuˇre byvaj´ ´ ı s´emanticky pˇr´ıbuzn´a. Architektura XGrind podporuje dotazov´an´ı v komprimovanych ´ datech v z´avislosti na typu dotazu. Dotazy na pˇresnou shodu, pˇri kterych se hled´a znaˇcka nebo atribut ´ pˇresnˇe se shoduj´ıc´ı s hledanym a dotazy na shodu prefixu, pˇri kterych ´ vyrazem ´ ´ se hled´a prefix znaˇcky odpov´ıdaj´ıc´ı hledan´e hodnotˇe. V obou pˇr´ıpadech XGrind komprimuje cestu dotazu a predik´at dotazu stejnou metodou, jakou pouˇzil pˇri kompresi dat. D´ıky tomu, zˇ e ´ se v obou pˇr´ıpadech vyuˇz´ıv´a bezkontextov´a komprese, odpov´ıdaj´ı kodovan´ e hodnoty dotazu pˇresnˇe hodnot´am v komprimovanych ´ datech. XGrind vyuˇz´ıv´a bajtov´e zarovn´an´ı ´ ˚ coˇz je mnohem rychlejˇs´ı (nikoliv bitov´e), tzn. porovn´av´an´ı prob´ıh´a vˇzdy na urovni bajtu, neˇz pˇri operac´ıch s jednotlivymi bity, nicm´enˇe nen´ı tak efektivn´ı. Teprve aˇz po nalezen´ı ´ poˇzadovan´eho prvku doch´az´ı k jeho dekompresi. U dotazu˚ na cˇ a´ steˇcnou shodu a rozsah ˚ komprimuje XGrind pouze cestu dotazu. Pˇri postupn´em pruchodu komprimovanych ´ dat pak vyhled´av´a vˇsechny shody hledan´e cesty a teprve u odpov´ıdaj´ıc´ıch prov´ad´ı dekompresi hodnot a vyhodnocen´ı dotazu. Tento typ dotazu je tedy n´aroˇcnˇejˇs´ı na vyhodnocen´ı. ˚ Dany´ zpusob dotazov´an´ı nen´ı zcela optim´aln´ı, jeho nedostatky jsou nast´ınˇeny v kapitole 3.4.3. 3.4.2. XPRESS. XPRESS je dalˇs´ım n´astrojem pro kompresi XML z rodiny algoritmu˚ podporuj´ıc´ıch dotazov´an´ı. Pˇri jeho n´avrhu vych´azeli autoˇri pˇredevˇs´ım z vlastnost´ı n´astroje XGrind. XPRESS pˇredstavil nov´e, efektivnˇejˇs´ı metody komprese XML a optimalizoval principy dotazov´an´ı v komprimovanych ´ datech [18]. ´ XPRESS vyuˇz´ıv´a automatick´e odvozen´ı datovych ´ typu˚ a prov´ad´ı jejich efektivn´ı koˇ dov´an´ı. Autoˇri se inspirovali XML-aware kompresorem XMill, ktery´ tak´e umoˇznuje efek´ tivnˇe kodovat specifick´e datov´e typy (cel´a cˇ ´ısla atp.), nicm´enˇe XPRESS narozd´ıl od XMill prov´ad´ı jejich automatickou detekci bez nutnosti uˇzivatelsk´eho z´asahu. Podporuje celkem sˇ est s´emantick´ych kompresoru, ˚ jejichˇz pˇrehled zobrazuje tabulka 1. S´emantick´e kom13. ´ Pˇri kontextov´e kompresi jsou generovan´e kody z´avisl´e na pozici symbolu ve vstupn´ıch datech..

(23) 19. presory u8, u16, u32 a f32 jsou rozd´ılov´e kod´ery cˇ ´ıselnych ´ hodnot a kompresory dict8 a ´ huff jsou urˇcen´e pro kodov´ an´ı textu. kod ´ u8 u16 u32 f32 dict8 huff. popis kompresoru ´ kodov´ an´ı celych ´ cˇ ´ısel, kde max − min < 27 ´ kodov´ an´ı celych ´ cˇ ´ısel, kde 27 + 1 < max − min < 215 ´ kodov´ an´ı celych ´ cˇ ´ısel, kde 215 + 1 < max − min < 231 ´ kodov´ an´ı cˇ ´ısel s desetinnou cˇ a´ rkou ´ kodov´ an´ı vyˇ ´ ctovych ´ dat ´ Huffmanovo kodov´ an´ı textovych ´ dat. Tabulka 1: Pˇrehled s´emantickych ´ kompresoru˚ n´astroje XPRESS ´ XPRESS komprimuje data bezkontextovˇe — kodov´ an´ı prob´ıh´a bez z´avislosti na jeˇ jich pozici v souboru. To opˇet umoˇznuje prov´adˇet dotazov´an´ı pˇr´ımo v komprimovanych ´ datech. Vystup je, stejnˇe jako u XGrind, homomorfn´ı [18]. ´ ˚ XPRESS oddˇeluje strukturu od dat. Oproti ostatn´ım algoritmum, popsanych ´ v tomto ´ ´ textu, ale zcela jinak pˇristupuje k jej´ımu kodov´ an´ı. XPRESS nevyuˇz´ıv´a slovn´ıkov´e kodov´an´ı, ale reverzn´ı aritmetick´e k´odov´an´ı. Pˇri nˇem pˇriˇrazuje kaˇzd´e cestˇe, nebo jej´ı podmnoˇzinˇe, ´ jednoznaˇcny´ interval v rozmez´ı <0.0, 1.0). Reverzn´ı aritmetick´e kodov´ an´ı rozdˇeluje cely´ ˚ Kaˇzd´emu subinterval na subintervaly a jednotliv´e subintervaly jsou pˇriˇrazeny prvkum. ´ ern´a cˇ etnosti intervalu je pˇriˇrazen pr´avˇe jeden prvek. Velikost kaˇzd´eho intervalu je umˇ ˚ Podrobnosti postupu vypoˇ prvku (v pomˇeru k celkov´e cˇ etnosti prvku). ´ ctu intervalu jsou k dispozici napˇr´ıklad v [18]. ˚ Procesor dotazu Vyhodnocen´ı cesty dotazu pak pˇredstavuje vyhodnocen´ı intervalu. pˇrevede cestu dotazu (posloupnost prvku˚ od koˇrene k aktu´aln´ımu prvku) na interval ˚ stejnym jakym ´ zpusobem, ´ to provedl u cest bˇehem komprese XML. Pot´e vyhled´a ty prvky, kter´e odpov´ıdaj´ı dan´e cestˇe podle toho, zda interval cesty dotazu leˇz´ı v intervalu ˚ kter´e odpov´ıdaj´ı hledan´e cesty prvku. Vyhodnocen´ı dotazu pak prob´ıh´a pouze u prvku, cestˇe. Tento postup je tedy efektivnˇejˇs´ı, neˇz v pˇr´ıpadˇe XGrind, ktery´ porovn´av´a kaˇzdou ˚ cestu. Nicm´enˇe ani tento zpusob nen´ı zcela optim´aln´ı, jak je pops´ano v n´asleduj´ıc´ı kapitole 3.4.3. 3.4.3. XQzip. Autoˇri XQzip si vˇsimli u kompresn´ıch algoritmu˚ XGrind a XPRESS nˇekolika nedostatku˚ a navrhli dalˇs´ı metodu komprese XML s podporou dotazov´an´ı. XQZip rˇ eˇs´ı efektivnˇejˇs´ım ´ kodov´ an´ım struktury jak samotnou kompresi, tak i efektivnˇejˇs´ı dotazov´an´ı. Pro zvyˇ ´ sen´ı efektivity tak´e pracuje s vyrovn´avac´ı pamˇet´ı, pomoc´ı kter´e zrychluje prov´adˇen´ı opakovanych ´ cˇ i podobnych ´ dotazu˚ [7]. Nejdˇr´ıve k problematickym ´ parti´ım XGrind a XPRESS. XGrind mus´ı pˇri vyhodno´ cen´ı dotazu proch´azet cely´ dokument a u kaˇzd´eho zakodovan´ eho prvku cˇ i atributu mus´ı porovn´avat jeho cestu s cestou dotazu. Pokud se cesty shoduj´ı, dotaz se vyhodnot´ı. Pˇri.

(24) 20. prov´adˇen´ı dotazu tak mus´ı proj´ıt cely´ soubor a porovn´avat jednotliv´e cesty. XPRESS rˇ eˇs´ı ´ ˇ tuto problematiku pomoc´ı reverzn´ıho aritmetick´eho kodov´ an´ı, kter´e odstranuje nutnost porovn´avat kaˇzdou cestu, protoˇze se s vyuˇzit´ım intervalu˚ vybere pouze odpov´ıdaj´ıc´ı podmnoˇzina cest. Nicm´enˇe i zde je nutn´e d´ale vyhodnotit cestu kaˇzd´eho prvku t´eto ˚ ze byt podmnoˇziny a tato podmnoˇzina muˇ ´ st´ale velmi obs´ahl´a (pˇredevˇs´ım u rozs´ahlych ´ ˚ u kterych XML dokumentu, ´ se cˇ asto opakuje stejn´a struktura). XGrind i XPRESS vytv´arˇ´ı ˇ homomorfn´ı vystup, ktery´ je stejnˇe strukturovany´ jako vstup, coˇz m´a pˇres zminovan´ e ´ vyhody i jednu nevyhodu — pokud se v dokumentu objevuje v´ıce dat um´ıstˇenych ´ ´ ´ ve ˚ stejn´e struktuˇre, doch´az´ı k n´arustu dat samotn´e struktury, protoˇze se uloˇzen´ı struktury nijak neoptimalizuje [7]. XQzip rˇ eˇs´ı oba uveden´e probl´emy zaveden´ım struktury SIT (Structure Index Tree), d´ıky kter´e doch´az´ı k odstranˇen´ı duplikovanych struktur. Pomoc´ı hashovac´ıch tabulek ´ ˚ t´eto struktury. XQzip dok´apak pˇriˇrazuje komprimovan´e bloky dat jednotlivym ´ prvkum ˚ zˇ e efektivnˇeji vyhodnocovat dotazy, protoˇze nemus´ı prohled´avat celou puvodn´ ı strukturu, ale pouze optimalizovanou v podobˇe SIT [7]. XQzip podporuje sˇ irˇs´ı sˇ k´alu XPath dotazu˚ [7], nab´ız´ı tak rozs´ahlejˇs´ı moˇznosti dotazovan´ı v komprimovanych ´ datech, neˇz jak je tomu u XGrind cˇ i XPRESS. Dalˇs´ı optimalizaˇcn´ı technikou, kterou XQzip vyuˇz´ıv´a, je buffer-pool, ktery´ v pamˇeti udrˇzuje posledn´ı dekomprimovan´e bloky dat, cˇ ´ımˇz se cˇ a´ steˇcnˇe ˇ odstranuje reˇzie potˇrebn´a pro opakovanou dekompresi dat u podobnych ´ cˇ i stejnych ´ dota˚ zu. Dalˇs´ı podrobnosti o XQzip jsou k dispozici napˇr´ıklad v [7].. 3.5. ´ ı Komprese XML bez podpory dotazovan´. Kategorie kompresn´ıch algoritmu˚ bez podpory dotazovan´ı zahrnuje ty algoritmy, kter´e komprimuj´ı XML data s vyuˇzit´ım s´emantickych ´ informac´ı (z´ıskanych ´ ze struktury XML). Pokud ale chceme s daty pracovat, mus´ıme je nejdˇr´ıve jako celek dekomprimovat, pak zpracovat a n´aslednˇe opˇet jako celek komprimovat. Do t´eto kategorie patˇr´ı napˇr´ıklad XMill, MHMPPM (XMLPPM), SCMPPM a Xml Structure Compression. Prvn´ı tˇri pˇredstavitel´e — XMill, XMLPPM a SCMPPM — pracuj´ı na stejn´em principu. Zpracov´avaj´ı a pˇripravuj´ı XML data tak, aby vyuˇzili co nejv´ıce vlastnost´ı kompresn´ıch ˚ kter´e pouˇz´ıvaj´ı k fin´aln´ı kompresi. Mezi ty patˇr´ı pˇredevˇs´ım GZip, BZip2 a algoritmu, PPM. Metoda Xml Structure Compression se nezabyv´ ´ a kompres´ı samotnych ´ dat, ale speciali´ zuje se na efektivn´ı kodov´ an´ı struktury. K tomu vyuˇz´ıv´a sch´emata XML, konkr´etnˇe DTD. 3.5.1. XMill. ˚ XMill [14] patˇr´ı mezi nejzn´amˇejˇs´ı pˇredstavitele t´eto kategorie kompresn´ıch algoritmu. Jako jeden z prvn´ıch pouˇzil myˇslenku komprimovat XML oddˇelen´ım struktury od dat a ´ data seskupit podle jejich s´emantick´e pˇr´ıbuznosti. Struktura se koduje pomoc´ı slovn´ıkov´eho ´ kodov´ an´ı, znaˇcky a n´azvy atributu˚ jsou tedy m´ısto neust´al´eho vypisov´an´ı nahrazeny ˚ ´ odkazy do slovn´ıku. Uˇz jen tento zpusob kodov´ an´ı zaruˇc´ı sn´ızˇ en´ı datov´e n´aroˇcnosti ´ kodovan ych dat. Data se ukl´adaj´ı oddˇelenˇe, seskupen´a podle s´emantick´eho vyznamu ´ ´.

References

Related documents

To capture CNVs within CDH candidate regions, we developed and tested a targeted array comparative genomic hybridization platform to identify CNVs within 140 regions in 196 patients

Looking to both feminist linguistic and social-science research, I argue that Pinterest exhibits a unique traffic in visual and verbal codes—an emerging online rhetoric that allows

Tobacco-attributable cancers are a cause of significant differences in life expectancy between males and females and contribute to male excess mortality rates in Poland.. Ac-

This slope is inconsistent with theories of spiral galaxy structure, which predict metal-rich inner regions and relatively metal-poor outer regions; the observed oxygen

In summary, our basic model suggests that the health share rises over time as income grows if the joy associated with living an extra year does not diminish as quickly as the

Campus Select classes will vary from .17-1.0 high school credits all depending on the amount of college credits earned for the course. If it is a 100 level course and above it will

The projects highlight the first two phases of the DBR framework, involving the exploration of mobile virtual reality (VR) to enhance the learning environment, and the design

事前テストと事後テストはそれぞれリーディング Part5 から Part7 に分かれており、TOEIC テストの出題形式と同じ形式で Part 5 短文穴埋め問題 13 問、Part 6 長文穴埋め問題 3