Απνζήθεο Γεδνκέλσλ θαη Δμόξπμε Γεδνκέλσλ: Απνζήθεο Γεδνκέλσλ: Μέξνο Β http://datalab.csd.auth.gr/~gounaris/courses/dwdm/
Δπραξηζηίεο Οη δηαθάλεηεο ηνπ καζήκαηνο ζε γεληθέο γξακκέο αθνινπζνύλ ην ζύγγξακκα «Δηζαγσγή ζηελ Δμόξπμε θαη ηηο Απνζήθεο Γεδνκέλσλ» Αξρηθέο εθδόζεηο από κέξνο ησλ δηαθαλεηώλ εηνηκάζηεθαλ από ηνλ Γξ. Α. Ναλόπνπιν. Xξεζηκνπνηήζεθε επηπιένλ πιηθό από ηα βηβιία «Introduction to Data Mining» ησλ Tan, Steinbach, Kumar, θαη «Data Mining: Concepts and Techniques» ησλ Jiawei Han, Micheline Kamber. 2
Θέκαηα πξνο εμέηαζε Πεξίιεςε εηζαγσγηθώλ ελλνηώλ-τύπνη ζρεκάησλ Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Μεξηθή πινπνίεζε θπβνεηδώλ Δπηινγή θπβνεηδώλ γηα απάληεζε Καηάινγνη-Δπξεηήξηα Γξήγνξε Απάληεζε ζε Δξσηήκαηα Τξόπνη ππνινγηζκνύ θπβνεηδώλ 3
Τί είλαη Απνζήθε Γεδνκέλσλ - επαλάιεςε Έρεη νξηζζεί κε πνιινύο δηαθνξεηηθνύο ηξόπνπο αιιά όρη κε ηελ απαξαίηεηε ζαθήλεηα. Μία ΒΓ γηα ππνζηήξημε ιήςεο απνθάζεσλ πνπ δηαηεξείηαη μερσξηζηά από ηηο επηρεηξεζηαθέο ΒΓ. Υπνζηήξημε επεμεξγαζίαο πιεξνθνξηώλ κέζσ κίαο πιαηθόξκαο νινθιεξσκέλσλ, ηζηνξηθώλ δεδνκέλσλ γηα αλάιπζε. «Μία πξνζαλαηνιηζκέλε πξνο ην ζέκα (subject-oriented), νινθιεξσκέλε (integrated), ρξνληθά κεηαβαιιόκελε (time-variant), θαη κε πηεηηθή ζπιινγή δεδνκέλσλ κε ζθνπό ηελ ππνζηήξημε ιήςεο απνθάζεσλ.» -W. H. Inmon Απνζήθεπζε δεδνκέλσλ: Η δηαδηθαζία αλάπηπμεο θαη ρξεζηκνπνίεζεο Απνζεθώλ Γεδνκέλσλ 4
Γηαθνξέο ΑΓ θαη ΒΓ Χαρακτηριστικό Σχεζιακό ΣΓΒΓ Αποθήκη Γεδομένων Σκοπός «ηξέμηκν» θαζεκεξηλώλ δηεξγαζηώλ Υπνζηήξημε απνθάζεσλ Λειηοσργία Γηεθπαηξέσζε ζπλαιιαγώλ Δμαγσγή πιεξνθνξίαο Χρήζηες Καηώηεξνη εξγαδόκελνη, DBAs Υςειόβαζκα ζηειέρε, αλαιπηέο Αριθμός Χρηζηών (κέρξη) ρηιηάδεο (κέρξη) εθαηνληάδεο Δεδομένα Τξέρνληα, απνκνλσκέλα Ιζηνξηθά, νινθιεξσκέλα Ενδεικηικό Μέγεθος <100GΒ 10s-100s TB Στεδιαζμός ΟΣ θαλνληθνπνίεζε Μνληει/ζε δηαζηάζεσλ, απνθαλ/ζε Χρήζη Δπαλαιεπηηθή Ad-hoc Προζπέλαζη Αλάγλσζε/εγγξαθή (θπξίσο) αλάγλσζε Ενημέρωζη Σπλερήο Πεξηνδηθή Μονάδα εργαζίας Σύληνκεο, απιέο ζπλαιιαγέο Πεξίπινθα εξσηήκαηα Χρόνοι διεκπαιρέωζης <sec Mins-hours #προζπελ. εγγραθές 10s 1000000s Μονάδα απόδοζης Σπλαιιαγέο/sec Φξόλνο απόθξηζεο ACID Ναη Όρη Καηάλογοι Β-δέλδξα Καηάινγνη bitmap 5
Από ηνπο πίλαθεο θαη ηα ινγηζηηθά θύιια ζηνπο θύβνπο δεδνκέλσλ Μία ΑΓ βαζίδεηαη ζε έλα ΠΟΛΥΓΙΑΣΤΑΤΟ ινγηθό κνληέιν, κε ην νπνίν ηα δεδνκέλα είλαη ζηε κνξθή θύβνπ δεδνκέλσλ. Έλαο θύβνο δεδνκέλσλ (π.ρ., πσιήζεηο) επηηξέπεη ηε κνληεινπνίεζε θαη ηελ παξνπζίαζε ζε δηάθνξεο δηαζηάζεηο. Ιεραρχίες Λειτοσργίες OLAP: rollup, drill down, pivot, slice, dice 6
Κύβνο Γεδνκέλσλ Κύβνο δεδνκέλσλ: Πιέγκα Κπβνεηδώλ (cuboids) all 0-D(apex) cuboid time item location supplier 1-D cuboids time, item time, location item, location time, supplier item, supplier time, location, supplier location, supplier 2-D cuboids 3-D cuboids time, item, location time, item, supplier item, location, supplier time, item, location, supplier 4-D(base) cuboid 7
Μεηαδεδνκέλα Τα κεηαδεδνκέλα ηεο ΑΓ νξίδνπλ ηα αληηθείκελα κέζα ζηελ ΑΓ. Πεξηιακβάλνπλ: Πεξηγξαθή ηεο δνκήο ηεο ΑΓ Σρήκα, όςεηο, δηαζηάζεηο, ηεξαξρίεο, ηνπνζεζίεο αγνξώλ δεδνκέλσλ, πεξηερόκελα,... Λεηηνπξγηθά κεηαδεδνκέλα Καηαγσγή δεδνκέλσλ - data lineage: ηζηνξηθό ησλ δεδνκέλσλ από άιιεο πεγέο θαη ησλ κεηαζρεκαηηζκώλ, ελεκεξόηεηα (active, archived, or purged), παξαθνινύζεζε (ζηαηηζηηθά ρξήζεο, αλαθνξέο ιαζώλ, έιεγρνη). Αιγόξηζκνη πεξίιεςεο. Η ζύλδεζε ηνπ επηρεηξεζηαθνύ πεξηβάιινληνο κε ηελ ΑΓ. Γεδνκέλα ζρεηηθά κε ηελ απόδνζε. Γεδνκέλα ζρεηηθά κε ηελ θπξηόηεηα, ηελ πνιηηηθή ηηκνιόγεζεο, θιπ. 8
Τξεηο ηύπνη ζρεκάησλ Σρήκα αζηέξα: Έλαο πίλαθαο γεγνλόησλ ζηε κέζε πνπ ζπλδέεηαη κε πνιινύο πίλαθεο δηαζηάζεσλ. Σρήκα ληθάδαο: Τξνπνπνίεζε ηνπ ζρήκαηνο αζηέξα κε ηελ έλλνηα όηη θάπνηνη πίλαθεο δηαζηάζεσλ είλαη θαλνληθνπνηεκέλνη, ζρεκαηίδνληαο ζρήκα ρηνλν-ληθάδαο. Αζηεξηζκνί γεγνλόησλ: Πνιιαπινί πίλθαθεο γεγνλόησλ κνηξάδνληαη πίλαθεο δηαζηάζεσλ. 9
Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Relational OLAP (ROLAP) Φξήζε ζρεζηαθνύ (ή εθηεηακέλνπ ζρεζηαθνύ) ΣΓΒΓ γηα ηελ απνζήθεπζε θαη δηαρείξηζε ηνπ θύβνπ + OLAP middleware 1 πίλαθαο γεγνλόησλ + μερσξηζηνί πίλαθεο γηα δηαζηάζεηο. Βειηηζηνπνηεκέλν backend ΣΓΒΓ, κε απαξαίηεηε ε δεκηνπξγία θύβνπ, ύπαξμε πξνηύπσλ. Πνιύ θαιή θιηκάθσζε, ελδερνκέλσο κεησκέλε ηαρύηεηα. Multidimensional OLAP (MOLAP) Ο πίλαθαο γεγνλόησλ απνζεθεύεηαη ζε (αξαηνύο) πνιπδηάζηαηνπο πίλαθεο πνπ έρνπλ ηελ ίδηα έλλνηα κε ηνπο πίλαθεο π.ρ., ζηε C. Πνιύ γξήγνξε εθηέιεζε πξάμεσλ/άκεζε πξόζβαζε ζηα θειηά. Απαηηείηαη ζπκπίεζε, κεγάινο ρξόλνο δεκηνπξγίαο θύβνπ, δελ ππάξρνπλ πξόηππα. 10
Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Hybrid OLAP (HOLAP) (e.g., Microsoft SQLServer) Μεγαιύηεξε επειημία: Φακειό επίπεδν: relational Υςειόηεξν επίπεδν: array Σπλδπαζκόο γξήγνξεο εθηέιεζεο θαη θιηκάθσζεο 11
Υινπνίεζε θπβνεηδώλ Αλ k δηαζηάζεηο θαη δελ ππάξρνπλ ηεξαξρίεο, ηόηε ππάξρνπλ ζπλνιηθά 2 k θπβνεηδή (πνπ αιιηώο νλνκάδνληαη θαη όςεηο). Αλ θάζε δηάζηαζε έρεη L i επίπεδα ηεξαξρίαο, ηόηε Π(L i +1), i=1..k Η πινπνίεζε κπνξεί λα γίλεη είηε ζε ROLAP (π.ρ., πίλαθεο πινπνηεκέλσλ όςεσλ), είηε ζε MOLAP, κε επέθηαζε ηνπ βαζηθνύ θύβνπ. 12
Δπηινγέο πινπνίεζεο Φπζηθή πινπνίεζε όινπ ηνπ θύβνπ Καιύηεξνο ρξόλνο απόθξηζεο. Αιιά όρη ξεαιηζηηθή ιύζε γηα κεγάινπο θύβνπο ιόγσ ησλ πνιύ πςεινύ θόζηνπο ρώξνπ, δεκηνπξγίαο θύβνπ, ζπληήξεζεο. Καζόινπ πινπνίεζε Γηα θάζε εξώηεκα, πξνζπέιαζε ζηα βαζηθά (raw) δεδνκέλα γηα ηνλ ππνινγηζκό θάζε θειί (cell). Ιζρπξόο αληίθηππνο ζην ρξόλν απόθξηζεο, δίλεη κεγάιε ζεκαζία ζην ζύζηεκα πνπ βαζίδεηαη (RDBMS ζε ROLAP) Υινπνίεζε κέξνπο ηνπ θύβνπ Οη ηηκέο πνιιώλ θειηώλ είλαη ππνινγίζηκεο από άιια θειηά ηνπ θύβνπ (dependent cells) Ο αξηζκόο ησλ πινπνηεκέλσλ θειηώλ εμαξηάηαη από ηνπο πεξηνξηζκνύο ρώξνπ 13
Πιενλέθηεκα κεξηθήο πινπνίεζεο θόζηνο time space #πινπνηεκέλεο όςεηο (materialized views) 14
Πεξηνξηζκνί ρώξνπ - δεηήκαηα Πόζα θειηά πξέπεη λα πινπνηεζνύλ γηα «θαιή» απόδνζε ζηελ επεμεξγαζία εξσηεκάησλ; Γεδνκέλνπ ζπγθεθξηκέλνπ ρώξνπ, πνηεο όςεηο πξέπεη λα πινπνηεζνύλ ώζηε λα ειαρηζηνπνηεζεί ην κέζν θόζηνο εξσηεκάησλ; Αλ αλερόκαζηε X% ππνβάζκηζε ηνπ κέζνπ θόζηνπο εξσηεκάησλ, πόζν ρώξν κπνξνύκε λα γιηηώζνπκε Σύγθξηζε κε ηελ πεξίπησζε νιηθήο πινπνίεζεο 15
lattice (δηθηπσηό) πιαίζην Τν V1 εμαξηάηαη από ην V2 (V1 V2) αλ θαη κόλν αλ ην V1 κπνξεί λα απαληεζεί κε απνηειέζκαηα ηνπ V2 (part) (part, cust) Ο ηειεζηήο θαζνξίδεη κεξηθή ηαμηλόκεζε (partial order) Μεξηθή ηαμηλόκεζε + top element (από ην νπνίν όια εμαξηώληαη) => δίθηπν (lattice) Σρέζεηο: O b είλαη πξόγνλνο ηνπ a: ancestor(a) = {b a b} Ο b είλαη απόγνλνο ηνπ a: descendent(a) = {b b a} O b είλαη ν επόκελνο θόκβνο ηνπ a: next(a) = {b a b, c: a c c b} 16
Παξάδεηγκα psc pc ps sc p: part s: supp c: cust p s c none 17
Κέξδνο από κεξηθή πινπνίεζε Τν θόζηνο είλαη αλάινγν ηνπ αξηζκνύ ησλ γξακκώλ ηεο όςεο psc 6M επόκελε δηαθάλεηα. Αλ έρσ πινπνηήζεη ην psc pc 6M ps 0.8M sc 6M Γελ ρξεηάδεηαη λα πινπνηεζηνύλ ηα pc, sc ην psc πεξηέρεη ηηο απαληήζεηο γηα pc, sc κε ην ίδην θόζηνο (6M) p 0.2M s 0.01M c 0.1M Γιηηώλεη θαλείο 12M θαη ρξεηάδεηαη κόλν 7.11M. none 1 Τν βαζηθό θπβνεηδέο πινπνηείηαη πάληα. 18
Γξακκηθό κνληέιν θόζηνπο Αλ ε απάληεζε γηα V είλαη κέζσ ελόο πξνγόλνπ V A, ηόηε ην θόζηνο ηεο απάληεζεο είλαη: #γξακκέο ηνπ V A --κέζε πεξίπησζε Γει. ην θόζηνο ηζνύηαη κε ζάξσζε ηεο όςεο ηνπ πξνγόλνπ. Πνιιά εξσηήκαηα απαηηνύλ πνιύ ιηγόηεξν από ζάξσζε νιόθιεξεο πινπνηεκέλεο όςεο. Π.ρ., πσιήζεηο ελόο ζπγθεθξηκέλνπ πξντόληνο. Αλ είλαη πινπνηεκέλν ην ζπγθεθξηκέλν θπβνεηδέο θαη ππάξρεη index, ηόηε ην θόζηνο είλαη O(1). Πνιιά εξσηήκαηα όκσο απαηηνύλ πάλσ από κία ζάξσζε πινπνηεκέλεο όςεο Π.ρ., από ηελ πινπνηεκέλε όςε (part, supplier), βξεο όιεο ηηο πσιήζεηο γηα θάζε θνκκάηη => αλάγθε γηα ζπλαζξνηζηηθή ζπλάξηεζε κέζα ζηελ όςε. θαιύηεξε πεξίπησζε: έλα πέξαζκα θαη δεκηνπξγία hash table πνπ ρσξάεη ζηελ κλήκε. Φεηξόηεξε πεξίπησζε: πνιιαπιέο ζαξώζεηο θαη ππνινγηζκόο μερσξηζηά ζε θάζε θνκκάηη. Πξαθηηθά απαηηνύληαη 1-2 ζαξώζεηο. 19
Υπνινγηζκόο κεγέζνπο Έλα γξακκηθό κνληέιν απαηηεί γλώζε ηνπ κεγέζνπο θάζε όςεο. Γελ πινπνηνύκε ηα πάληα, νπόηε πσο ζα γλσξίδνπκε ην κέγεζνο; Φξεζηκνπνηνύκε έλα κηθξό δείγκα, πινπνηνύκε όιεο ηηο όςεηο ζε απηό ην δείγκα θαη ππνινγίδνπκε έηζη ην πξαγκαηηθό κέγεζνο. Γηα ζηαηηζηηθά αλεμάξηεηεο όςεηο, ν ππνινγηζκόο πξαγκαηνπνηείηαη αλαιπηηθά: #rows in (part, supp) =#distinct values in (part) #distinct values in (supp) Πώο βξίζθνπκε ηνλ αξηζκό ησλ δηαθνξεηηθώλ ηηκώλ ζε θάπνην ραξαθηεξηζηηθό; Haas et al: Sampling-based estimation of the number of distinct values of an attribute, VLDB 1995 20
Αιγόξηζκνο βειηηζηνπνίεζεο Απινπνηεκέλν πξόβιεκα βειηηζηνπνίεζεο Διαρηζηνπνίεζε: κέζνο ρξόλνο γηα επεμεξγαζία κηαο όςεο Πεξηνξηζκόο: πινπνίεζε αλαγθαζηηθά k όςεσλ (αλεμαξηήηνπ ρώξνπ πνπ απαηηνύλ) NP-complete: νπζηαζηηθά είλαη Set-Cover Πξνζεγγηζηηθή κέζνδνο: άπιεζηνο (greedy) αιγόξηζκνο Η θαιύηεξε ιύζε βξίζθεηαη βάζεη πξνεγνύκελσλ απνθάζεσλ 21
Ο άπιεζηνο αιγόξηζκνο - εηζαγσγή Έζησ C (v ), ην θόζηνο πξνζπέιαζεο κίαο όςεο v Υπνινγηζκόο ηνπ θέξδνπο (benefit) ηνπ v. ιακβάλνληαο ππόςηλ πσο κπνξεί λα βειηηώζεη ε πινπνίεζε ηεο όςεο ηνλ ππνινγηζκό άιισλ όςεσλ θαη ηελ ίδηα ηελ όςε. Από έλα επηιεγκέλν ζύλνιν όςεσλ S (καδί κε ην βαζηθό θπβνεηδέο) πνπ δελ πεξηιακβάλεη ην v, ην θέξδνο B (v,s ) νξίδεηαη σο εμήο: Γηα θάζε w v, επέιεμε u ώζηε C (u ) = min{c (z ) z S, w z} If C (v ) < C (u ), then B w = C (u ) C (v ); otherwise B w = 0 B (v,s ) = Σ w v B w Οπζηαζηηθά, γηα θάζε w πνπ είλαη απόγνλνο ηνπ v, ζπγθξίλνπκε ην θόζηνο ππνινγηζκνύ ηνπ w ρξεζηκνπνηώληαο (1) ην v θαη (2) ηελ όςε ζην S πνπ παξέρεη ηνλ πην απνδνηηθό ηξόπν ππνινγηζκνύ ηνπ w. Αλ ην v κπνξεί λα απμήζεη ηελ απόδνζε, ηόηε ε δηαθνξά είλαη ην θέξδνο. Γελ ππάξρνπλ αξλεηηθά θέξδε 22
Ο άπιεζηνο αιγόξηζκνο S = {top view of lattice, i.e., basic cuboid} for i =1 to k do //k: αξηζκόο πινπ. όςεσλ select view v S with max B (v,s ) S = S {v } return S 23
Παξάδεηγκα εθαξκνγήο 100 a 50 75 b c 20 30 40 d e f Αξρηθά, S = {a} k+1 = 4 (δει., πξέπεη λα 3 επηπιένλ) g h 1 10 24
Παξάδεηγκα εθαξκνγήο 100 a 50 75 b c 20 30 40 d e f g h 1 10 Αξρηθή επηινγή b: 50 5 = 250 c: 25 5 = 125 d: 80 2 = 160 e: 70 3 = 210 f: 60 2 = 120 g: 99 1 = 99 h: 90 1 = 90 25
Παξάδεηγκα εθαξκνγήο 100 a 50 75 b c 20 30 40 d e f g h 1 10 Second choice c: 25 2 = 50 d: 30 2 = 60 e: 20 3 = 60 f: 60 + 10 = 70 g: 49 1 = 49 h: 40 1 = 40 26
Παξάδεηγκα εθαξκνγήο 100 a 50 75 b c 20 30 40 d e f g h 1 10 Third choice c: 25 1 = 25 d: 30 2 = 60 e: 20 2 + 10 = 50 g: 49 1 = 49 h: 30 1 = 30 27
Παξάδεηγκα εθαξκνγήο 100 a 50 75 b c 20 30 40 d e f g h 1 10 Αλ κόλν ην a πινπνηνύηαλ, ην θόζηνο ζα ήηαλ 8 100 = 800 Τώξα ην θόζηνο είλαη 800-250-70-60, δει. 420 Τπγράλεη ην 420 λα είλαη θαη ε βέιηηζηε ιύζε. Δγγύεζε απόδνζεο: k 1 1 k k 0.63 28
Δπηινγή θπβνεηδώλ γηα απάληεζε εξσηεκάησλ Έζησ όηη έρνπκε λα επεμεξγαζηνύκε κία εξώηεζε πάλσ ζην {brand, province_or_state} κε ζπλζήθε year =2004. Υπάξρνπλ δηαζέζηκα 4 πινπνηεκέλα θπβνεηδή: 1) {year, item_name, city} ίδην ζύλνιν δηαζηάζεσλ: brand item_name(γεθηό) Μεγαιύηεξν θόζηνο: brand item_name, province_or_state city 2) {year, brand, country} Country province_or_state (δελ κπνξεί λα επηιερζεί) 3) {year, brand, province_or_state} Γεθηό 4) {item_name, province_or_state} where year = 2004 Γεθηό Δάλ δελ ππάξρνπλ πνιιέο ηηκεο year πνπ λα ζρεηίδνληαη κε ην Items ζην θύβν, θόζηνο_cuboid3 < θόζηνο_cuboid4. Δάλ ππάξρνπλ απνδνηηθά επξεηήξηα γηα ην cuboid4 ηόηε κπνξεί λα είλαη θαιύηεξν από cuboid3 29
Πόηε ν greedy αιγόξηζκνο δελ απνδίδεη θαιά; αιιά θαη πόηε απνδίδεη; V. Harinarayan, A. Rajaraman, and J. D. Ullman. Implementing data cubes efficiently. In Proc. 1996 ACM- SIGMOD Int. Conf. Management of Data, pages 205-216, Montreal, Canada, June 1996. 30
Θέκαηα πξνο εμέηαζε Πεξίιεςε εηζαγσγηθώλ ελλνηώλ-τύπνη ζρεκάησλ Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Μεξηθή πινπνίεζε θπβνεηδώλ Δπηινγή θπβνεηδώλ γηα απάληεζε Καηάινγνη-Δπξεηήξηα Γξήγνξε Απάληεζε ζε Δξσηήκαηα Τξόπνη ππνινγηζκνύ θπβνεηδώλ 31
Αλάγθε γηα λένπο ηύπνπο θαηαιόγσλ Αλαθεξόκαζηε ζε ζπζηήκαηα ROLAP. Αλάγθε γηα γξήγνξε εθηέιεζε εξσηεκάησλ ζε ΑΓ: Οη ΑΓ είλαη πνιύ κεγάιεο, θαη νη ηππηθνί ηύπνη θαηαιόγσλ ζε ΣΓΒΓ δελ είλαη πιένλ απνδνηηθνί. Τν κεγαιύηεξν πνζνζηό εξσηεκάησλ πεξηέρνπλ αλάθηεζε πνιιώλ δεδνκέλσλ, ελώ νη ηππηθνί θαηάινγνη επηθεληξώλνληαη ζε ζελάξηα κε κηθξό όγθν δεδνκέλσλ αλάγλσζεο θαη ελεκεξώζεηο. Πην πεξίπινθα εξσηήκαηα + ζπλζήθεο. Αλάγθε γηα πεξηζζόηεξνπο από 1 θαηάινγν αλά ζηήιε. Τα εξσηήκαηα πεξηιακβάλνπλ πνιιέο ζπλδέζεηο Σπλδέζεηο κεηαμύ ηνπ πίλαθα γεγνλόησλ θαη ησλ πηλάθσλ δηαζηάζεσλ 32
Καηάινγνη-Δπξεηήξηα vs Υινπνίεζε Η πινπνίεζε θπβνεηδώλ επηηξέπεη ηε γξήγνξε απάληεζε εξσηεκάησλ Υπάξρεη όκσο όξην ζηνλ αξηζκό ησλ δηαζηάζεσλ πνπ κπνξνύλ λα αλαπαξαζηαζνύλ ζε πξν-ππνινγηζκέλνπο πίλαθεο. Σε εξσηήκαηα κε πνιιά θξηηήξηα επηινγήο, πξέπεη λα πξνζπειάζνπκε ηα βαζηθά δεδνκέλα πνιιέο θνξέο. Δηδηθνί θαηάινγνη βνεζνύλ ζεκαληηθά ζηελ απνδνηηθή πξνζπέιαζε βαζηθώλ δεδνκέλσλ, όηαλ απηό ρξεηάδεηαη 33
B+ δέλδξα Leaf Node Mianus Brighton Downtown Πώο λα πξνζπειάζνπκε εγγξαθέο κε ζπγθεθξηκέλεο ηηκέο; RID A212 750 RID A101 500 A110 600 Βξίζθνπκε ηνλ θαηάιιειν θόκβνθύιιν, αλαθηνύκε ηα ζσζηάrids, δηαβάδνπκε ηηο γξακκέο πνπ καο ελδηαθέξνπλ. RID-lists 34
Πξόβιεκα κε Β+ δέλδξα Αλ κηα ζηήιε έρεη κηθξό αξηζκό δπλαηώλ ηηκώλ, ηόηε ππάξρνπλ ιίγεο θαη πνιύ κεγάιεο ιίζηεο κε RIDs Παξάδεηγκα Πίλαθαο κε 10,000,000 εγγξαθέο Φαξαθηεξηζηηθό Gender κε δύν δπλαηέο ηηκέο: {M, F} M B+tree F Δπηινγή ησλ M γξακκώλ: πξνζπέιαζε ζε 5M RIDs = 5M * 4 bytes ~ 20 MB 5M RIDs 5M RIDs 35
Bitmap Καηάινγνη Έλα bitmap αλά ζηήιε αλά ηηκή: πίλαθαο κε bits. Τν i-ν bit είλαη 1 αλ ε i-ε εγγξαθή έρεη ηελ αληίζηνηρε ηηκή. Bitmap θαηάινγνο: αλαθέξεηαη ζε επίπεδν ηδηόηεηαο θαη απνηειείηαη από έλα bitmap γηα θάζε ηηκή Δύθνιε ζπκπίεζε θαη γξήγνξε εθηέιεζε δπαδηθώλ πξάμεσλ CustInfo Region Index Rating Index RID N S E W RID H M L 1 1 0 0 0 1 1 0 0 2 0 1 0 0 2 0 1 0 3 0 0 0 1 3 0 0 1 4 0 0 0 1 4 1 0 0 5 0 1 0 0 5 0 0 1 6 0 0 0 1 6 0 0 1 7 1 0 0 0 7 1 0 0 Cust Region Rating C1 N H C2 S M C3 W L C4 W H C5 S L C6 W L C7 N H 36
Καηάινγνη θύινπ κε bitmaps F 1 0 0 1 0 1 0 M 0 1 1 0 1 0 1 Πίζσ ζην παξάδεηγκα ηεο δ. 35 Η επηινγή ησλ M γξακκώλ πξνζπειαύλεη κόλν 10M bits ~ 1.25 MB 37
Πιενλεθηήκαηα θαηαιόγσλ bitmap Καιύηεξε ρσξηθή απνδνηηθόηεηα απ όηη ιίζηεο κε RID ζε θαηάινγν όπσο π.ρ., ηα Β+ δέλδξα. Όρη ζπκπίεζε: RID =32bits, #row=n, #distinct value=m Αλ m < 32, m*n < 32*n Σπκπίεζε: Run-length encoding (εύθνια) Απνδνηηθόηεηα ρώξνπ => απνδνηηθόηεηα I/O Κάζε bitmap είλαη κηθξό θαη απηά πνπ ρξεζηκνπνηνύληαη ζπρλά κπνξεί λα παξακείλνπλ cached ζηελ θύξηα κλήκε 38
Πιενλεθηήκαηα θαηαιόγσλ bitmap Πνιύ κηθξό θόζηνο CPU: νη πξάμεηο απινπνηνύληαη ζε δπαδηθέο (ζε επίπεδν bit) απμάλνληαο πνιύ ζεκαληηθά ηελ ηαρύηεηα εθηέιεζεο. Τειεζηέο Boolean Select Region From CustInfo Where Region= N AND Rating= H RegionIndex(N) & RatingIndex(H) = 100001 & 1001001 = 1000001 Count Select count(*) From CustInfo Where Rating= H Count bits in RatingIndex(H) = 3 Υπνζηεξίδνληαη από πνιιά δηαδεδνκέλα ΣΓΒΓ Π.ρ., Model 204, TargetIndex (Redbrick), IQ (Sybase), Oracle 39
Bit-Sliced Καηάινγνη Οη Bit-sliced θαηάινγνη Γεληθά ρξεζηκνπνηνύληαη ζε ηδηόηεηεο κεηξήζεσλ......κε ηηκέο ζεηηθνύο αθεξαίνπο Ή δεθαδηθνύο ζπγθεθξηκέλεο αθξίβεηαο Παξάδεηγκα: Μεηαηξνπή ηνπ $5.67 ζε 567 cents Bit-sliced θαηάινγνο ζην ραξαθηεξηζηηθό A Θεώξεζε ηνπ A σο πνιιαπιέο ζηήιεο κε δπαδηθέο ηηκέο Σηήιε A1 = ιηγόηεξν ζεκαληηθό bit ηνπ A Σηήιε A2 = 2ν ιηγόηεξν ζεκαληηθό bit ηνπ A Κ.ν.θ. Απνζήθεπζε θάζε ζηήιεο σο μερσξηζηό bitmap 40
Παξάδεηγκα Bit-Sliced Καηαιόγνπ Amount 5 13 2 6 7 Binary 0101 1101 0010 0110 0111 Bit-Sliced Index B4: 01000 B3: 11011 B2: 00111 B1: 11001 41
Έλα ηππηθό OLAP-style εξώηεκα ζε ζπζηήκα ROLAP 42
Καηάινγνη Σύλδεζεο Απνθπγή πνιιαπιώλ ζπλδέζεσλ. Ο θαηάινγνο ζύλδεζεο ζπζρεηίδεη ηηο ηηκέο ησλ πηλάθσλ δηαζηάζεσλ ζε ζρήκα αζηέξα κε ηηο εγγξαθέο ζηνλ πίλαθα γεγνλόησλ. Έλαο θαηάινγνο ζύλδεζεο ζηνλ πίλαθα customer δηαηεξεί γηα θάζε πνιηηεία κία ιίζηα κε ηα αληίζηνηρα RIDs ζηνλ πίλαθα γεγνλόησλ. Όηαλ ρξεζηκνπνηνύληαη απιά RIDs, ν θαηάινγνο νλνκάδεηαη Καηάινγνο Σύλδεζεο Αζηέξα. Μπνξεί λα δεκηνπξγείηαη πξόβιεκα κε ην ρσξηθό θόζηνο CUSTOMER state = CA state = NY state = PA state = VA SALES R102 R117 R118 R124 1 1 1 1 43
Bitmap Καηάινγνη ζύλδεζεο Cid Αλαθέξνληαη ζε πνιινύο πίλαθεο θαη απμάλνπλ ηελ απόδνζε εξσηεκάησλ ζύλδεζεο. Sales Pid Dollar_sales Unit 0100 1 1200 1 0101 3 2600 2 0110 2 1600 1 0111 1 1200 1 Pid Brand P_type Size 1 Dell P1 14 2 HP P2 13 3 Sony P1 15 4 Dell P1 14 5 HP P2 14 6 IBM P3 12 7 HP P2 12 Dell HP Sony IBM 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 Product Bitmap join index για το «brand» 44
Bitmap Καηάινγνη ζύλδεζεο Customer Cid State 0100 CA 0101 NY 0110 CA Sales Cid Pid Dollar_sales Unit 0100 1 1200 1 0101 3 2600 2 0110 2 1600 1 0111 1 1200 1 0111 PA CA NY PA 1 0 0 0 1 0 1 0 0 0 0 1 Bitmap join index για το «state» 45
Φξεζηκνπνίεζε bitmap θαηαιόγσλ ζύλδεζεο Select Sum(Dollar_sales) From Sales S Natural Join Product P Natural Join Customer C Where P.Brand= Dell AND C.State= PA CA NY PA 1 0 0 0 1 0 1 0 0 0 0 1 Dell HP Sony IBM 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 Cid Pid Dollar_sales Unit 0 0 0 1 and 1 0 0 1 = 0 0 0 1 0100 1 1200 1 0101 3 2600 2 0110 2 1600 1 0111 1 1200 1 46
Θέκαηα πξνο εμέηαζε Πεξίιεςε εηζαγσγηθώλ ελλνηώλ-τύπνη ζρεκάησλ Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Μεξηθή πινπνίεζε θπβνεηδώλ Δπηινγή θπβνεηδώλ γηα απάληεζε Καηάινγνη-Δπξεηήξηα Γξήγνξε Απάληεζε ζε Δξσηήκαηα Τξόπνη ππνινγηζκνύ θπβνεηδώλ 47
Απάληεζε εξσηεκάησλ γξήγνξα Σύγρξνλε ηάζε (επεξεαζκέλε από ηηο δεκνθηιείο κεζόδνπο έξεπλαο ζην δηαδίθηπν): ε έκθαζε είλαη ζε απάληεζε εξσηεκάησλ όπνπ ν ρξήζηεο ελδηαθέξεηαη γηα ηα πξώηα «θαιύηεξα» απνηειέζκαηα θαη ζέιεη απάληεζε όζν ην δπλαηόλ γξεγνξόηεξα. Γηαηζζεηηθά: αλ νη ρξήζηεο δελ βξνπλ απηό πνπ ςάρλνπλ ζηηο 1-2 πξώηεο ζειίδεο, μαλαππνβάιινπλ ηξνπνπνηεκέλν εξώηεκα. Σπλπθαζκέλν κε ην πξνεγνύκελν είλαη θαη ε πξνζεγγηζηηθή απάληεζε όζν ην δπλαηόλ γξεγνξόηεξα, θαη θαηόπηλ ζπλερήο βειηίσζε ηεο αθξίβεηαο ησλ απνηειεζκάησλ. 48
Top N Δξσηήκαηα Έζησ όηη ζέινπκε λα βξνύκε ηα 10 θζελόηεξα απηνθίλεηα. Γελ είλαη απνδνηηθό λα βξνύκε ην θόζηνο όισλ ησλ απηνθηλήησλ θαη λα ηα ηαμηλνκήζνπκε. Βαζηθή Ιδέα: εύξεζε ελόο θόζηνπο c, ηέηνηνπ πνπ ηα 10 θζελόηεξα απηνθίλεηα είλαη θζελόηεξα από c, αιιά απηά πνπ θνζηίδνπλ θζελόηεξα από c δελ είλαη πνιύ πεξηζζόηεξα από 10. Έηζη, ε ζπλζήθε επηινγήο «cost<c» κπνξεί λα πξνζηεζεί ζην εξώηεκα. Αλ ε αξρηθή επηινγή ηνπ c είλαη ζσζηή, ηόηε όια ΟΚ. Αλ δελ είλαη, πξέπεη λα μαλαγίλεη εθηίκεζε ηνπ c. Πώο γίλεηαη ε επηινγή ηνπ c? Αλ γλσξίδνπκε ηελ θαηαλνκή (π.ρ., κε ηζηνγξάκκαηα), ηόηε κπνξνύκε λα επηιέμνπκε ηηκή κε ζρεηηθή αζθάιεηα. Αιιά ηα ηζηνγξάκκαηα είλαη πξνζεγγηζηηθά. Η ύπαξμε άιισλ ζπλζεθώλ επηινγήο ζην εξώηεκα πεξηπιέθεη ηελ επηινγή. 49
Άκεζε (online) ζπλάζξνηζε Έζησ έλα ζπλαζξνηζηηθό εξώηεκα, π.ρ., εύξεζε ηνπ κ.ν. πσιήζεσλ ζε κία πεξηνρή. Παξνρή ζηνλ ρξήζηε πξνζεγγηζεο ηεο απάληεζεο πξηλ δνζεί ε ηειηθή αθξηβήο απάληεζε. Η ηξέρνπζα ηηκή ηνπ κ.ν. δίλεηαη. Σπλερώο βειηηώλεηαη ε πνηόηεηα απάληεζεο. Διθπζηηθή ιύζε, θαζώο ππάξρνπλ γλσζηνί αιγόξηζκνη γηα πξνζεγγηζηηθέο απαληήζεηο. Φξήζε non-blocking αιγνξίζκσλ γηα ζρεζηαθνύο ηειεζηέο. Έλαο αιγόξηζκνο είλαη blocking αλ δελ παξάγεη θαλέλα απνηέιεζκα πξηλ επεμεξγαζηεί όιε ηελ είζνδν. Sort-merge: blocking Nested-loops/pipelined hash-join: non-blocking 50
Παξάδεηγκα Status State AVG(sales) Confidence Interval 83% Alabama 5232.5 97% 103.4 23% Alaska 2832.5 93% 132.2 91% Arizona 6432.5 98% 52.3 17% Wyoming 4243.5 92% 152.3 Επιλογή: καθορισμός προτεραιοτήτων στη σειρά σπολογισμού 51
Δξσηήκαηα παγόβνπλνπ (iceberg) select R.A1, R.A2,, R.Ak, agr(r.b) from Relation R group by R.A1, R.A2,, R.Ak having agr(r.b) > = constant 52
Δξσηήκαηα παγόβνπλνπ (iceberg) select P.custid, P. item, sum(p.qty) from Purchases P group by P.custid, P.item having sum (P.qty) > 5 select P.custid select P.item from Purchases P group by P.custid Q1 from Purchases P group by P.item Q2 having sum (P.qty) > 5 having sum (P.qty) > 5 Δημιοσργία (custid, item) μόνο βάσει των custid τοσ Q1 και item τοσ Q2 53
Θέκαηα πξνο εμέηαζε Πεξίιεςε εηζαγσγηθώλ ελλνηώλ-τύπνη ζρεκάησλ Αξρηηεθηνληθέο πινπνίεζεο ζπζηεκάησλ OLAP Μεξηθή πινπνίεζε θπβνεηδώλ Δπηινγή θπβνεηδώλ γηα απάληεζε Καηάινγνη-Δπξεηήξηα Γξήγνξε Απάληεζε ζε Δξσηήκαηα Τξόπνη ππνινγηζκνύ θπβνεηδώλ 54
Απνδνηηθόο Υπνινγηζκόο Κύβσλ Δθηόο από ην πνηνί θύβνη πξέπεη λα πινπνηεζνύλ, έλα άιιν εξώηεκα είλαη ην πώο ζα ππνινγηζζνύλ απνδνηηθά απηνί νη θύβνη. Δθαξκνγή ηαμηλόκεζεο, θαηαθεξκαηηζκνύ, νκαδνπνίεζεο γηα ζπζηαδνπνίεζε ζρεηηθώλ πιεηάδσλ (ROLAP). Οη ζπλαζξνηζηηθέο ζπλαξηήζεηο ππνινγίδνληαη από πξνεγνύκελεο ζπλαζξ. Σπλαξηήζεηο, αληί απεπζείαο από ηνλ πίλαθα γεγνλόησλ, όπνπ γίλεηαη. Τερληθέο: Μικρότερος-πρόγονος: ππνινγηζκόο θπβνεηδνύο από ηνλ κηθξόηεξν θπβνεηδέο πνπ έρεη ήδε ππνινγηζζεί. Cache-results: caching ησλ απνηειεζκάησλ ελόο θπβνεηδνύο, από ην νπνίν επόκελα θπβνεηδή ζα ππνινγηζζνύλ γηα λα κεησζεί ην θόζηνο I/O. Amortize-scans: ππνινγηζκόο όζν ην δπλαηόλ πεξηζζόηεξσλ θπβνεηδώλ παξάιιεια. Share-sorts: δηακνηξαζκόο θόζηνπο ηαμηλόκεζεο. Share-partitions: δηακνηξαζκόο θόζηνπο θαηαθεξκαηηζκνύ. 55