29
SQL – OLAP 7. óra

SQL – OLAP 7. óra

Embed Size (px)

DESCRIPTION

SQL – OLAP 7. óra. Hatékonysági kérdések. Időigényes műveletek (ahol lehet javítani):  f(v) (C) ,  f(D.a) (C),  D.a (C) ,  D, aggr (C) (és ahol nem…) C 1  C 2. Adott kulcsú cellák megkeresése. A: szekvenciális keresés ? reménytelen !!. k1. k2. k3. v1. v2. v3. - PowerPoint PPT Presentation

Citation preview

Page 1: SQL – OLAP 7. óra

SQL – OLAP7. óra

Page 2: SQL – OLAP 7. óra

Hatékonysági kérdések

Időigényes műveletek (ahol lehet javítani):f(v)(C) , f(D.a)(C), D.a(C), D, aggr(C)

(és ahol nem…) C1 C2

Adott kulcsú cellák megkeresése

k1 k2 k3 v1 v2 v3

A: szekvenciális keresés ? reménytelen !!

B: index alapú keresés ? k1+k2+k3 : ha mindegyik kulcs adott költség : log (N3) ez OK !!

de asszimnetrikus !

Page 3: SQL – OLAP 7. óra

Hatékonysági kérdések

k1 k2 k3 v1 v2 v3

Több-dimenziós keresőfa : minden szint egy-egy dimenzióhoz rendelt ciklikusan

k1

k2

k3

k1

k2

Page 4: SQL – OLAP 7. óra

ha valamelyik kulcstetszőleges (intervallum)akkor több ágon fut a keresés

Ha keresési feltétel: k1 = %, k2=x, k3=%csomópontok száma: L,L2,L3 (L a B-fa fokszáma)költség: első k2 szinten: L, második k2 szinten: L*L2,

i. k2 szinten: L2*i+1 ez is túl nagy még !!!

Hatékonysági kérdések

Page 5: SQL – OLAP 7. óra

Grid fileSzimmetrikus az egyes dimenziókra

Hash függvény jelöli ki a rekeszt

h1(k1)

h2(k2)

Ha túlcsordul, egyik dimenzió mentén felhasad

Lemez blokk

Hátránya : reláció-őrző hash függvény kellene

Hatékonysági kérdések

Page 6: SQL – OLAP 7. óra

Hatékonysági kérdések

Legbiztosabb megoldás: többszörös indexelés, többszintű pointer láncolat

k1 index k2 index k1-k2 index

Page 7: SQL – OLAP 7. óra

Dorog

Miskolc

Baja

Audi Opel Fiat Lada

Fizikai megvalósítás

7,2 6,1 7,0 3,2

9,1 7,4

7,2 4,2

K

G P

LA F O

többletköltség?

Page 8: SQL – OLAP 7. óra

Hatékonysági kérdések

k1 index Keresés menete: - megfelelő szintű index kiválasztása - érték megkeresés (log (Nk))- fő pointer-lánc bejárása- mellék pointer-láncok bejárása

Csak a szükséges elemeket érinti

Page 9: SQL – OLAP 7. óra

Indexelés: sparse - dense index

ritka index: nem minden rekord indexelt(index szekvenciális)

feltétel: rendezettség szélső elemre mutat

lsd: cluster index

sűrű index: minden rekord indexelt

idő:logM(N/k) + [k]= logMN - logMk + [k]

hely: N/k/M blokk

Page 10: SQL – OLAP 7. óra

Indexelés: bitmap index

értékek

A

B

C

rekordok

0

1

szűk domain esetéretámogatja a logikai operátorokatgyakran társítják a projekciós index-szel

C

rekordok

érték B

1

0

táblázatos tárolás

Page 11: SQL – OLAP 7. óra

Összetett feltételek, több kulcs esetére is alkalmas a bitmap index

fetétel: K1 = 5 and K2 > 5

B-fa szerint: K1=5 megkeresése majd szekvencia a K2> 5 ellenőrzésre

0

1

1

05

K1

0

1

1

06

7

