Purely Relational XQuery
|
|
|
- Emily Kerrie Owen
- 10 years ago
- Views:
Transcription
1 Purely Relational XQuery Database-Supported XML Processors Torsten Grust LUG Erding, Oct 2007
2 A Database Guy s View of XML, XPath, and XQuery 2
3 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. 2
4 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! 2
5 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! <?xml version= 1.0?> <root> <elem att= val > <!-- comment --> text </elem> </root> let $doc := doc( in.xml ) for $t in $doc//text() return count($t/../comment()) 2
6 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! <?xml version= 1.0?> <root> <elem att= val > <!-- comment --> text </elem> </root> let $doc := doc( in.xml ) for $t in $doc//text() return count($t/../comment()) 2
7 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! pre size level let $doc := doc( in.xml ) for $t in $doc//text() return count($t/../comment()) 2
8 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! pre size level SELECT pre,size, ROW_NUMBER ( ) FROM t000 WHERE value GROUP BY iter, 2
9 A Database Guy s View of XML, XPath, and XQuery Build XML processors that do not stumble once XML input volumes become sizable. Wait! Sizable data volume...? Use Relational Databases! OFF-THE-SHELF pre size level SELECT pre,size, ROW_NUMBER ( ) FROM t000 WHERE value GROUP BY iter, 2
10 RDBMSs as Processors for Non-Relational Languages Relational databases contain the best understood and most scalable query processors available today. Can we use relational query engines as-is to efficiently process non-relational languages? 3
11 RDBMSs as Processors for Non-Relational Languages Relational databases contain the best understood and most scalable query processors available today. Can we use relational query engines as-is to efficiently process non-relational languages? L X X 3
12 RDBMSs as Processors for Non-Relational Languages Relational databases contain the best understood and most scalable query processors available today. Can we use relational query engines as-is to efficiently process non-relational languages? L X X R R -1 SQL / Relational Algebra 3
13 RDBMSs as Processors for Non-Relational Languages Relational databases contain the best understood and most scalable query processors available today. Can we use relational query engines as-is to efficiently process non-relational languages? XQuery R R -1 SQL / Relational Algebra 3
14 Purely Relational XQuery Find a relational representation of XQuery (XML, XPath) that leverages the table-based processing model: Exploit functionality already built into the database system (do not invade the database kernel): SQL idioms, OLAP extensions, partitioned B-Trees. Run on top off-the-shelf relational database systems: 4
15 Purely Relational XQuery Find a relational representation of XQuery (XML, XPath) that leverages the table-based processing model: Exploit functionality already built into the database system (do not invade the database kernel): SQL idioms, OLAP extensions, partitioned B-Trees. Run on top off-the-shelf relational database systems: DB2 (kxsystems) IBM DB2 V9 SQL Server 2005 PostgreSQL kdb+ MonetDB DB2 Version 9 4
16 Pathfinder pathfinder-xquery.org Relational Database System (Kernel) 5
17 Pathfinder pathfinder-xquery.org Pathfinder XQuery Compiler XPath/XQuery Semantics XML Encoding Relational Database System (Kernel) 5
18 Pathfinder pathfinder-xquery.org XQuery Pathfinder XQuery Compiler XPath/XQuery Semantics XML Encoding Relational Database System (Kernel) 5
19 Pathfinder pathfinder-xquery.org XQuery Pathfinder XQuery Compiler XPath/XQuery Semantics XML Encoding SQL Relational Database System (Kernel) 5
20 Pathfinder pathfinder-xquery.org XQuery Pathfinder XQuery Compiler XPath/XQuery Semantics XML Encoding RA SQL Relational Database System (Kernel) 5
21 Pathfinder & DB2 DB2 Against 110+ MB of XML DB2 Version 9 for Linux, UNIX, an 6
22 Pathfinder & DB2 DB2 Against 110+ MB of XML DB2 Version 9 for Linux, UNIX, an 6
23 Slow Motion Replay XQuery Pathfinder SQL DB2 DB2 Version 9 for Linux, UNIX, and Windows 7
24 Slow Motion Replay XQuery XQuery (XMark Q8) let $a := doc("xmark-110mb.xml") return Pathfinder <item person="{ $p/name/text() }"> { count($ca) } </item> SQL DB2 DB2 Version 9 for Linux, UNIX, and Windows 7
25 Slow Motion Replay XQuery SQL:1999 (no SQL/XML) Pathfinder SQL DB2 DB2 Version 9 WITH t0000 (iter,pre) AS SELECT FROM WHERE t0001 (iter) AS SELECT FROM WHERE SELECT FROM WHERE ORDER BY pre,size,kind, for Linux, UNIX, and Windows 7
26 Slow Motion Replay XQuery Pathfinder SQL DB2 Relational Encoding of Result pre size kind DB2 Version 9 for Linux, UNIX, and Windows 7
27 Slow Motion Replay XQuery Pathfinder SQL DB2 Serialized XML Text <?xml version="1.0" encoding="utf-8"?> <XQuery> <item person= Jixiang >0</item> <item person= Harpreet >0</item> </XQuery> DB2 Version 9 for Linux, UNIX, and Windows 7
28 Table Access Modes 8
29 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. A B 8
30 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. 1. Sequential scans: read-ahead on disks, prefetching CPU caches. A B 8
31 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. 1. Sequential scans: read-ahead on disks, prefetching CPU caches. A B 8
32 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. 1. Sequential scans: read-ahead on disks, prefetching CPU caches. A B 2. Index-based access: B-Trees, range scans. 8
33 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. 1. Sequential scans: read-ahead on disks, prefetching CPU caches. A B 2. Index-based access: B-Trees, range scans. 8
34 Table Access Modes Relational query engines derive much of their efficiency from the simplicity of the table of tuples model. 1. Sequential scans: read-ahead on disks, prefetching CPU caches. A B 2. Index-based access: B-Trees, range scans. But: We will benefit only if we actually operate the relational database in this bulk-oriented mode. 8
35 The Core of XQuery 9
36 The Core of XQuery (e1,..,en) ordered item sequences 9
37 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 ordered item sequences iteration 9
38 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 ordered item sequences iteration variable binding 9
39 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 ordered item sequences iteration variable binding conditionals 9
40 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 <t> { e1 } </t> ordered item sequences iteration variable binding conditionals XML node construction 9
41 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 <t> { e1 } </t> e 1 /child::t, e 1 /following::t ordered item sequences iteration variable binding conditionals XML node construction XPath location steps 9
42 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 <t> { e1 } </t> e 1 /child::t, e 1 /following::t unordered { e 1 } ordered item sequences iteration variable binding conditionals XML node construction XPath location steps local order indifference 9
43 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 <t> { e1 } </t> e 1 /child::t, e 1 /following::t unordered { e 1 } fn:doc(e 1 ), fn:data(e 1 ) ordered item sequences iteration variable binding conditionals XML node construction XPath location steps local order indifference built-in functions + Document order, node identity, dynamic typing, schema validation, user-defined functions,... 9
44 The Core of XQuery (e1,..,en) for $x in e 1 return e 2 let $x := e1 return e2 if (e1) then e2 else e3 <t> { e1 } </t> e 1 /child::t, e 1 /following::t unordered { e 1 } fn:doc(e 1 ), fn:data(e 1 ) ordered item sequences iteration variable binding conditionals XML node construction XPath location steps local order indifference built-in functions + Document order, node identity, dynamic typing, schema validation, user-defined functions,... The XQuery SQL gap appears substantial. 9
45 FP-Style Iteration 10
46 FP-Style Iteration The XQuery for..in..return construct performs side-effect free iteration: for $x in (e1,..,en) return b 10
47 FP-Style Iteration The XQuery for..in..return construct performs side-effect free iteration: for $x in (e1,..,en) return b ( b[e1/$x],..,b[en/$x] ) Individual iterations cannot interfere and may be evaluated in any order (or in parallel). 10
48 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. 11
49 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x
50 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x + 42 iter pos item
51 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x + 42 iter pos item for $x in (10,20,30) return $x
52 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x + 42 for $x in (10,20,30) return $x + 42 iter pos item iter pos item
53 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x + 42 for $x in (10,20,30) return $x + 42 iter pos item iter pos item let $x := (10,20,30) return $x 11
54 Loop Lifting Relational loop unrolling : For any XQuery subexpression, generate a relational plan that evaluates the expression in all iterations. for $x in (10,20,30) return $x + 42 for $x in (10,20,30) return $x + 42 let $x := (10,20,30) return $x 11 iter pos item iter pos item iter pos item
55 Loop Lifting 12
56 Loop Lifting for $x in (10,20,30) return $x
57 Loop Lifting for $x in (10,20,30) return $x + 42 iter pos item iter 1 pos 1 item
58 Loop Lifting for $x in (10,20,30) return $x + 42 iter pos item iter = iter 1 iter 1 pos 1 item item 2 :(item,item 1 ) π iter,pos,item 2 12
59 Loop Lifting for $x in (10,20,30) return $x + 42 iter pos item iter = iter 1 + item 2 :(item,item 1 ) π iter,pos,item 2 iter 1 pos 1 item iter pos item iter 1 pos 1 item
60 Loop Lifting for $x in (10,20,30) return $x + 42 iter pos item iter = iter 1 + item 2 :(item,item 1 ) π iter,pos,item 2 iter 1 pos 1 item iter pos item iter 1 pos 1 item 1 item
61 Loop Lifting for $x in (10,20,30) return $x + 42 iter pos item iter = iter 1 iter 1 pos 1 item item 2 :(item,item 1 ) π iter,pos,item 2 iter pos item
62 Loop Lifting 13
63 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd 13
64 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd iter pos item 1 1 false 2 1 true 3 1 false 4 1 true 13
65 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd σ item π iter iter pos item 1 1 false 2 1 true 3 1 false 4 1 true pos item 1 even pos item 1 odd σ item π iter 13
66 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd iter pos item 2 1 true 4 1 true σ item π iter iter pos item 1 1 false 2 1 true 3 1 false 4 1 true pos item 1 even pos item 1 odd σ item π iter 13
67 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd iter 2 4 σ item π iter iter pos item 1 1 false 2 1 true 3 1 false 4 1 true pos item 1 even pos item 1 odd σ item π iter 13
68 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd iter pos item 2 1 even 4 1 even σ item π iter iter pos item 1 1 false 2 1 true 3 1 false 4 1 true pos item 1 even pos item 1 odd σ item π iter 13
69 for $x in (1,2,3,4) Loop Lifting return if ($x mod 2 = 0) then even else odd iter pos item 1 1 odd σ item π iter 2 1 even 3 1 odd iter pos item 1 1 false 2 1 true 3 1 false 4 1 true pos item 1 even pos item 1 odd 4 1 even σ item π iter 13
70 Intermediate Code: Relational Algebra XQuery Pathfinder XQuery Compiler Relational Algebra σ π 14
71 Intermediate Code: Relational Algebra XQuery Pathfinder XQuery Compiler Relational Algebra σ π Compiles into RA that mimics capabilites of SQL:1999 query engines. RA dialect is primitive 2. explicit 3. designed to be easily analyzable 14
72 Intermediate Code: Relational Algebra XQuery Pathfinder XQuery Compiler Relational Algebra σ π Code Gen Code Gen Code Gen Compiles into RA that mimics capabilites of SQL:1999 query engines. RA dialect is primitive 2. explicit 3. designed to be easily analyzable 14
73 Intermediate Code: Relational Algebra XQuery Pathfinder XQuery Compiler Relational Algebra σ π Code Gen Code Gen Code Gen Compiles into RA that mimics capabilites of SQL:1999 query engines. RA dialect is primitive SQL Q MIL 2. explicit (kxsystems) 3. designed to be easily analyzable 14
74 Typical Plans... 15
75 Typical Plans... 15
76 Relational XQuery Optimization let $d := fn:doc( ) return for $a in $d//a for $b in $d//b where $b/@c = $a/@d return $b 16
77 Relational XQuery Optimization We use concepts in the relational domain to analyze plans and to steer simplification and optimization. Detect join-like XQuery expressions. Let XQuery s syntactic diversity not affect the detection: let $d := fn:doc( ) return for $a in $d//a for $b in $d//b where $b/@c = $a/@d return $b 16
78 Relational XQuery Optimization We use concepts in the relational domain to analyze plans and to steer simplification and optimization. Detect join-like XQuery expressions. Let XQuery s syntactic diversity not affect the detection: let $d := fn:doc( ) return $d//b[@c = $d//a/@c] 16
79 Relational XQuery Optimization We use concepts in the relational domain to analyze plans and to steer simplification and optimization. Detect join-like XQuery expressions. Let XQuery s syntactic diversity not affect the detection: let $d := fn:doc( ) return $d//b[@c = $d//a/@c] For both queries, the value-based XQuery join surfaces as a multi-valued dependency in the algebraic plans. 16
80 ROW# (pos1:<sort, pos>/outer) (iter, pos, item:res) access textnode content (res:<item>) X (iter = (pos), val: #1 (iter:inner, item) (outer:iter, sort:pos, inner) NUMBER (inner) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / child::text (iter, item) (iter, item) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / child::element name { item* } (iter, item) (iter, pos, item:cast) CAST (cast:<item>), type: ua (iter, pos, item:res) access attribute value (pos), val: #1 (iter:inner, item) (iter, (pos), val: #1 (iter:inner, item) X (iter = inner) (outer:iter, sort:pos, inner) NUMBER (inner) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / attribute::attribute id { atomic* } (iter, item) (iter:inner, (pos), val: #1 (iter:inner, item) NUMBER (inner) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / child::element closed_auction { item* } (iter, item) (iter, item) ROW# (pos:<item>/iter) NUMBER (inner) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / child::element person { item* } (iter, item) (iter, item) ROW# (pos:<item>/iter) DISTINCT (iter, item) DISTINCT (iter, item) ROW# (pos:<item>/iter) / child::element closed_auctions { item* } (iter, item) ROW# (pos:<item>/iter) / child::element people { item* } (iter, item) (iter, item) (pos), val: #1 (iter:inner, item) (iter, item) ROW# (pos:<item>/iter) DISTINCT (iter, item) DIFF ROW# (item), val: false DISTINCT (iter:outer) NUMBER (inner) / child::element site { item* } (iter, item) ROW# (pos1:<sort, pos>/outer) (outer:iter, sort:pos, inner) NUMBER (inner) X (iter = (item), val: (pos), val: #1 (iter) SEL (item) (iter, pos, item:res) = (res:<item, item1>) X (iter = iter1) (iter:inner, item) X (iter = outer) (iter, pos, item:res) NOT (pos), val: #1 (item), val: true (iter, pos, item:cast) (iter1:iter, item1:cast) CAST (cast:<item>), type: str (iter:inner, pos, item) X (iter = outer) ROW# (pos1:<sort, pos>/outer) (iter:outer, pos:pos1, item) (iter:outer, pos:pos1, item) CAST (cast:<item>), type: str ROW# (pos1:<sort, pos>/outer) (iter, pos, item:cast) CAST (cast:<item>), type: ua (iter, pos, item:res) access attribute value (pos), val: #1 X (iter = inner) (iter:inner, (pos), val: #1 (iter:inner, item) X (iter = outer) (iter:inner, pos, item) (outer:iter, sort:pos, inner) NUMBER (inner) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) / attribute::attribute person { atomic* } (iter, item) (iter, item) ROW# (pos:<item>/iter) DISTINCT (iter, item) ROW# (pos:<item>/iter) (outer:iter, sort:pos, inner) (outer:iter, sort:pos, inner) (outer:iter, sort:pos, inner) / child::element buyer { item* } (iter, item) X (iter = outer) (iter, item) Rewriting XMark Q8 17
81 EMPTY_FRAG FRAG_UNION FRAGs ROW# (pos1:<sort>) ELEM (iter, item:<iter, item><iter, pos, item>) FRAG_UNION FRAG_UNION (item), val: person (iter:outer, pos:pos1, item) ROW# (pos1:<sort>/outer) X (iter = inner) (iter, pos, item:res) access textnode content (pos), val: #1 (iter:inner, item) ATTR (res:<item, item1>) X (iter = (pos), val: #1 NUMBER (inner) ROW# (pos:<item>/iter) / child::text (iter, item) X (iter = (pos), val: #1 ROOTS (item), val: item (iter1:iter, item1:item) fn:string_join (outer:iter, sort:pos, inner) / child::element name { item* } (iter, (item), val: " " (iter:inner) (iter, pos:pos1, item) ROW# (ord), val: (ord), val: #2 (iter, pos, (pos), val: #1 ROOTS U FRAGs (iter, item:res) ROOTS TEXT (res:<cast>) CAST (cast:<item>), type: str U (item), val: 0 DIFF (iter) COUNT (item:/iter) (iter:outer) X (iter = inner) (iter) X (iter = iter1) (iter1:iter) SEL (item) (iter, item:res) NOT (res:<item>) (item), val: false (iter:inner) (iter:inner, item) NUMBER (inner) ROW# (pos:<item>) / child::element person { item* } (iter, item) / child::element people { item* } (iter, item) FRAGs (iter:inner, item) NUMBER (item), val: true / child::element closed_auction { item* } (iter, item) / child::element closed_auctions { item* } (iter, item) / child::element site { item* } (iter, item) DOC DIFF (iter, item:cast) CAST (cast:<item>), type: ua (iter, item:res) access attribute value (res:<item>) / attribute::attribute person { atomic* } (iter, item) / child::element buyer { item* } (iter, (item), val: "auctiong.xml" DISTINCT (item), val: false (iter:inner) DIFF NUMBER (inner) (iter:inner, item) X (iter = inner) (outer:iter, sort:pos, inner) / child::element site { item* } (iter, item) ROOTS (iter) SEL (item) (iter, item:res) NOT (res:<item>) U DISTINCT (item), val: true X (iter = inner) (iter) SEL (item) (iter, item:res) = (res:<item, item1>) (iter, item:cast) X (iter = iter1) CAST (cast:<item>), type: str (iter:inner, item) X (iter = outer) (iter:inner, item) (iter:outer, item) X (iter = inner) (outer:iter, inner) (iter:inner, item) NUMBER (inner) (iter1:iter, item1:cast) CAST (cast:<item>), type: str (iter, item:cast) CAST (cast:<item>), type: ua (iter, item:res) (iter:inner, item) access attribute value (res:<item>) (iter:inner, item) NUMBER (inner) (iter:outer, item) X (iter = inner) (outer:iter, inner) (outer:iter, inner) NUMBER (inner) / attribute::attribute id { atomic* } (iter, item) (iter:inner, item) X (iter = outer) (iter:inner, item) X (iter = outer) (outer:iter, inner) (outer:iter, inner) Rewriting XMark Q8 Rewriting phases: 1. Constant propagation and projection pushdown, 17
82 EMPTY_FRAG FRAG_UNION FRAGs SERIALIZE (item, pos) ROW# (pos:<pos1>) (pos1, item) X (iter = iter1) ELEM (iter1, item:<iter1, item><iter1, pos, item>) (iter1, item1, pos) ROW# (pos:<pos1>/iter1) (iter1, pos1, item1) access textnode content (item1:<item>) ROW# (pos1:<item>/iter1) / child::text (iter1, item) ROOTS FRAG_UNION FRAG_UNION FRAGs ATTR (item:<item2, (item2), val: person fn:string_join / child::element name { item* } (iter1, item) (item:item1, (item1), val: " " (item), val: item NUMBER (iter) ROW# (pos1:<item1>) (item1) (iter1:iter) / child::element person { item* } (iter, item1) (iter1, item, pos) ROW# (pos:<pos1>/iter1) (pos1), val: (pos1), val: #2 (iter1, item) (iter1, item) ROOTS FRAGs TEXT (item:<item2>) CAST (item2:<item1>), type: str (item1), val: 0 DIFF (iter1) ROOTS COUNT (item1:/iter1) (iter1) X (iter = iter2) (iter:iter2) DISTINCT (iter2) SEL (item) (iter2, item) = (item:<item3, item4>) (iter2, item3, item4) CAST (item4:<item>), type: str CAST (item3:<item2>), type: str (iter2, item2, item) CAST (item:<item4>), type: ua access attribute value (item4:<item3>) (item3, iter2, item2) / child::element people { item* } (iter, item1) FRAG_UNION X (iter1 = iter3) (iter1:iter3, item3) / attribute::attribute id { atomic* } (iter3, item3) (item3:item, iter3:iter1) FRAGs (iter2, item2:item1, iter3:iter1) NUMBER (iter1) (item, iter2, item1) CAST (item1:<item3>), type: ua access attribute value (item3:<item2>) / child::element site { item* } (iter, item1) DOC TBL: (iter item) (iter), val: #1 (item1:item) ROOTS (item2, item, iter2) X (iter = iter3) (iter:iter3, item2) / attribute::attribute person { atomic* } (iter3, item2) / child::element buyer { item* } (iter3, item2) (item, item1, iter1, iter2:iter) (item2:item, iter3:iter) (item:item1, iter2:iter, iter3:iter) (item) NUMBER (iter) (item1, iter1:iter) / child::element closed_auction { item* } (iter, item) / child::element closed_auctions { item* } (iter, item) / child::element site { item* } (iter, item) Rewriting XMark Q8 Rewriting phases: 1. Constant propagation and projection pushdown, 2. functional dependency and data flow analysis, 17
83 EMPTY_FRAG FRAG_UNION FRAGs SERIALIZE (item, pos) ROW# (pos:<pos1>) (pos1, item) X (iter = iter1) ELEM (iter1, item:<iter1, item><iter1, pos, item>) (iter1, item1, pos) ROW# (pos:<pos1>/iter1) (iter1, pos1, item1) access textnode content (item1:<item>) ROW# (pos1:<item>/iter1) / child::text (iter1, item) ROOTS FRAG_UNION FRAG_UNION FRAGs ATTR (item:<item2, (item2), val: person (item1), val: " " / child::element name { item* } (iter1, item) (item:item1, iter1:iter) (item), val: item (iter1:iter) NUMBER (iter) ROW# (pos1:<item1>) (item1) / child::element person { item* } (iter, item1) (iter1, item, pos) ROW# (pos:<pos1>/iter1) (pos1), val: (pos1), val: #2 (iter1, item) (iter1, item) ROOTS FRAGs TEXT (item:<item2>) CAST (item2:<item1>), type: str (item1), val: 0 DIFF (iter1) COUNT (item1:/iter1) (iter1) DISTINCT (iter, iter1) ROOTS X (item1 = item) (iter, item1) (iter1, item) access attribute value (item1:<item>) (item, iter:iter2) / attribute::attribute person { atomic* } (iter2, item) / child::element people { item* } (iter, item1) FRAG_UNION FRAGs / child::element buyer { item* } (iter2, item) DOC TBL: (iter item1) [#1,"auctionG.xml"] (item:item1, iter2:iter) NUMBER (iter) ROOTS (item1) / child::element closed_auction { item* } (iter, item1) / child::element closed_auctions { item* } (iter, item1) / child::element site { item* } (iter, item1) access attribute value (item:<item1>) (item1, iter1:iter2) / attribute::attribute id { atomic* } (iter2, item1) (item1, iter2:iter) Rewriting XMark Q8 Rewriting phases: 1. Constant propagation and projection pushdown, 2. functional dependency and data flow analysis, 3. algebraic XQuery join detection, 17
84 Attach (item), val: item SERIALIZE ROOTS twig (iter, item) ELEM (iter, item) fcns ATTR (iter, item, item1) Attach (item), val: person fn:string_join fcns access textnode content (item1:<item>) Attach (item1), val: " " Project (iter, item) / + child::text (item:item1) level=5 / + child::element name { item* } (item1:iter) level=4 Project (iter) / + child::element person { item* } (iter:item) level=3 Project (item) TEXT (iter, item) Project (iter, item) access attribute value (item1:<item>) / + child::element people { item* } (item:item1) level=2 CAST (item:<item1>), type: str / + attribute::attribute id { atomic* } (item:iter) level=4 Project (item1) / + child::element site { item* } (item1:item) level=1 ROOTS DOC (iter, item) TBL: (iter item) [#1,"auctionG.xml"] Project (item) UNION COUNT (item1:/iter) Project (iter) ThetaJoin (item eq item1) Project (iter, item1) access attribute value (item:<item1>) Project (item1) / + attribute::attribute person { atomic* } (item1:item) level=5 Project (item) / + child::element buyer { item* } (item:item1) level=4 Project (item1) / + child::element closed_auction { item* } (item1:item) level=3 Project (item) / + child::element closed_auctions { item* } (item:item1) level=2 Attach (item1), val: 0 DIFF Project (iter) Rewriting XMark Q8 Rewriting phases: 1. Constant propagation and projection pushdown, 2. functional dependency and data flow analysis, 3. algebraic XQuery join detection, 4. XPath join graph isolation, 17
85 EMPTY FRAG item1 :item item:iter descendant::text() GPS = 802, level = 5 SERIALIZE FRAG UNION FRAGs FRAGs ROOTS twig (iter, item) DOC (iter, item) TBL: (iter item) item:item1 πitem1 ROOTS πiter,item1 πitem item1 :item attribute(person) GPS = 960, level = 5 πitem item:item1 descendant::element(buyer) GPS = 959, level = 4 πitem1 :item item = item1 πiter,item1 item1 :item πiter ELEM (iter, item) item item:iter attribute(id) GPS = 799, level = 4 item:iter fcns ATTR (iter, item, person COUNT item1 :()/iter πiter fcns TEXT (iter, item) πiter,item descendant::element(person) GPS = 798, level = 3 nil CAST (item: item1 ), type: :0 \ πiter Rewriting XMark Q8 Rewriting phases: 1. Constant propagation and projection pushdown, 2. functional dependency and data flow analysis, 3. algebraic XQuery join detection, 4. XPath join graph isolation, 5. data guide exploitation ( Node GPS ). Pathfinder & IBM DB2 V9, 115 MB XML input data < 1 sec 17
86 Rewriting XMark Q8 π iter Rewriting phases: item=item1 1. Constant propagation and projection pushdown, π item π iter,item1 2. functional dependency and data flow analysis, item:item1 item1 :item 3. algebraic XQuery join detection, π item1 item1 :item 4. XPath join graph item:iter GPS = descendant::text() 802, isolation, level = 5 attribute(person) GPS = 960, level = 5 item1 :item item:iter a GPS = data guide exploitation ( Node GPS ). π item Pathfinder & IBM DB2 V9, 115 MB XML item:item1 input data < 1 sec descendant::element(buyer) GPS = 959, level = 4 17 π item π item1 :item
87 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
88 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
89 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
90 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
91 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
92 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
93 upstream Can DB2 Cope? SORT(33) HSJOIN(35) NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
94 upstream Can DB2 Cope? SORT(33) HSJOIN(35) *) Indexes avised by DB2 itself NLJOIN(37) HSJOIN(43) IXSCAN(41) NLJOIN(45) DB2 Version 9 NLJOIN( IDX_GUIDE_PRE for Linux, UNIX, and Windows IXSCAN(53) NLJOIN(47) NLJOIN( XMARK_1.DOC *) IDX_GUIDE_PRE_VALUE IXSCAN(51) IXSCAN(49) IXSCAN(63) 50.0 XMARK_1.DOC IDX_GUIDE_PRE_PRE_PLUS_SIZE *) *) IDX_VALUE_KIND_PRE_SIZE IDX_GUIDE_PRE_VAL XMARK_1.DOC XMARK_1.DOC XMARK_1.DOC 18
95 Order Indifference let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return fn:distinct-doc-order( for $x in $warning//* return $x/text() ) 19
96 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return fn:distinct-doc-order( for $x in $warning//* return $x/text() ) 19
97 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return fn:distinct-doc-order( for $x in $warning//* return $x/text() ) Do not press button, computer will explode! 19
98 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return for $x in $warning//* return $x/text() Do press button, computer will not explode! 19
99 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return for $x in $warning//* return $x/text() Do press button, computer will not explode! Order-awareness thus is often deeply wired into XQuery processors. Supporting constructs like unordered { e1 } is challenging. 19
100 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return for $x in $warning//* return $x/text() Do press button, computer will not explode! Order-awareness thus is often deeply wired into XQuery processors. SERIALIZE (item, pos) Supporting constructs like unordered { e1 } is challenging. FRAG_UNION FRAGs (pos1, item) X (iter = iter1) ROOTS ELEM (iter1, item:<iter1, item><iter1, pos, item>) ROW# (pos:<pos1>) ELEM_TAG (iter1, item, (item), val: item ROW# (pos:<pos1>/iter1) U 19 FRAG_UNION (pos1), val: (pos1), val: #2 (iter1, item) (iter1, item) ROOTS FRAGs ROOTS FRAGs TEXT (item:<item2>)
101 Order Indifference Order in XML and XQuery processing is essential: let $warning := <p>do <em>not</em> press button, computer will <em>explode!</em></p> return for $x in $warning//* return $x/text() Do press button, computer will not explode! Order-awareness thus is often deeply wired into XQuery processors. π iter,item SERIALIZE (item, pos) Supporting constructs like unordered { e1 } is challenging. FRAG_UNION FRAGs (pos1, item) X (iter = iter1) ROOTS ELEM (iter1, item:<iter1, item><iter1, pos, item>) ROW# (pos:<pos1>) ELEM_TAG (iter1, item, (item), val: item ROW# (pos:<pos1>/iter1) U 19 FRAG_UNION (pos1), val: (pos1), val: #2 (iter1, item) (iter1, item) ROOTS FRAGs ROOTS FRAGs TEXT (item:<item2>)
102 More Purely Relational XQuery 20
103 More Purely Relational XQuery Declarative XQuery debugging with time travel. Users observe expressions and may traverse iterations forward/backward. 20
104 More Purely Relational XQuery Declarative XQuery debugging with time travel. Users observe expressions and may traverse iterations forward/backward. iter pos item
105 More Purely Relational XQuery Declarative XQuery debugging with time travel. Users observe expressions and may traverse iterations forward/backward. iter pos item Dependable cardinality estimates at XQuery subexpression level (# items per iteration and overall contribution). for $x in $doc//x return if (e 1 ) then e 2 else e 3 20
106 More Purely Relational XQuery Declarative XQuery debugging with time travel. Users observe expressions and may traverse iterations forward/backward. iter pos item Dependable cardinality estimates at XQuery subexpression level (# items per iteration and overall contribution). for $x in $doc//x 4.3 return if (e 1 ) then e 2 else e
107 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> 21
108 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> 21
109 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day shirt 21
110 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c shirt d 21
111 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c shirt d 21
112 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c Same d shirt different day shirt 21
113 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c Same d shirt shirt different day shirt 21
114 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c Same Same Same Same shirt shirt shirt different day different d shirt shirt different day shirt 21
115 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c Same Same Same Same shirt shirt shirt different day different d shirt shirt different day shirt dict atom 21
116 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a b c Sameδ 1 Sameδ 1 Sameδ 1 Sameδ 1 shirt shirt shirt different day different d shirt shirt different day shirt dict δ 1 Same atom 21
117 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a δ 1 δ 2 δ 3 δ 4 b δ 1 δ 2 δ 3 c δ 1 δ 2 δ 1 d δ 2 δ 2 δ 3 δ 4 21 shirt dict atom δ 1 Same δ 2 shirt δ 3 different day δ 4
118 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a δ 15 δ 2 δ 3 δ 4 b δ 15 δ 2 δ 3 c δ 15 δ 2 δ 1 d δ 2 δ 2 δ 3 shirt dict atom δ 1 Same δ 2 shirt δ 3 different δ 4 day δ 5 Same shirt δ 4 21
119 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 atom3 atom4 a δ 15 6 δ 2 δ 3 δ 4 b δ 15 6 δ 2 δ 3 c δ 1 5 δ 2 δ 1 d δ 2 δ 2 δ 3 δ 4 21 shirt dict atom δ 1 Same δ 2 shirt δ 3 different δ 4 day δ 5 δ 1 δ 2 δ 6 δ 5 δ 3
120 Atomization Indexes <a> <b> <c>same<d>shirt</d></c> different </b> day </a> Same c b d a different day node atom1 atom2 a δ 6 δ 4 b δ 6 c δ 5 δ 1 d δ 2 δ 2 δ 3 δ 4 21 shirt dict atom δ 1 Same δ 2 shirt δ 3 different δ 4 day δ 5 δ 1 δ 2 δ 6 δ 5 δ 3
121 Relational Encodings for XML XML documents represent ordered, unranked trees (nodes of 7 kinds). Relational XQuery processing calls for an adequate relational encoding of such trees: 1. Schema-oblivious (XQuery constructs arbitrary XML fragments), 2. accessible for the query processor and index support ( 10 7 nodes in typical GB-range XML instances). 22
122 Relational Encodings for XML XML documents represent ordered, unranked trees (nodes of 7 kinds). Relational XQuery processing calls for an adequate relational encoding of such trees: 1. Schema-oblivious (XQuery constructs arbitrary XML fragments), 2. accessible for the query processor and index support ( 10 7 nodes in typical GB-range XML instances). doc X 22 1 <a>b<c/>d<e/><f>g</f></a> 2
123 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 23
124 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> d c b e a g i f h j 23
125 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 0a9a 6g4g 4e1e 5f8f 8i5i 7h7h 9j6j 23
126 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 0a9a 6g4g 4e1e 5f8f 8i5i 7h7h 9j6j 23 pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j
127 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 0a9a 6g4g 4e1e 5f8f 8i5i 7h7h 9j6j 23 document order pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j
128 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 0a9a 6g4g 4e1e 5f8f 8i5i 7h7h 9j6j document order pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j kind elem elem elem elem text elem comm elem elem elem 23
129 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 0a9a 6g4g 4e1e 5f8f 8i5i 7h7h 9j6j document order pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j kind elem elem elem elem text elem comm elem elem elem size level
130 Pre/Postorder Encoding 0a9a <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> 1b3b 2c2c 3d0d 4e1e 6g4g 5f8f 8i5i 7h7h 9j6j document order pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j kind elem elem elem elem text elem comm elem elem elem size level
131 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> post 5 5 pre 23 3d0d 1b3b 2c2c document order 4e1e 0a9a 6g4g pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 5f8f 8i5i kind elem elem elem elem text elem comm elem elem elem 7h7h 9j6j size level
132 Pre/Postorder Encoding <a> <b><c><d/>e</c></b> <f><!--g--> <h><i/><j/></h> </f> </a> post a 5 b c d f e 5 g h i j pre 23 3d0d 1b3b 2c2c document order 4e1e 0a9a 6g4g pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 5f8f 8i5i kind elem elem elem elem text elem comm elem elem elem 7h7h 9j6j size level
133 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: 24
134 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a f h 5 b c e g i j d 5 24
135 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a f h 5 b c e g i j d 5 24
136 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a f h 5 b c e g i j d 5 24
137 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a f h 5 b c e g i j d 5 24
138 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a f h 5 b c e g i j d 5 24
139 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a 5 b c d f e 5 g h i j 24 B-Tree pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j
140 B-Trees Accelerate XPath Location Steps The XPath axes ancestor, descendant, preceding, following partition any XML document: a 5 b c d f e 5 g h i j 24 B-Tree pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j
141 Partitioned B-Trees 25
142 Partitioned B-Trees Use low selectivity key prefixes to partition the XML nodes in a B-Tree according to various criteria: 25
143 Partitioned B-Trees Use low selectivity key prefixes to partition the XML nodes in a B-Tree according to various criteria: 1. level (support XPath child axis) B-Tree 25
144 Partitioned B-Trees Use low selectivity key prefixes to partition the XML nodes in a B-Tree according to various criteria: 1. level (support XPath child axis) B-Tree level = 1 level = 2 level = 3 25
145 Partitioned B-Trees Use low selectivity key prefixes to partition the XML nodes in a B-Tree according to various criteria: 1. level (support XPath child axis) B-Tree 2. element tag name 3. path to node ( Node GPS ) level = 1 level = 2 level = 3 Given a Pathfinder-generated workload, the index advisor of IBM DB2 V9 proposes such partitionings automatically. 25
146 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. 26
147 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. c3 c4 c1 c2 26
148 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. c3 c4 c1 c2 26
149 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. c3 c4 c1 c2 26
150 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. c3 c4 c1 c2 26
151 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. c3 c4 c1 c2 26
152 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. Pathfinder XQuery Compiler c1 c3 c4 XPath/XQuery Semantics XML Encoding c2 26
153 Injecting More Tree Awareness In XQuery, an XPath location step originates in a sequence of context nodes. Duplicate nodes, out of order results (XPath semantics!), wasted work. Pathfinder XQuery Compiler c1 c2 c3 c4 XPath/XQuery Semantics XML Encoding staircase join 26
154 Staircase Join: Context Pruning XPath following axis: c3 c4 c1 c2 27
155 Staircase Join: Context Pruning XPath following axis: c1 c2 27
156 Staircase Join: Context Pruning XPath following axis: c 1 c1 c2 c 2 27
157 Staircase Join: Context Pruning XPath following axis: c 1 c2 c 2 Index scan yields duplicate free result in document order. 27
158 Staircase Join: Skipping XPath descendant axis: c3 c4 c1 c2 28
159 Staircase Join: Skipping XPath descendant axis: c3 c1 28
160 Staircase Join: Skipping XPath descendant axis: c3 c1 scan 28
161 Staircase Join: Skipping XPath descendant axis: c3 v c 1 v c1 scan 28
162 Staircase Join: Skipping XPath descendant axis: c3 v c 1 v c1 scan skip scan Index scan yields duplicate free result in document order. 28
163 MonetDB/XQuery 29
164 MonetDB/XQuery MonetDB: Extensible relational database kernel, optimized for query processing close to the CPU. Full vertical fragmentation (column store). pre post node 0 9 a 1 3 b 2 2 c 3 0 d 4 1 e 5 8 f 6 4 g 7 7 h 8 5 i 9 6 j 29
165 MonetDB/XQuery MonetDB: Extensible relational database kernel, optimized for query processing close to the CPU. Full vertical fragmentation (column store). pre post pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 29
166 MonetDB/XQuery MonetDB: Extensible relational database kernel, optimized for query processing close to the CPU. Full vertical fragmentation (column store). pre post pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 29
167 MonetDB/XQuery MonetDB: Extensible relational database kernel, optimized for query processing close to the CPU. Full vertical fragmentation (column store). Pathfinder + MonetDB = MonetDB/XQuery. Implementation of XQuery 1.0. Evaluates queries against GB-range XML instances in interactive time. pre post pre node 0 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j + XQuery Update, XQuery RPC ( execute at uri { e } ), support for multi-dimensional XML,... 29
168 DB2 s XML support doesn t beat its relational self. 30
169 DB2 s XML support doesn t beat its relational self. Pathfinder builds on 30+ years of development of relational database technology. 30
170 DB2 s XML support doesn t beat its relational self. Pathfinder builds on 30+ years of development of relational database technology. Outperforms the built-in DB2 V9 purexml engine, especially for large XML input instances. 30
171 DB2 s XML support doesn t beat its relational self. Pathfinder builds on 30+ years of development of relational database technology. Outperforms the built-in DB2 V9 purexml engine, especially for large XML input instances. Covers other data-intensive languages: 1. SQL/XML 30
172 DB2 s XML support doesn t beat its relational self. Pathfinder builds on 30+ years of development of relational database technology. Outperforms the built-in DB2 V9 purexml engine, especially for large XML input instances. Covers other data-intensive languages: 1. SQL/XML 2. LINQ + other Nested Loop languages. 30
173 31
174 32
Database-Supported XML Processors
Database-Supported XML Processors Prof. Dr. Torsten Grust [email protected] Winter 2008/2009 Torsten Grust (WSI) Database-Supported XML Processors Winter 2008/09 1 Part I Preliminaries Torsten
OptImatch: Semantic Web System with Knowledge Base for Query Performance Problem Determination
OptImatch: Semantic Web System with Knowledge Base for Query Performance Problem Determination Guilherme Damasio UOIT, Faculty of Science, Computer Science and IBM Centre for Advanced Studies Toronto [email protected]
Quiz! Database Indexes. Index. Quiz! Disc and main memory. Quiz! How costly is this operation (naive solution)?
Database Indexes How costly is this operation (naive solution)? course per weekday hour room TDA356 2 VR Monday 13:15 TDA356 2 VR Thursday 08:00 TDA356 4 HB1 Tuesday 08:00 TDA356 4 HB1 Friday 13:15 TIN090
QuickDB Yet YetAnother Database Management System?
QuickDB Yet YetAnother Database Management System? Radim Bača, Peter Chovanec, Michal Krátký, and Petr Lukáš Radim Bača, Peter Chovanec, Michal Krátký, and Petr Lukáš Department of Computer Science, FEECS,
Inside the PostgreSQL Query Optimizer
Inside the PostgreSQL Query Optimizer Neil Conway [email protected] Fujitsu Australia Software Technology PostgreSQL Query Optimizer Internals p. 1 Outline Introduction to query optimization Outline of
Unified XML/relational storage March 2005. The IBM approach to unified XML/relational databases
March 2005 The IBM approach to unified XML/relational databases Page 2 Contents 2 What is native XML storage? 3 What options are available today? 3 Shred 5 CLOB 5 BLOB (pseudo native) 6 True native 7 The
www.quilogic.com SQL/XML-IMDBg GPU boosted In-Memory Database for ultra fast data management Harald Frick CEO QuiLogic In-Memory DB Technology
SQL/XML-IMDBg GPU boosted In-Memory Database for ultra fast data management Harald Frick CEO QuiLogic In-Memory DB Technology The parallel revolution Future computing systems are parallel, but Programmers
Database & Information Systems Group Prof. Marc H. Scholl. XML & Databases. Tutorial. 11. SQL Compilation, XPath Symmetries
XML & Databases Tutorial 11. SQL Compilation, XPath Symmetries Christian Grün, Database & Information Systems Group University of, Winter 2005/06 SQL Compilation Relational Encoding: the table representation
IBM DB2 XML support. How to Configure the IBM DB2 Support in oxygen
Table of Contents IBM DB2 XML support About this Tutorial... 1 How to Configure the IBM DB2 Support in oxygen... 1 Database Explorer View... 3 Table Explorer View... 5 Editing XML Content of the XMLType
Comp 5311 Database Management Systems. 16. Review 2 (Physical Level)
Comp 5311 Database Management Systems 16. Review 2 (Physical Level) 1 Main Topics Indexing Join Algorithms Query Processing and Optimization Transactions and Concurrency Control 2 Indexing Used for faster
Data XML and XQuery A language that can combine and transform data
Data XML and XQuery A language that can combine and transform data John de Longa Solutions Architect DataDirect technologies [email protected] Mobile +44 (0)7710 901501 Data integration through
Storing and Querying Ordered XML Using a Relational Database System
Kevin Beyer IBM Almaden Research Center Storing and Querying Ordered XML Using a Relational Database System Igor Tatarinov* University of Washington Jayavel Shanmugasundaram* Cornell University Stratis
MS SQL Performance (Tuning) Best Practices:
MS SQL Performance (Tuning) Best Practices: 1. Don t share the SQL server hardware with other services If other workloads are running on the same server where SQL Server is running, memory and other hardware
Creating a TEI-Based Website with the exist XML Database
Creating a TEI-Based Website with the exist XML Database Joseph Wicentowski, Ph.D. U.S. Department of State July 2010 Goals By the end of this workshop you will know:...1 about a flexible set of technologies
Oracle Database 11g: SQL Tuning Workshop Release 2
Oracle University Contact Us: 1 800 005 453 Oracle Database 11g: SQL Tuning Workshop Release 2 Duration: 3 Days What you will learn This course assists database developers, DBAs, and SQL developers to
Unit 4.3 - Storage Structures 1. Storage Structures. Unit 4.3
Storage Structures Unit 4.3 Unit 4.3 - Storage Structures 1 The Physical Store Storage Capacity Medium Transfer Rate Seek Time Main Memory 800 MB/s 500 MB Instant Hard Drive 10 MB/s 120 GB 10 ms CD-ROM
Deferred node-copying scheme for XQuery processors
Deferred node-copying scheme for XQuery processors Jan Kurš and Jan Vraný Software Engineering Group, FIT ČVUT, Kolejn 550/2, 160 00, Prague, Czech Republic [email protected], [email protected] Abstract.
SQL Query Evaluation. Winter 2006-2007 Lecture 23
SQL Query Evaluation Winter 2006-2007 Lecture 23 SQL Query Processing Databases go through three steps: Parse SQL into an execution plan Optimize the execution plan Evaluate the optimized plan Execution
SQL Optimization & Access Paths: What s Old & New Part 1
SQL Optimization & Access Paths: What s Old & New Part 1 David Simpson Themis Inc. [email protected] 2008 Themis, Inc. All rights reserved. David Simpson is currently a Senior Technical Advisor at
Scalable Data Integration by Mapping Data to Queries
Scalable Data Integration by Mapping Data to Queries Martin Hentschel 1, Donald Kossmann 1, Daniela Florescu 2, Laura Haas 3, Tim Kraska 1, and Renée J. Miller 4 1 Systems Group, Department of Computer
Discovering SQL. Wiley Publishing, Inc. A HANDS-ON GUIDE FOR BEGINNERS. Alex Kriegel WILEY
Discovering SQL A HANDS-ON GUIDE FOR BEGINNERS Alex Kriegel WILEY Wiley Publishing, Inc. INTRODUCTION xxv CHAPTER 1: DROWNING IN DATA, DYING OF THIRST FOR KNOWLEDGE 1 Data Deluge and Informational Overload
Introduction. Part I: Finding Bottlenecks when Something s Wrong. Chapter 1: Performance Tuning 3
Wort ftoc.tex V3-12/17/2007 2:00pm Page ix Introduction xix Part I: Finding Bottlenecks when Something s Wrong Chapter 1: Performance Tuning 3 Art or Science? 3 The Science of Performance Tuning 4 The
Oracle Database 11g: SQL Tuning Workshop
Oracle University Contact Us: + 38516306373 Oracle Database 11g: SQL Tuning Workshop Duration: 3 Days What you will learn This Oracle Database 11g: SQL Tuning Workshop Release 2 training assists database
DB2 for Linux, UNIX, and Windows Performance Tuning and Monitoring Workshop
DB2 for Linux, UNIX, and Windows Performance Tuning and Monitoring Workshop Duration: 4 Days What you will learn Learn how to tune for optimum performance the IBM DB2 9 for Linux, UNIX, and Windows relational
Damia: Data Mashups for Intranet Applications
Damia: Data Mashups for Intranet Applications David E. Simmen, Mehmet Altinel, Volker Markl, Sriram Padmanabhan, Ashutosh Singh IBM Almaden Research Center 650 Harry Road San Jose, CA 95120, USA {simmen,
Enhancing Traditional Databases to Support Broader Data Management Applications. Yi Chen Computer Science & Engineering Arizona State University
Enhancing Traditional Databases to Support Broader Data Management Applications Yi Chen Computer Science & Engineering Arizona State University What Is a Database System? Of course, there are traditional
Indexing XML Data in RDBMS using ORDPATH
Indexing XML Data in RDBMS using ORDPATH Microsoft SQL Server 2005 Concepts developed by: Patrick O Neil,, Elizabeth O Neil, (University of Massachusetts Boston) Shankar Pal,, Istvan Cseri,, Oliver Seeliger,,
IBM DB2: LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs
coursemonster.com/au IBM DB2: LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs View training dates» Overview Learn how to tune for optimum performance the IBM DB2 9 for Linux,
[email protected] [email protected]
A Glance over MonetDB November 22 nd 2011 at Nopsar [email protected] [email protected] Centrum Wiskunde & Informatica Background History of MonetDB 1979-1992 first relational kernel 1993-1995 BAT-based
XML and Data Management
XML and Data Management XML standards XML DTD, XML Schema DOM, SAX, XPath XSL XQuery,... Databases and Information Systems 1 - WS 2005 / 06 - Prof. Dr. Stefan Böttcher XML / 1 Overview of internet technologies
Elena Baralis, Silvia Chiusano Politecnico di Torino. Pag. 1. Query optimization. DBMS Architecture. Query optimizer. Query optimizer.
DBMS Architecture INSTRUCTION OPTIMIZER Database Management Systems MANAGEMENT OF ACCESS METHODS BUFFER MANAGER CONCURRENCY CONTROL RELIABILITY MANAGEMENT Index Files Data Files System Catalog BASE It
Data Warehousing. Jens Teubner, TU Dortmund [email protected]. Winter 2014/15. Jens Teubner Data Warehousing Winter 2014/15 1
Jens Teubner Data Warehousing Winter 2014/15 1 Data Warehousing Jens Teubner, TU Dortmund [email protected] Winter 2014/15 Jens Teubner Data Warehousing Winter 2014/15 152 Part VI ETL Process
www.gr8ambitionz.com
Data Base Management Systems (DBMS) Study Material (Objective Type questions with Answers) Shared by Akhil Arora Powered by www. your A to Z competitive exam guide Database Objective type questions Q.1
Modern Databases. Database Systems Lecture 18 Natasha Alechina
Modern Databases Database Systems Lecture 18 Natasha Alechina In This Lecture Distributed DBs Web-based DBs Object Oriented DBs Semistructured Data and XML Multimedia DBs For more information Connolly
Use a Native XML Database for Your XML Data
Use a Native XML Database for Your XML Data You already know it s time to switch. Gregory Burd Product Manager [email protected] Agenda Quick Technical Overview Features API Performance Clear Up Some
How To Use Query Console
Query Console User Guide 1 MarkLogic 8 February, 2015 Last Revised: 8.0-1, February, 2015 Copyright 2015 MarkLogic Corporation. All rights reserved. Table of Contents Table of Contents Query Console User
ABSTRACT 1. INTRODUCTION. Kamil Bajda-Pawlikowski [email protected]
Kamil Bajda-Pawlikowski [email protected] Querying RDF data stored in DBMS: SPARQL to SQL Conversion Yale University technical report #1409 ABSTRACT This paper discusses the design and implementation
How To Improve Performance In A Database
Some issues on Conceptual Modeling and NoSQL/Big Data Tok Wang Ling National University of Singapore 1 Database Models File system - field, record, fixed length record Hierarchical Model (IMS) - fixed
PostgreSQL Business Intelligence & Performance Simon Riggs CTO, 2ndQuadrant PostgreSQL Major Contributor
PostgreSQL Business Intelligence & Performance Simon Riggs CTO, 2ndQuadrant PostgreSQL Major Contributor The research leading to these results has received funding from the European Union's Seventh Framework
Big Data looks Tiny from the Stratosphere
Volker Markl http://www.user.tu-berlin.de/marklv [email protected] Big Data looks Tiny from the Stratosphere Data and analyses are becoming increasingly complex! Size Freshness Format/Media Type
MapReduce Jeffrey Dean and Sanjay Ghemawat. Background context
MapReduce Jeffrey Dean and Sanjay Ghemawat Background context BIG DATA!! o Large-scale services generate huge volumes of data: logs, crawls, user databases, web site content, etc. o Very useful to be able
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
G-SPARQL: A Hybrid Engine for Querying Large Attributed Graphs
G-SPARQL: A Hybrid Engine for Querying Large Attributed Graphs Sherif Sakr National ICT Australia UNSW, Sydney, Australia [email protected] Sameh Elnikety Microsoft Research Redmond, WA, USA [email protected]
ICOM 6005 Database Management Systems Design. Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 August 23, 2001
ICOM 6005 Database Management Systems Design Dr. Manuel Rodríguez Martínez Electrical and Computer Engineering Department Lecture 2 August 23, 2001 Readings Read Chapter 1 of text book ICOM 6005 Dr. Manuel
Symbol Tables. Introduction
Symbol Tables Introduction A compiler needs to collect and use information about the names appearing in the source program. This information is entered into a data structure called a symbol table. The
DBMS / Business Intelligence, SQL Server
DBMS / Business Intelligence, SQL Server Orsys, with 30 years of experience, is providing high quality, independant State of the Art seminars and hands-on courses corresponding to the needs of IT professionals.
I Have...Who Has... Multiplication Game
How to play the game: Distribute the cards randomly to your students. Some students may get more than one card. Select a student to begin by reading their card aloud. (example: 35. who has 4x4?) 35 4 x
MapReduce. MapReduce and SQL Injections. CS 3200 Final Lecture. Introduction. MapReduce. Programming Model. Example
MapReduce MapReduce and SQL Injections CS 3200 Final Lecture Jeffrey Dean and Sanjay Ghemawat. MapReduce: Simplified Data Processing on Large Clusters. OSDI'04: Sixth Symposium on Operating System Design
low-level storage structures e.g. partitions underpinning the warehouse logical table structures
DATA WAREHOUSE PHYSICAL DESIGN The physical design of a data warehouse specifies the: low-level storage structures e.g. partitions underpinning the warehouse logical table structures low-level structures
Relational Databases
Relational Databases Jan Chomicki University at Buffalo Jan Chomicki () Relational databases 1 / 18 Relational data model Domain domain: predefined set of atomic values: integers, strings,... every attribute
Oracle Database: SQL and PL/SQL Fundamentals NEW
Oracle University Contact Us: + 38516306373 Oracle Database: SQL and PL/SQL Fundamentals NEW Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training delivers the
1. INTRODUCTION TO RDBMS
Oracle For Beginners Page: 1 1. INTRODUCTION TO RDBMS What is DBMS? Data Models Relational database management system (RDBMS) Relational Algebra Structured query language (SQL) What Is DBMS? Data is one
Oracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: 1.800.529.0165 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This course is designed to deliver the fundamentals of SQL and PL/SQL along
Parallel Databases. Parallel Architectures. Parallelism Terminology 1/4/2015. Increase performance by performing operations in parallel
Parallel Databases Increase performance by performing operations in parallel Parallel Architectures Shared memory Shared disk Shared nothing closely coupled loosely coupled Parallelism Terminology Speedup:
ORACLE DATABASE 10G ENTERPRISE EDITION
ORACLE DATABASE 10G ENTERPRISE EDITION OVERVIEW Oracle Database 10g Enterprise Edition is ideal for enterprises that ENTERPRISE EDITION For enterprises of any size For databases up to 8 Exabytes in size.
Semistructured data and XML. Institutt for Informatikk INF3100 09.04.2013 Ahmet Soylu
Semistructured data and XML Institutt for Informatikk 1 Unstructured, Structured and Semistructured data Unstructured data e.g., text documents Structured data: data with a rigid and fixed data format
Best Practices for DB2 on z/os Performance
Best Practices for DB2 on z/os Performance A Guideline to Achieving Best Performance with DB2 Susan Lawson and Dan Luksetich www.db2expert.com and BMC Software September 2008 www.bmc.com Contacting BMC
Query Optimization for Distributed Database Systems Robert Taylor Candidate Number : 933597 Hertford College Supervisor: Dr.
Query Optimization for Distributed Database Systems Robert Taylor Candidate Number : 933597 Hertford College Supervisor: Dr. Dan Olteanu Submitted as part of Master of Computer Science Computing Laboratory
Integrating Apache Spark with an Enterprise Data Warehouse
Integrating Apache Spark with an Enterprise Warehouse Dr. Michael Wurst, IBM Corporation Architect Spark/R/Python base Integration, In-base Analytics Dr. Toni Bollinger, IBM Corporation Senior Software
Chapter 1: Introduction
Chapter 1: Introduction Database System Concepts, 5th Ed. See www.db book.com for conditions on re use Chapter 1: Introduction Purpose of Database Systems View of Data Database Languages Relational Databases
Querying Microsoft SQL Server
Course 20461C: Querying Microsoft SQL Server Module 1: Introduction to Microsoft SQL Server 2014 This module introduces the SQL Server platform and major tools. It discusses editions, versions, tools used
Oracle Database 10g. Page # The Self-Managing Database. Agenda. Benoit Dageville Oracle Corporation [email protected]
Oracle Database 10g The Self-Managing Database Benoit Dageville Oracle Corporation [email protected] Agenda Oracle10g: Oracle s first generation of self-managing database Oracle s Approach to
16.1 MAPREDUCE. For personal use only, not for distribution. 333
For personal use only, not for distribution. 333 16.1 MAPREDUCE Initially designed by the Google labs and used internally by Google, the MAPREDUCE distributed programming model is now promoted by several
The Import & Export of Data from a Database
The Import & Export of Data from a Database Introduction The aim of these notes is to investigate a conceptually simple model for importing and exporting data into and out of an object-relational database,
CIS 631 Database Management Systems Sample Final Exam
CIS 631 Database Management Systems Sample Final Exam 1. (25 points) Match the items from the left column with those in the right and place the letters in the empty slots. k 1. Single-level index files
In-Memory Data Management for Enterprise Applications
In-Memory Data Management for Enterprise Applications Jens Krueger Senior Researcher and Chair Representative Research Group of Prof. Hasso Plattner Hasso Plattner Institute for Software Engineering University
History of Database Systems
History of Database Systems By Kaushalya Dharmarathna(030087) Sandun Weerasinghe(040417) Early Manual System Before-1950s Data was stored as paper records. Lot of man power involved. Lot of time was wasted.
Execution Strategies for SQL Subqueries
Execution Strategies for SQL Subqueries Mostafa Elhemali, César Galindo- Legaria, Torsten Grabs, Milind Joshi Microsoft Corp With additional slides from material in paper, added by S. Sudarshan 1 Motivation
DB2 for i. Analysis and Tuning. Mike Cain IBM DB2 for i Center of Excellence. [email protected]
DB2 for i Monitoring, Analysis and Tuning Mike Cain IBM DB2 for i Center of Excellence Rochester, MN USA [email protected] 8 Copyright IBM Corporation, 2008. All Rights Reserved. This publication may refer
Markup Languages and Semistructured Data - SS 02
Markup Languages and Semistructured Data - SS 02 http://www.pms.informatik.uni-muenchen.de/lehre/markupsemistrukt/02ss/ XPath 1.0 Tutorial 28th of May, 2002 Dan Olteanu XPath 1.0 - W3C Recommendation language
DB2 LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs
Kod szkolenia: Tytuł szkolenia: CL442PL DB2 LUW Performance Tuning and Monitoring for Single and Multiple Partition DBs Dni: 5 Opis: Learn how to tune for optimum the IBM DB2 9 for Linux, UNIX, and Windows
Microkernels & Database OSs. Recovery Management in QuickSilver. DB folks: Stonebraker81. Very different philosophies
Microkernels & Database OSs Recovery Management in QuickSilver. Haskin88: Roger Haskin, Yoni Malachi, Wayne Sawdon, Gregory Chan, ACM Trans. On Computer Systems, vol 6, no 1, Feb 1988. Stonebraker81 OS/FS
Understanding SQL Server Execution Plans. Klaus Aschenbrenner Independent SQL Server Consultant SQLpassion.at Twitter: @Aschenbrenner
Understanding SQL Server Execution Plans Klaus Aschenbrenner Independent SQL Server Consultant SQLpassion.at Twitter: @Aschenbrenner About me Independent SQL Server Consultant International Speaker, Author
The MonetDB Architecture. Martin Kersten CWI Amsterdam. M.Kersten 2008 1
The MonetDB Architecture Martin Kersten CWI Amsterdam M.Kersten 2008 1 Try to keep things simple Database Structures Execution Paradigm Query optimizer DBMS Architecture M.Kersten 2008 2 End-user application
Towards Fast SQL Query Processing in DB2 BLU Using GPUs A Technology Demonstration. Sina Meraji [email protected]
Towards Fast SQL Query Processing in DB2 BLU Using GPUs A Technology Demonstration Sina Meraji [email protected] Please Note IBM s statements regarding its plans, directions, and intent are subject to
ENHANCEMENTS TO SQL SERVER COLUMN STORES. Anuhya Mallempati #2610771
ENHANCEMENTS TO SQL SERVER COLUMN STORES Anuhya Mallempati #2610771 CONTENTS Abstract Introduction Column store indexes Batch mode processing Other Enhancements Conclusion ABSTRACT SQL server introduced
2 Associating Facts with Time
TEMPORAL DATABASES Richard Thomas Snodgrass A temporal database (see Temporal Database) contains time-varying data. Time is an important aspect of all real-world phenomena. Events occur at specific points
SQL Anywhere 12 New Features Summary
SQL Anywhere 12 WHITE PAPER www.sybase.com/sqlanywhere Contents: Introduction... 2 Out of Box Performance... 3 Automatic Tuning of Server Threads... 3 Column Statistics Management... 3 Improved Remote
Efficiently Identifying Inclusion Dependencies in RDBMS
Efficiently Identifying Inclusion Dependencies in RDBMS Jana Bauckmann Department for Computer Science, Humboldt-Universität zu Berlin Rudower Chaussee 25, 12489 Berlin, Germany [email protected]
Course ID#: 1401-801-14-W 35 Hrs. Course Content
Course Content Course Description: This 5-day instructor led course provides students with the technical skills required to write basic Transact- SQL queries for Microsoft SQL Server 2014. This course
Architectural patterns for building real time applications with Apache HBase. Andrew Purtell Committer and PMC, Apache HBase
Architectural patterns for building real time applications with Apache HBase Andrew Purtell Committer and PMC, Apache HBase Who am I? Distributed systems engineer Principal Architect in the Big Data Platform
Introducing Microsoft SQL Server 2012 Getting Started with SQL Server Management Studio
Querying Microsoft SQL Server 2012 Microsoft Course 10774 This 5-day instructor led course provides students with the technical skills required to write basic Transact-SQL queries for Microsoft SQL Server
Querying Microsoft SQL Server 20461C; 5 days
Lincoln Land Community College Capital City Training Center 130 West Mason Springfield, IL 62702 217-782-7436 www.llcc.edu/cctc Querying Microsoft SQL Server 20461C; 5 days Course Description This 5-day
Execution Plans: The Secret to Query Tuning Success. MagicPASS January 2015
Execution Plans: The Secret to Query Tuning Success MagicPASS January 2015 Jes Schultz Borland plan? The following steps are being taken Parsing Compiling Optimizing In the optimizing phase An execution
White Paper. Optimizing the Performance Of MySQL Cluster
White Paper Optimizing the Performance Of MySQL Cluster Table of Contents Introduction and Background Information... 2 Optimal Applications for MySQL Cluster... 3 Identifying the Performance Issues.....
Maksym Iaroshenko Co-Founder and Senior Software Engineer at Eltrino. Magento non-mysql implementations
Maksym Iaroshenko Co-Founder and Senior Software Engineer at Eltrino Magento non-mysql implementations http://ice.eltrino.com/ MySQL? Magento OOB supports MySQL only Since release of Magento CE 1.6 and
Oracle Database: SQL and PL/SQL Fundamentals
Oracle University Contact Us: +966 12 739 894 Oracle Database: SQL and PL/SQL Fundamentals Duration: 5 Days What you will learn This Oracle Database: SQL and PL/SQL Fundamentals training is designed to
InfiniteGraph: The Distributed Graph Database
A Performance and Distributed Performance Benchmark of InfiniteGraph and a Leading Open Source Graph Database Using Synthetic Data Objectivity, Inc. 640 West California Ave. Suite 240 Sunnyvale, CA 94086
Big Data, Fast Processing Speeds Kevin McGowan SAS Solutions on Demand, Cary NC
Big Data, Fast Processing Speeds Kevin McGowan SAS Solutions on Demand, Cary NC ABSTRACT As data sets continue to grow, it is important for programs to be written very efficiently to make sure no time
