XML kutatási irányok
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ó)
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>
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>
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
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
A strukturális indexelési technikák
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
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
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ó.
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
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>
XMLIndex Path Table szerkezete
PATHID Indexed XPath
1 /PurchaseOrder
2 /PurchaseOrder/Reference 3 /PurchaseOrder/Actions
4 /PurchaseOrder/Actions/Action
5 /PurchaseOrder/Actions/Action/User
XMLIndex Path Table szerkezete
PATHID RID ORDER_KEY VALUE
1 R1 1 ——
2 R1 1.1
SBELL-2002100912333601PDT3 R1 1.2 ——
4 R1 1.2.1 ——
5 R1 1.2.1.1 SVOLLMAN
6 R2 1 ——
7 R2 1.1
ABEL-20021127121040897PST8 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
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
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
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.
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);
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):
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ó)
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
Ö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)
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
XMill felépítése:
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:
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ó.)
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.
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.
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)
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
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.
/
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
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)
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)
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.
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.
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
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]
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
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.
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.
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
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
DSP – Input és Output
A DTD fa
Adatfolyam DSP
Modul
Struktúrafolyam
SAX események folyama
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? |
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? |
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 "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
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 "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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 "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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 "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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 "OS "”
End element – “title”
Structure Stream:
Data Streams:
T, d0, d1
d0: Tom
d1: Introduction to "OS "
<library>
<entry>
<author name="Tom"/>
<title>Introduction to "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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 "OS "
d2: 2003
Not match!
F
, F
<library>
<entry>
<author name="Tom"/>
<title>Introduction to "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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 "OS "
d2: 2003
p1 match! Not
Match!
, p1
<library>
<entry>
<author name="Tom"/>
<title>Introduction to "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
p1
p0 p2
entry*
publisher? |
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 "OS "
d2: 2003 d4: 3
<library>
<entry>
<author name="Tom"/>
<title>Introduction to "OS"</title>
<year>2003</year>
<course_note/>
<num_copy>3</num_copy>
</entry>
</library>
entry*
publisher? |
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
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
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
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
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
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
Ö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
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
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
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
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