+ metszetképzés / unió / komplementer

K2

Page 12: SQL – OLAP 7. óra

Bitindexek típusai

normál mód: minden érték egy sor

1

2

3

0

1

1

0

0

0

0

0

1

előnyös egzakt érték keresésnél

tartomány mód: minden érték több sor (a tőle nagyobb értékek)

1

2

3

0

1

1

0

0

1

1

1

1

előnyös tartomány érték keresésnél

Page 13: SQL – OLAP 7. óra

Bitindexek típusai

dekompozíciós mód: a tábla több résztáblára bontott

<rn,…,r2,r1> szám n-es alapján képzi a bitmintát:

C = b1 + b2*r1 + … + bn+1*rn

Pl. n =1 , b1 = 3 –hez: 5 = 1*3 + 2

0

1

1

0

0

0

0

0

1

0

1

0

1

0

0

0

0

1

0

1

2

0

1

2

rn = D/szorzatn-1(ri)

Page 14: SQL – OLAP 7. óra

Bitindexek típusai

hierarchikus bitindex: a zéró helyek felsőbb szinten jelzi

1

0

1

1

0

0

0

0

0

10

1

2

00 0 0 0 0 0 1 0

0 1 01

1 1 01

Page 15: SQL – OLAP 7. óra

Join index

A kapcsolódó rekordpárok kijelölése kulcs szerint rendezve

Nem kell explicit keresést végezni

TELEPHELYcimnev

TERMEKcimnevOSSZDB

SELEJTDB

TELEP TERMEKOSSZDB

B-fa

tény-kulcshoz dimenzió-kulcsot vagy dimenzió-kulcshoz tény-kulcsot rendel

Page 16: SQL – OLAP 7. óra

Cella keresési költségek

B-fa

teljes kulcs intervallum

logMN

módszer

Grid-file

bitmap

részkulcs

1 fa: Nk-fa: K’ logMN + K’*N’

1

(metszetek)

logMN+N/(2B)

HK-K’ (H/2)K

N :elemszám, M fokszám V : értékek száma, K’ kiválasztott dim. dbB: blokkméret, H: bucketek száma, K:dimenziók száma

V*N/B’ V’*N/B’ V*N/2/B’

Page 17: SQL – OLAP 7. óra

Aggregációs számítások

SELECT sum(fiz) FROM dolgozok WHERE beosztas = ‘irnok’

- alap módszer: a kijelölt rekordok közvetlen beolvasása

N: rekord db., B: blokk méret, R: eredmény rekord db.érintendő blokkok száma: O(N/B * (1 – e-RN/B))

nem egyszerű feladata = szummaB(B* P(B))P(B) = ((N:B))szorzati((S:i)) : 1<= i <= S

R

N/B

a feltételt teljesítő rekordok pozíciót ismertnek tekintjük (Bf)

Page 18: SQL – OLAP 7. óra

Aggregációs számítások

- projekciós index módszer: a kijelölt mező értékeket a a projekciós indexből vesszük be.

előny: kevesebb blokk olvasás (B’ >> B)

O(N/B’ * (1 – e-RN/B’))

- mező indexen keresztül (B’’ >> B’):sum = 0foreach v in DOM(fiz) { Bv = foundset az index alapján sum = sum + v*|Bf metszet Bv |}

O(V*N/B’’ + N/B’)

Page 19: SQL – OLAP 7. óra

Aggregációs számítások

A költség függ az aggregáció jellegétől

SELECT max(fiz) FROM dolgozok WHERE beosztas = ‘irnok’

- közvetlen elérés:O(N/B * (1 – e-RN/B))

- bitmap index az elemre (metszet a Bf-fel):O(V*N/B’’ )

- projekciós index:O(N/B’ * (1 – e-RN/B’))

- mező indexO(V/2*N/B’’ + N/B’)

Page 20: SQL – OLAP 7. óra

Hatékonysági kérdések

Az aggregáció gyorsítása: elő-aggregációk tárolása

elemi érték (k1,k2)

k1 szerinti aggregáció

k2 szerinti aggregáció

