appendix: how the envs and qres stacks work ( m0 example)
DESCRIPTION
Appendix: how the ENVS and QRES stacks work ( M0 example). Presentation prepared for OMG Object Database Technology Working Group OMG TECHNICAL MEETING, Anaheim, CA USA September 25-29, 2006 by Prof . Kazimierz Subieta Polish-Japanese Institute of Information Technology, Warsaw, Poland - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/1.jpg)
K.Subieta. SBA and SBQL, appendix, slide 1 Sept. 2006
Appendix: how the ENVS and QRES stacks work (M0 example)
Presentation prepared for OMG Object Database Technology Working Group
OMG TECHNICAL MEETING, Anaheim, CA USASeptember 25-29, 2006
by
Prof. Kazimierz Subieta
Polish-Japanese Institute of Information Technology, Warsaw, Poland [email protected]://www.ipipan.waw.pl/~subietaSBA/SBQL pages: http://www.sbql.pl
![Page 2: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/2.jpg)
K.Subieta. SBA and SBQL, appendix, slide 2 Sept. 2006
Query addressing a tiny database
• Query: For each department get its reference and the average sal of its employees.
• SBQL: Dept join avg((employs.Emp).sal)
• Tiny database:
• Expected result: bag{ struct{i17, 2500}, struct{i22, 1450} }
![Page 3: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/3.jpg)
K.Subieta. SBA and SBQL, appendix, slide 3 Sept. 2006
Query syntax tree and execution scenarioDept join avg( ( employs . Emp ) . sal )
join
Dept avg
.
. sal
employs Emp
2nd dot
1st dot
join 1st dot 2nd dot avg
1st Dept
2nd Dept
1st employs
2nd employs
1st Emp
2nd Emp
3rd Emp3rd employs
![Page 4: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/4.jpg)
K.Subieta. SBA and SBQL, appendix, slide 4 Sept. 2006
0Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
empty
Start
![Page 5: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/5.jpg)
K.Subieta. SBA and SBQL, appendix, slide 5 Sept. 2006
1Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
After binding Dept
![Page 6: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/6.jpg)
K.Subieta. SBA and SBQL, appendix, slide 6 Sept. 2006
2Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
join starts 1st loop of the iteration over top of QRES
dname(i18) loc(i19) loc(i20) employs(i21)
nested
![Page 7: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/7.jpg)
K.Subieta. SBA and SBQL, appendix, slide 7 Sept. 2006
3Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
After binding employs
i21
![Page 8: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/8.jpg)
K.Subieta. SBA and SBQL, appendix, slide 8 Sept. 2006
4Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
i21
dot starts iteration on top of QRES
Emp(i1)nested
![Page 9: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/9.jpg)
K.Subieta. SBA and SBQL, appendix, slide 9 Sept. 2006
5Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
i21
Emp(i1)
After binding Emp
i1
![Page 10: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/10.jpg)
K.Subieta. SBA and SBQL, appendix, slide 10 Sept. 2006
6Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
Closing the iteration by the first dot
i1
![Page 11: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/11.jpg)
K.Subieta. SBA and SBQL, appendix, slide 11 Sept. 2006
7Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
i1
Second dot starts iteration over top of QRES
name(i2) sal(i3) worksIn(i4)
nested
![Page 12: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/12.jpg)
K.Subieta. SBA and SBQL, appendix, slide 12 Sept. 2006
8Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
i1
name(i2) sal(i3) worksIn(i4)
After binding sal
i3
![Page 13: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/13.jpg)
K.Subieta. SBA and SBQL, appendix, slide 13 Sept. 2006
9Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
i3
Closing the iteration by the second dot
![Page 14: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/14.jpg)
K.Subieta. SBA and SBQL, appendix, slide 14 Sept. 2006
10Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
2500
After performing avg on top of QRES
![Page 15: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/15.jpg)
K.Subieta. SBA and SBQL, appendix, slide 15 Sept. 2006
11Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i18) loc(i19) loc(i20) employs(i21)
2500
join forms the first partial result
struct{ i17, 2500 }Partial result of join:
![Page 16: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/16.jpg)
K.Subieta. SBA and SBQL, appendix, slide 16 Sept. 2006
After ending the 1st loop by join
12Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
struct{ i17, 2500 }Partial result of join:
![Page 17: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/17.jpg)
K.Subieta. SBA and SBQL, appendix, slide 17 Sept. 2006
13Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
join starts 2nd loop of the iteration over top of QRES
dname(i23) loc(i24) employs(i25) employs(i26)
nested
struct{ i17, 2500 }Partial result of join:
![Page 18: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/18.jpg)
K.Subieta. SBA and SBQL, appendix, slide 18 Sept. 2006
After binding employs
14Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
struct{ i17, 2500 }Partial result of join:
![Page 19: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/19.jpg)
K.Subieta. SBA and SBQL, appendix, slide 19 Sept. 2006
15Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
First dot starts 1st loop of iteration on top of QRES
nestedEmp(i5)
struct{ i17, 2500 }Partial result of join:
![Page 20: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/20.jpg)
K.Subieta. SBA and SBQL, appendix, slide 20 Sept. 2006
After binding Emp
16Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
Emp(i5)
struct{ i17, 2500 }Partial result of join:
i5
![Page 21: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/21.jpg)
K.Subieta. SBA and SBQL, appendix, slide 21 Sept. 2006
Forming 1st partial result of the first dot
17Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
struct{ i17, 2500 }Partial result of join:
i5Partial result of dot:
![Page 22: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/22.jpg)
K.Subieta. SBA and SBQL, appendix, slide 22 Sept. 2006
18Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
struct{ i17, 2500 }Partial result of join:
i5Partial result of dot:
First dot starts 2nd loop of iteration on top of QRES
nestedEmp(i9)
![Page 23: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/23.jpg)
K.Subieta. SBA and SBQL, appendix, slide 23 Sept. 2006
19Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
struct{ i17, 2500 }Partial result of join:
i5Partial result of dot:
Emp(i9)
After binding Emp
i9
![Page 24: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/24.jpg)
K.Subieta. SBA and SBQL, appendix, slide 24 Sept. 2006
20Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i25 , i26 }
struct{ i17, 2500 }Partial result of join:
i5Partial results of dot: i9
Forming 2nd partial result of the first dot
![Page 25: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/25.jpg)
K.Subieta. SBA and SBQL, appendix, slide 25 Sept. 2006
21Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
Closing iteration by the first dot, forming its result
![Page 26: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/26.jpg)
K.Subieta. SBA and SBQL, appendix, slide 26 Sept. 2006
22Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
Second dot starts 1st loop of iteration on top of QRES
nested
name(i6) sal(i7) worksIn(i8)
![Page 27: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/27.jpg)
K.Subieta. SBA and SBQL, appendix, slide 27 Sept. 2006
23Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
name(i6) sal(i7) worksIn(i8)
After binding sal
i7
![Page 28: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/28.jpg)
K.Subieta. SBA and SBQL, appendix, slide 28 Sept. 2006
24Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
Forming 1st partial result of the second dot
i7Partial result of dot:
![Page 29: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/29.jpg)
K.Subieta. SBA and SBQL, appendix, slide 29 Sept. 2006
25Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
i7Partial result of dot:
Second dot starts 2nd loop of iteration on top of QRES
nested
name(i10) sal(i11) address(i12) worksIn(i16)
![Page 30: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/30.jpg)
K.Subieta. SBA and SBQL, appendix, slide 30 Sept. 2006
26Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
i7Partial result of dot:
name(i10) sal(i11) address(i12) worksIn(i16)
After binding sal
i11
![Page 31: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/31.jpg)
K.Subieta. SBA and SBQL, appendix, slide 31 Sept. 2006
27Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i5 , i9 }
struct{ i17, 2500 }Partial result of join:
i7Partial result of dot: i11
Forming 2nd partial result of the second dot
![Page 32: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/32.jpg)
K.Subieta. SBA and SBQL, appendix, slide 32 Sept. 2006
28Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
bag{ i7 , i11 }
struct{ i17, 2500 }Partial result of join:
Closing iteration by the second dot, forming its result
![Page 33: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/33.jpg)
K.Subieta. SBA and SBQL, appendix, slide 33 Sept. 2006
29Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
1450
struct{ i17, 2500 }Partial result of join:
After performing avg on top of QRES
![Page 34: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/34.jpg)
K.Subieta. SBA and SBQL, appendix, slide 34 Sept. 2006
30Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ i17 , i22 }
dname(i23) loc(i24) employs(i25) employs(i26)
1450
struct{ i17, 2500 }Partial results of join:
join forms 2nd partial result
struct{ i22, 1450 }
![Page 35: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/35.jpg)
K.Subieta. SBA and SBQL, appendix, slide 35 Sept. 2006
31Dept join avg( ( employs . Emp ) . sal )
Emp(i1) Emp(i5) Emp(i9) Dept(i17) Dept(i22)
ENVS QRES
bag{ struct{ i17, 2500}, struct{ i22 , 1450} }
Closing the iteration by join, forming the final result
![Page 36: Appendix: how the ENVS and QRES stacks work ( M0 example)](https://reader035.vdocuments.us/reader035/viewer/2022062516/56812bc7550346895d9012e5/html5/thumbnails/36.jpg)
K.Subieta. SBA and SBQL, appendix, slide 36 Sept. 2006
In closing …
• Please note that this evaluation scenario concerns the formal semantics executed by the abstract machine.– Our goal is clear, universal and free of ambiguities semantic
specification rather than performance.
• In real implementation there are many obvious optimizations.
• The evaluation process is also the subject of many sophisticated optimizations (rewriting, indices, caching,…) .
• The entire process is executed in the main memory, hence the computations are not critical.– Critical computations concern the access to external storage and
network, and avoiding unnecessary (redundant) computations.
– This is the subject of major SBA optimization methods.