• Nem Talált Eredményt

XML kutatási irányok

N/A
N/A
Protected

Academic year: 2023

Ossza meg "XML kutatási irányok"

Copied!
68
0
0

Teljes szövegt

(1)

XML kutatási irányok

(2)

Információs Rendszerek Tanszéken folyó kutatások

• Kutató Egyetem pályázat

• 2 csoport (hálózatok, adatbázisok)

• Heti 2 szeminárium 2010 februártól kezdve

Lukovszki Tamás (hétfő 10-12, 2.519):

hálózati topológiák

Ács Zoltán

Agócs Ádám

Balaton Attila Laki Sándor

Benczúr András, Kiss Attila szakdolgozók

Kiss Attila (péntek 9-11, 2.519):

adatbázisok, XML, kockázatkezelés, projektütemezések matematikai modelljei

Kósa Balázs Nyitrai Erika Varga Balázs Menyhárt László Szabó Gyula Benczúr András

Rácz Gábor (szakdolgozó)

(3)

Hogy néz ki egy XML dokumentum?

Hogy néz ki egy XML dokumentum?

<course>

<name>CS 501</name>

<instructor>Ron Charles</instructor>

<students>

<student name=“Alice“>

<a1>78</a1>

<a2>86</a2>

<midterm>91</midterm>

<project>87</project>

</student>

<student name=“Bob“>

<a1>69</a1>

<a2>71</a2>

<midterm>82</midterm>

<finalexam>60</finalexam>

</student>

</students>

</course>

(4)

Az Az XML XML dokumtumfa dokumtumfa Path Expression:

/course

Textual Representation:

<course></course>

o1

o2

o5 o3

o4

o7

o6

o9 o8

o11

o10 o12 o14

o13 o15 o17

o16

o18

o26

o25 o27

o21

o24 o28

o22 o20

o19 o23

course

instructor

“Ron Charles”

name

“CS 501”

students

student student

@name

“Alice”

a1

a2 midterm

project

“78” “86” “91” “87”

@name

“Bob”

a1

a2 midterm

finalexam

“69” “71” “82”

Path Expression:

/course/name/text()

Textual Representation:

<course>

<name>CS 501</name>

</course>

“60”

Path Expression:

/course/name

Textual Representation:

<course>

<name></name>

</course>

(5)

Klasszikus feladatok XML-re

• A klasszikus relációs adatbázis-kezelési

technológiákat XML adatbázisokra is ki kell terjeszteni:

– hatékony tárolás (natív vagy relációs adatbázisban)

– hatékony lekérdezés, karbantartás (indexeket is) – jogosultságok kezelése

– tranzakció-kezelés

– adatbányászat

(6)

Hatékony XML lekérdezések indexelési technikákkal

1. Értékek indexelése