k1.k2 szerinti aggregáció

Page 21: SQL – OLAP 7. óra

Cube-tree struktúra

az alapadatok és az aggregált adatok hatékony elérésére szolgál

alapadat

aggregált adatok

v(x,y,z)

v(x,y,0)

az adatok R-tree struktúrában tároltak

v(0,0,0)

Page 22: SQL – OLAP 7. óra

Előaggregáció előnye:gyorsabb válaszadás

Hátránya:több helyfoglaláslassabb módosítás (load)

Cél az egyéb költségek minimalizálása

Csak a szükséges előszámításokat végezzük el

Tapasztalat: egyes aggregációk kiszámíthatók más aggregációs értékekből

A, Sum(C) A,B, Sum(C) A,B,C, Sum(C)

Származtatási háló ez egyes aggregációs szintek között

Page 23: SQL – OLAP 7. óra

A,B,C

A,B A,C B,C

A B C

Minden view-hoz helyköltség, minden élhez időköltség rendelhető

hely-költség + idő-költség => minimális

Page 24: SQL – OLAP 7. óra

Greedy algoritmus

addig növeli a bevont elemek halmazát, amíg egy szigorúkorlátba nem ütközik

S = {alap-view}loop { vi = argmaxi {B(vi,S) : vi S} S = S {vi}}

B(v,S) = w < v Bw

Bw = CostS(w) - Costv(w), ha CostS(w) > Costv(w) 0 , különben

Page 25: SQL – OLAP 7. óra

0.7

0.5 0.2 0.4

0.4 0.4

2

3

13

1 45

21

2

2 30.2

0.2

Az eredő nyereség kiszámítsánál a v hivatkozási valószínűségétis figyelembe lehet venni.

Page 26: SQL – OLAP 7. óra

Lekérdezések kapcsolati viszonya

Milyen feltételek mellett lehet egy Q lekérdezést másV view-kból leszármaztatni?

relációk: view-k egyenértékűsége és view-k egymásbafoglalása

Általános esetre nem ismert még a megoldás

speciális eset: pontos illeszkedés V1 < V2:- V1 mezői, hivatkozásai V2-ben is benne vannak- azonos aggregáció- V2 szelekciói V1-ben is benne vannak- V1 szelekciói szűkebbek

V2: SELECT a,sum(b), avg(c), d FROM t1 WHERE t1.c > 5 GROUP BY a

V1: SELECT a,sum(b) FROM t1 WHERE t1.c > 5 AND t1.d = 5GROUP BY a

Page 27: SQL – OLAP 7. óra

Hatékonyabb művelet optimalizálás

a hagyományos QGM optimalizálás is módosulhateddig csak SPJ műveleteket vettünk

: szelekcio(proj) - join – szelekcio – csoportképzés? –aggregáció?

SELECT B.b, sum(A.a) FROM A,B,C WHERE A.m=B.n AND A.h = C.f AND C.l = x GROUP BY B.b

De!Az A és B tábla join-ja közben lehet aggregálni és csoportosítani,nem kell utána újra átfutni a táblát

Page 28: SQL – OLAP 7. óra

Hatékonyabb művelet optimalizálás

szabály : a csoportosítás lesüllyesztése minél lentebbre

SELECT B.b, sum(A.a) FROM A,B,C WHERE A.m=B.n AND A.h = C.f AND C.l = x GROUP BY B.b

alap left-deep join

aggregáció

ekvijoin

scan

transzformáció

Page 29: SQL – OLAP 7. óra

Lesüllyesztés feltételei

- a csomópont felett csak kulcs- idegenkulcs alapú join műveletek vannak- a csomópontban minden aggregációs mező szerepel- minden felettes join mező egyben csoportképzési mező is

ez szűk esetben teljesül

kapcsolt lesüllyesztések: - több csomópontra szétbontott

select C.n,sum(A.c) from A,B,Cwhere A.x = B.x and B.y=C.y group by C.n

C.a

C

A

A.xB

B.y

sum(A.c)

sum(A.c)

sum(A.c)

A B C