– az atomi értékeket (például: data(//emp/salary)) indexeljük

– általában B

+

-fákat használunk

2. Szöveges indexelés

– az XML dokumentumot közönséges szöveges állománynak tekintjük

– a kulcsszavak keresése invertált indexekkel segíthető

3. Strukturális címkézés (számozási sémák)

– az előd/utód reláció gyors eldöntésére szolgál

4. Strukturális indexek

– materializálja adott típusú ösvénykifejezések

(7)

A strukturális indexelési technikák

(8)

A struktúra tömörebb tárolása 1-indexszel

1 paper

2,4,8,13 section

3,5,9,14 title

6,10

algorithm

7 proof 11

proof 12

uses

15,16

17,18 about

exp 1

paper

4 section

5 title 6

algorithm

proof 7

8

section

9 title

10

11 proof 12 uses

algorithm

13 section 14

15

16

17

18 about

about title

2 section

3 title

exp

exp

/paper/section/algorithm

(9)

Oracle XMLIndex

• Az XMLIndex 3 komponensből áll

– Útvonalindex (path index) – Címkéző index (order index) – Értékindex (value index)

• Néhány eset, amikor nem használható:

– felhasználó által definiált XPath függvények

– child, descendant és attribute irányoktól eltérő irányok

– uniót ( | ) használó kifejezések

(10)

XMLIndex Path Table szerkezete

Column Data Type

PATHID RAW(8)

RID ROWID

ORDER_KEY RAW(1000)

LOCATOR RAW(2000)

VALUE VARCHAR2(4000)

• A Locator a töredék gyorsabb eléréséhez

szükséges mutató.

(11)

Az OrderKey (Dewey Order)

name

name child

person person

hobby hobby

1.1 1.2

1

1.2.1

1.2.1.1 1.2.1.2 1.2.1.3

(12)

XMLIndex Path Table szerkezete

<PurchaseOrder>

<Reference>SBELL-2002100912333601PDT</Reference>

<Actions>

<Action> <User>SVOLLMAN</User> </Action>

</Actions>

. . .

</PurchaseOrder>

<PurchaseOrder>

<Reference>ABEL-20021127121040897PST</Reference>

<Actions>

<Action> <User>ZLOTKEY</User> </Action>

<Action> <User>KING</User> </Action> </Actions>

. . .

</PurchaseOrder>

(13)

XMLIndex Path Table szerkezete

PATHID Indexed XPath

1 /PurchaseOrder

2 /PurchaseOrder/Reference 3 /PurchaseOrder/Actions

4 /PurchaseOrder/Actions/Action

5 /PurchaseOrder/Actions/Action/User

(14)

XMLIndex Path Table szerkezete

PATHID RID ORDER_KEY VALUE

1 R1 1 ——

2 R1 1.1

SBELL-2002100912333601PDT

3 R1 1.2 ——

4 R1 1.2.1 ——

5 R1 1.2.1.1 SVOLLMAN

6 R2 1 ——

7 R2 1.1

ABEL-20021127121040897PST

8 R2 1.2 ——

9 R2 1.2.1 ——

10 R2 1.2.1.1 ZLOTKEY 4 R2 1.2.2 ——

5 R2 1.2.2.1 KING

(15)

Néhány kutatási téma 2010-es XML konferenciák tükrében

XML Prague 2010, March 13th & 14th

XML Lifecycle (diffing, merging, change tracking, etc.)

Efficiency and performance in XML (verbosity, processing, overuse) Hypermedia in XML (SMIL, SVG animations)

Spatial data and XML (WGS84, microformats) XML all the time (XRX, XQuery web applications)

DBKDA 2010 April 11-16, 2010 - Menuires, France XML-driven data, knowledge, databases:

Data /dissemination, distributed, processing, management/;

XML-data /storage, exchange, compress, metadata/;

XML-data and metadata management;

XML repositories;

Knowledge discovery from XML repositories;

XML-data processing /queries, indexing, management, retrieval, mining/;

XML data and knowledge /representation, discovery, mining, orchestration/;

XML-data in advances environments /clouds, P2P, multimedia, mobile, finance, biotechnologies, geospatial, space/;

XML-data and process /data warehouse, workflow, web, learning, control/;

Balisage: The Markup Conference 2010 August 03-06, 2010 Montreal, Canada Xsd, XQuery, Xslt, Rdf, Sgml, Lmnl, Xsl Fo, Xtm, Svg, Math Ml, Owl, Tex

Mecs, Rng, Topic Maps, Document Modeling, Overlap, Ontologies, Xml, Ubl,

Metadata

(16)

Advanced Techniques on XML Data Management (XML-DM 2010)

July 15, 2010, Jiuzhai Valley, China

* XML data integration

* XML data storage and indexing

* XML query languages and optimization

* XML views and data publishing

* XML applications in semantic web

* XML data mining

* XML change management

* XML views and data mappings

* XML data compression

* XML in Web services

* XML benchmark and performance studies

* XML applications in new domains- sensor and biological data management

* XML in cloud computing

(17)

XML tömörítés - motiváció

• Egyre több XML adat keletkezik

– Struktúrák ismétlődnek (címkék, útvonalak…)

– Adatinfláció: az XML formában tárolt adatok mérete nagyobb, mint a nyers adatoké

– Tömörítés célja: tárméret csökkentése, adatátvitel gyorsítása (hely, idő)

• Használjunk általános tömörítő algoritmust (például gzip-et)?

– az XML adatok jellemző struktúráját elveszítjük,

– nem lehet lekérdezni.

(18)

Tömörítés adatbázis-kezelőkben

• Oracle:

– XOP - XML-binary Optimized Packaging

// Compress the Message Content CompressionAgent cagent = new

CompressionAgent("oracle:xml:compression");

byte [ ] input = cagent.compress(message);

• DB2:

– XML Inlining

create table mytab1 (a int, b char(5), c clob

inline length 1000);

(19)

Példa: Webszerver naplóállományok (Web Server Logs)

202.239.238.16|GET / HTTP/1.0|text/html|200|1997/10/01-00:00:02|-|4478|-|-|http://www.net.jp/|Mozilla/3.1[ja](I) 202.239.238.16|GET / HTTP/1.0|text/html|200|1997/10/01-00:00:02|-|4478|-|-|http://www.net.jp/|Mozilla/3.1[ja](I)

<apache:entry>

<apache:host> 202.239.238.16 </apache:host>

<apache:requestLine> GET / HTTP/1.0 </apache:requestLine>

<apache:contentType> text/html </apache:contentType>

<apache:statusCode> 200</apache:statusCode>

<apache:date> 1997/10/01-00:00:02</apache:date>

<apache:byteCount> 4478</apache:byteCount>

<apache:referer> http://www.net.jp/ </apache:referer>

<apache:userAgent> Mozilla/3.1$[$ja$]$(I)</apache:userAgent>

</apache:entry>

<apache:entry>

<apache:host> 202.239.238.16 </apache:host>

<apache:requestLine> GET / HTTP/1.0 </apache:requestLine>

<apache:contentType> text/html </apache:contentType>

<apache:statusCode> 200</apache:statusCode>

<apache:date> 1997/10/01-00:00:02</apache:date>

<apache:byteCount> 4478</apache:byteCount>

<apache:referer> http://www.net.jp/ </apache:referer>

<apache:userAgent> Mozilla/3.1$[$ja$]$(I)</apache:userAgent>

</apache:entry>

ASCII File 15.9 MB (gzipped 1.6MB):

XML formájú apache web log mérete 24.2 MB (gzipped 2.1MB):

(20)

XML-specifikus tömörítők

• Vannak nem lekérdezhető tömörítők (például XMill):

– Nagy darabokat tömörít.

– Nagyon jó tömörítési arány

• Lekérdezhető tömörítők (például XGrind, XPRESS):

– Kisebb szemcséket tömörít.

– Gyengébb tömörítési arány és tömörítési idő – Egyszerű ösvénykifejezésekkel lekérdezhető

(atomi predikátum is használható)

(21)

XML tömörítés fontosabb jellemzői

• Tömörítési arány, tömörítési idő, lekérdezhető-e, szükséges memória mérete, stb.

Néhány tömörítési algoritmus

(22)

Ötlet

• Az XML fa struktúrájú.

• Különítsük el a fa struktúrát és azokat az adatokat,

amiket a levelek tárolnak .

Kenyérfa (Hawaii)

(23)

XMill

• Ez volt az első XML tömörítő

– SAX parser használ XML elemzésére – gzip tömörítőt használ

– az adatokat tömörítés előtt konténerekbe csoportosítja

• Az XML tömörítéshez három technikát használ

– Az adatoktól leválasztott struktúrát külön tömöríti – Az adatokat típus szerint csoportosítja

(Elnevezés: szemantikus konténer).

– A típusnak megfelelő tömörítővel külön tömöríti az adatcsoportokat. (Elnevezés: szemantikus tömörítő használata).

• Letölthető:

– www.cs.washington.edu/homes/suciu/XMILL

(24)

XMill felépítése:

(25)

Hogy működik az Xmill?

<apache:entry>

<apache:host>

</apache:host>

. . .

</apache:entry>

<apache:entry>

<apache:host>

</apache:host>

. . .

</apache:entry>

202.239.238.16 GET / HTTP/1.0 text/html

200

202.239.238.16 GET / HTTP/1.0 text/html

200

gzip: struktúra gzip: adatok

=1.75MB

+

A struktúrát az adatoktól függetlenül tömörítjük:

(26)

Hogy működik az Xmill?

<apache:entry>

. . .

</apache:entry>

<apache:entry>

. . .

</apache:entry>

202.23.23.16 224.42.24.55

202.23.23.16 224.42.24.55

gzip: struktúra gzip: IP címek

=1.33MB

+ GET / HTTP/1.0

GET / HTTP/1.1

GET / HTTP/1.0 GET / HTTP/1.1

gzip: web műveletek

+

Típus szerint csoportosítjuk az adatokat.

Egyszerű feltétel: Azonos címke azonos típus.

Különböző címkék is jelenthetnek azonos típust:

<név>, <anyja neve>

A konténereket XPath kifejezésekkel a felhasználó is definiálhatja.

(Ez a lépés DataGuide XML indexszel gyorsítható.)

(27)

Hogy működik az Xmill?

gzip: struktúra + gzip: c1(adatok1) + gzip: c2(adatok2) + ... =0.82MB Speciális (szemantikus) tömörítőket alkalmazunk.

xmill -p //price=>i -p //state=>e file.xml

Például:

• egészek kódolása 8, 16, vagy 32 biten (i)

• növekmények tömörítése (di) :

például 1999, 1995, 2001, 2000, 1995, ... esetén

• listák, rekordok tömörítése: (e) például 104.32.23.1  4 bájt

• A felhasználó választhat a szemantikus tömörítők

közül.

(28)

A struktúra tömörítése

• Cseréljük az adatértéket a konténer (negatív) sorszámával.

• A zárócímkéket cseréljük le 0-ra.

• A címkéket/attribútumokat cseréljük le (pozitív) egészekre.

<Book><Title lang=“English”>Data Compression</Title>

<Author>Gray</Author>

<Author>Reiter</Author>

</Book>

<Book><Title lang=“English”>Data Compression</Title>

<Author>Gray</Author>

<Author>Reiter</Author>

</Book>

<Book><Title lang=-1>-2</Title>

<Author>-3</Author>

<Author>-3</Autor>

</Book>

<Book><Title lang=-1 0>-2 0 <Author>-3 0 <Author>-3 0 0 Book = 1, Title = 2, @lang = 3, Author = 4 1 2 3 -1 0 -2 0 4 -3 0 4 -3 0 0

Szótár nélkül 14 bájt

Szótár alapú tömörítés:

minden új szó egy új bejegyzés a szótárban

Ismétlődő részstruktúrák esetén nagyon jó tömörítés

érhető el.

(29)

Kísérleti eredmények (bit/bájt)

1. oszlop: gzip (ASCII) 2. oszlop: gzip (XML)

3. oszlop: XMILL (minden adat 1 konténerbe kerül) 4. oszlop: XMILL (minden címke 1 konténer)

5. oszlop: XMILL (a legjobb, amit más konténerre osztással el tudtak érni)

(30)

Lekérdezhető tömörítők

• XQzip: jellemzői:

• SIT indexet használ a lekérdezés kiértékeléséhez

Blokkat tömörít: a hasonló adatokat blokkokba teszi és a blokkokat tömöríti, ezáltal a

keresés+visszaállítás költségét javítja

(31)

Strukturális indexfa (SIT)

• A strukturális ismétlődéseket megszünteti.

• Két testvér csúcsot összevon, ha

– a gyökérből ugyanolyan úttal érhetők el – a leszármazottaikhoz tartozó útvonalak

rendezett listája megegyezik (dokumentum sorrend szerinti rendezésben).

• SIT index készítése:

– Az XML fájl egyszeri lineáris végigolvasása.

– Ha testvér gyökerű megegyező részfákat

találunk, akkor összevonjuk a részfákat.

(32)

/

d b

d a

b

d e

c c

e /

d a

b

d e

c

e

c

d

c b

d

SIT index készítése

0

1

2

3 4

5 6 7

8 9 10

0

1

2

3 4

5 ,6 6 7

8 9 10

,8,10 ,9 ,7

,10

(33)

XQzip működése

Input XML Document

SAX Parser

Compressor (gzip)

Index Constructor

b1 a1 a2 c1 ... bi aj ck

a c ... b a5 c7 ... b9

Parser

Executor

Buffer Manager SIT

Hashtable

Compressed blocks

Query Processor Query

Query Result

Buffer Pool XQzip Repository

• Indexelő : elkészíti a SIT indexet

• Tömörítő

– A szemantikusan összetartozó (például azonos címkéjű) értékeket blokkokba teszi, majd

– minden blokkot gzip-pel tömörít.

• Query Processor: lekérdezés feldolgozó

– Elemez

– Végrehajt: a SIT indexet használva értékeli ki a lekérdezést

– Pufferkezelés ( LRU algoritmussal)

(34)

SIT index készítésének költsége

N: az XML dokumentum elemeinek (címkék + attribútumok) száma

• Időbonyolultság:

– Legrosszabb eset: O(N │SIT │) – Átlagos eset: O(N)

• Tárbonyolultság:

– az összevonáshoz használt 2 részfa: ≤ 2│SIT │ – Az index csúcsokban tároljuk az összevont

csúcsok azonosítóit: O(N)

(35)

Mekkora legyen a blokkméret ?

• A blokkat gzip-pel tömörítjük.

• A két véglet:

– Külön blokk minden értéknek

– Egy blokkba az összes azonos címkéjű érték

• Hatás:

– Kis blokk: lekérdezési idő ↑tömörítési arány↓

– Nagy blokk: lekérdezési idő ↓tömörítési arány↑

– A helyes arány tapasztalati minták segítségével

állítható be.

(36)

Mitől függ a blokkméret?

Minták az adathalmazra és lekérdezésekre.

• Adathalmazban a szövegek, számok, aránya, szövegek bonyolultsága

• Lekérdezések szelektivitása

• Különböző típusú minták alapján a

tapasztalati optimális blokkméret 600-1000

rekord.

(37)

Blokkméret

0 1 2 3 4 5 6 7 8 9 10

10 100 1000 10000

Block Size (# data records)

Querying Time (sec)

SwissP rot-L SwissP rot-M SwissP rot-H

XM ark-L XMark-M XM ark-H

OM IM -L OM IM -M OM IM -H

13.6 12.9

600

(38)

Milyen lekérdezésekre jó a XQzip?

• Minden XPath fel-le irány (axes)

használható, az oldalirányok (preceding, following siblings) viszont nem.

• beágyazott, összetett predikátumok

and / or / not kifejezések

• Aggregáció: sum, count, average, max, min

• Unió: például L1/(L2 + L3 + L4)

L1 : //a[b = “Crete”]

(prefix)

L2 : c

L3 : d[f/count() >100] L4 : e[//g]

(39)

Lekérdezés kiértékelése

• Az indexfa mélységi bejárása alapján

• A korábbi lekérdezések miatt kibontott blokkok a pufferben maradnak, először ott keressük

• Ha nincs ott, akkor a Hash tábla alapján megtaláljuk azokat a tömörített blokkokat, amelyeket vissza kell állítani.

• Pufferkezelés: Least Recently Used módszerrel

(40)

A SIT index előnye

• Kísérleti eredmények alapján:

• Indexméret : 1%-a az eredeti méretnek

• A keresés kétszer gyorsabb, mint az F&B- index esetén.

• Az index készítése 3-szor gyorsabb mint

az F&B-index esetén.

(41)

Tömörítési arány:

1- méret(tömörített XML)/méret(XML)

0 10 20 30 40 50 60 70 80 90 100

XM ark OM IM DBLP SwissProt Treebank PSD Shakespeare Lineitem

Data Sources

Compression Ratio (%)

XQzip+ XQzip XMill gzip XGrind

XQzip nagyjából olyan mint az XMill és gzip, de lekérdezhető.

XQzip+ tartalmazza a SIT index méretét, XQzip nem.

17% -kal jobb, mint az XGrind.

(42)

XCQ tömörítés

• Négy technikát használ

– DTD fát és SAX eseményfolyam elemzést (DSP)

– Parciális ösvényalapú adatcsoportosítás formátumot (PPB) – Blokkstatisztika lenyomatú indexelés (BSS)

– elérési módszerek (Access Methods)

Compression XCQ Engine

XCQ Querying

Engine

DTD

XML dokumentum

tömörített dokumentum

eredmény XPath lekérdezés

DSP

PPG format BSS indexing

Access Methods

(43)

DTD fa és SAX (DSP)

• Cél:

– A DTD sémaleírás felhasználása

• Előnyök:

– Csak azt kell kódolni, ami DTD sémából nem következik

– Az útvonalak alapján csoportosítja az adatokat

(44)

DSP – Input és Output

A DTD fa

Adatfolyam DSP

Modul

Struktúrafolyam

SAX események folyama

(45)

Első lépés – a DTD fa készítése

<!ELEMENT library (entry*)>

<!ELEMENT entry (author, title, year, publisher?, (paper|course_note|book),

num_copy)>

<!ELEMENT author EMPTY>

<!ATTLIST author name CDATA>

<!ELEMENT title (#PCDATA)>

<!ELEMENT year (#PCDATA)>

<!ELEMENT publisher (#PCDATA)>

<!ELEMENT paper EMPTY>

<!ELEMENT course_note EMPTY>

<!ELEMENT book EMPTY>

<!ELEMENT num_copy (#PCDATA)>

Key:

: PCDATA

library

author

(name) title year num_copy

paper

course_note book entry*

publisher? |

(46)

Minek mi felel meg a DTD fán?

<!ELEMENT library (entry*)>

<!ELEMENT entry (author, title, year, publisher?, (paper|course_note|book),

num_copy)>

<!ELEMENT author EMPTY>

<!ATTLIST author name CDATA>

<!ELEMENT title (#PCDATA)>

<!ELEMENT year (#PCDATA)>

<!ELEMENT publisher (#PCDATA)>

<!ELEMENT paper EMPTY>

<!ELEMENT course_note EMPTY>

<!ELEMENT book EMPTY>

<!ELEMENT num_copy (#PCDATA)>

Key:

: PCDATA

library

author

(name) title year num_copy

paper

course_note book entry*

publisher? |

(47)

2. lépés DSP feldolgozás

• A következő XML dokumentumot fogjuk a DTD alapján feldolgozni.

• A feldolgozás során egy struktúrafolyam és egy adatfolyam keletkezik.

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

(48)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD

Start element – “library”

Structure Stream:

Data Streams:

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(49)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD tree node

Start element – “entry”

Structure Stream:

Data Streams:

T

Match!

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(50)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD

Start element – “author”, att0:name=“Tom”

End element – “author”

Structure Stream:

Data Streams:

Match! T

d0

, d0

d0: Tom

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(51)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD tree node

Start element – “title”

PCDATA – “Introduction to &#34;OS &#34;”

End element – “title”

Structure Stream:

Data Streams:

T, d0, d1

d0: Tom

d1: Introduction to &#34;OS &#34;

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(52)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD SAX Events:

Start element – “year”

PCDATA – “2003”

End element – “year”

Start element – “course_note”

Structure Stream:

Data Streams:

T, d0, d1, d2

d0: Tom

d1: Introduction to &#34;OS &#34;

d2: 2003

Not match!

F

, F

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(53)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD tree node

Start element – “course_note”

End element – “course_note”

Structure Stream:

Data Streams:

T, d0, d1, d2, F

d0: Tom

d1: Introduction to &#34;OS &#34;

d2: 2003

p1 match! Not

Match!

, p1

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

p1

p0 p2

entry*

publisher? |

(54)

SAX Event:

library

author

(name) title year num_copy

paper

course_note

Keys:

book

: Traversal path : PCDATA

: Processing DTD

Start element – “num_copy”

PCDATA – “3”

End element – “num_copy”

End element – “entry”

Structure Stream:

Data Streams:

T, d0, d1, d2, F, p1

d0: Tom

d1: Introduction to &#34;OS &#34;

d2: 2003 d4: 3

<library>

<entry>

<author name="Tom"/>

<title>Introduction to &#34;OS&#34;</title>

<year>2003</year>

<course_note/>

<num_copy>3</num_copy>

</entry>

</library>

entry*

publisher? |

(55)

3 lépés – az output generálása

Struktúrafolyam

SZÓTÁR

Az útvonalak és azonosítójuk.

d0: /library/entry/author/@name d1: /library/entry/title/text()

d2: /library/entry/year/text() d3: /library/entry/publisher/text() d4: /library/entry/num_copy/text()

d0 d1 d2 d3 d4

(56)

A XCQ tömörítés

• Négy technikát használ (a 2-3 technikát most átugorjuk) – DTD fát és SAX eseményfolyam elemzést (DSP)

– Parciális ösvényalapú adatcsoportosítás formátumot (PPB) – Blokkstatisztika lenyomatú indexelés (BSS)

– elérési módszerek (Access Methods)

Compression XCQ Engine

XCQ Querying

Engine

DTD

XML dokumentum

tömörített dokumentum

eredmény XPath lekérdezés

DSP

PPG format BSS indexing

Access Methods

(57)

4. Elérési módszerek

• Cél

– Lekérdezések kiértékelése a tömörítés alapján

• 4 féle lekérdezésre jó

– Szelekciós – Strukturális

– Strukturális aggregációs

– Ösvényalapú aggregációs

(58)

Szelekciós

//entry[author/@name=“Jess” and publisher/text()=“ABC”]

Structure Stream

Szótár

d0: /library/entry/author/@name d1: /library/entry/title/text()

d2: /library/entry/year/text() d3: /library/entry/publisher/text() d4: /library/entry/num_copy/text()

d0 d1 d2 d3 d4

(59)

Strukturális

/library/entry/author

Structure Stream

Szótár

d0: /library/entry/author/@name d1: /library/entry/title/text()

d2: /library/entry/year/text() d3: /library/entry/publisher/text() d4: /library/entry/num_copy/text()

d0 d1 d2 d3 d4

(60)

Strukturális aggregációs

count(//entry)

Structure Stream

Szótár

d0: /library/entry/author/@name d1: /library/entry/title/text()

d2: /library/entry/year/text() d3: /library/entry/publisher/text() d4: /library/entry/num_copy/text()

d0 d1 d2 d3 d4

(61)

Ösvényalapú aggregációs

sum(//num_copy/text()=1)

Structure Stream

Szótár

d0: /library/entry/author/@name d1: /library/entry/title/text()

d2: /library/entry/year/text() d3: /library/entry/publisher/text() d4: /library/entry/num_copy/text()

d0 d1 d2 d3 d4

(62)

Tömörítési arány XMill-lel azonos

0 0.5 1 1.5 2 2.5 3 3.5 4

Compression ratio (bits/byte)

Gzip XMill XCQ XGrind

(63)

Tömörítési idő

Compression Time

0 10 20 30 40 50 60 70 80 90

Weblog SwissProt DBLP TPC-H XMark Shakespeare

Compression Time (s)

gzip XMill XCQ XGrind

(64)

Visszaállítási idő

Decompression Time

0 5 10 15 20 25 30 35 40 45 50

Weblog SwissProt DBLP TPC-H XMark Shakespeare

Decompression Time (s)

gzip XMill XCQ XGrind

(65)

Lekérdezésekben jobb mint az XGrind

TPC-H

0 2 4 6 8 10 12 14

0.01% 0.40% 1.00% 10.00% 50% 75.00%

Selectivity (%) Response Time (s) XCQ - exact

XGrind - exact XCQ - range XGrind - range

XMark

0 5 10 15 20 25 30 35

0.01% 0.40% 1.00% 10.00% 50% 75.00%

Selectivity (%) Response Time (s) XCQ - exact

XGrind - exact XCQ - range XGrind - range

Weblog

0 5 10 15 20 25

0.01% 0.04% 1% 10% 50% 75%

Response Time (s)

XCQ - exact XGrind - exact XCQ - range XGrind - range

DBLP

0 5 10 15 20 25 30

0.02% 0.40% 1% 10% 50% 75%

Selectivity (%)

Response Time (s)

XCQ - exact XGrind - exact XCQ - range XGrind - range

(66)

Néhány alapcikk az XML tömörítési témából

• XMILL: An Efficient Compressor for XML Data by Liefke and Suciu, in SIGMOD'2001

• P. M. Tolani and J. R. Haritsa. XGRIND:

A Query-friendly XML Compressor. IEEE ICDE Conf., pp. 225-234, 2002.

• M. Girardot and N. Sundaresan. Millau: an encoding format for efficient representation and exchange of XML over the Web. WWW Conf., pp.

747-765, 2000.

• H. Ishikawa, S. Yokoyama, S. Isshiki and M. Ohta. Project Xanadu:

XML- and Active-Database-Unified Approach to Distributed E-Commerc e . Int. Workshop on DEXA, 2001.

• A.Arion, A. Bonifati, G. Costa, S. D’Aguanno, I. Manolescu, A. Pugliese, Efficient Query Evaluation over XML Compressed Data, EDBT 2004.

• JunKi Min, MyungJae Park, ChinWan Chung, XPRESS: A Queriable Compression for XML Data, EDBT 2004.

• Wilfred NG, Wai-Yeung LAM, Peter WOOD and Mark LEVENE.

XCQ: A Queriable XML Compression System. Accepted and to appear:

An International Journal of Knowledge and Information Systems,

(2005).

(67)

http://webdocs.cs.ualberta.ca/~gleighto/research/xml-comp.html

(68)

Köszönöm a figyelmet!

Tömörített állomány

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

A dolgozat részét képezi annak elméleti vizsgálata is, hogy az XML adatmodell használata esetén – összehasonlítva például az elosztott relációs

Marketplaces, search engines, and business apps query the registry to discover services at other companies. Szolgáltatás

A Világmindenségnek van egy pontja, ami nem is pont. Nevezhetjük tájnak, vidéknek is. Nagy, de mihez képest? Tehát lehet, hogy kicsi. Értelmesek vagy olyanok, amelyek magukat

„Ahogyan a HTML lehetővé tette, hogy minden számitógép-felhasználó olvashassa az internetes dokumentumokat, úgy az XML - az inkompatibilis számítógépes rendszerek

• In the definition of an attribute of a child there can be attributes of any children which lie to the left side of it, or are those attributes of the same child that have

577 Тематические планы переподготовки учителей истории и обществоведения в связи с переходом школы на новые учебные планы и программы // ПИШ,

Az XML dokumentumok tárolhatóak egy adatbázisban úgy mint szöveg, bináris objektum, vagy valamilyen XML adat típus.. Néhány relációs adatbázis engedélyezi

However, as discussed in Section 5.5 (Initializing and Preload- ing Servlets and JSP Pages), the initialization parameters are available only when the servlet or JSP page is accessed