Οι πράξεις της συνένωσης. Μ.Χατζόπουλος 1

Σχετικά έγγραφα
Υλοποίηση των Σχεσιακών Τελεστών. 6/16/2009 Μ.Χατζόπουλος 1

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Το εσωτερικό ενός Σ Β

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Εισαγωγή. Γενική Εικόνα του Μαθήµατος. Το εσωτερικό ενός Σ Β. Εισαγωγή. Εισαγωγή Σ Β Σ Β. Αρχεία ευρετηρίου Κατάλογος συστήµατος Αρχεία δεδοµένων

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 7: Αλγόριθμοι για επεξεργασία ερωτήσεων και βελτιστοποίηση

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

Εισαγωγή στην Επεξεργασία Ερωτήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Επεξεργασία Ερωτήσεων

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΑΣΚΗΣΗ ΔΕΥΤΕΡΗ

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

Εξωτερική Ταξινόμηση. Μ.Χατζόπουλος 1

Βάσεις Δεδομένων 2. Φροντιστήριο Αλγόριθμοι Επεξεργασίας και Βελτιστοποίησης Επερωτήσεων. Ημερ: 27/5/2008 Ακ.Έτος

Δυναμικά Πολυεπίπεδα Ευρετήρια (Β-δένδρα) Μ.Χατζόπουλος 1

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 7: Αλγόριθμοι για επεξεργασία ερωτήσεων και βελτιστοποίηση

Επεξεργασία Ερωτήσεων

Κατακερματισμός. 4/3/2009 Μ.Χατζόπουλος 1

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση, Δίαυλος Διαφάνεια 15-1

Το Σχεσιακό Μοντέλο-Σχεσιακή Άλγεβρα, Σχεσιακός Λογισμός. 06/06/2009 Μ.Χατζόπουλος 1

Ο βελτιστοποιητής ερωτημάτων (query optimizer) Μετασχηματισμός εκφράσεων σχεσιακής άλγεβρας Υπολογισμός μεγεθών πράξεων σχεσιακής άλγεβρας

Τα δεδομένα (περιεχόμενο) μιας βάσης δεδομένων αποθηκεύεται στο δίσκο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Κεφ.11: Ευρετήρια και Κατακερματισμός

Εξωτερική Αναζήτηση. Ιεραρχία Μνήμης Υπολογιστή. Εξωτερική Μνήμη. Εσωτερική Μνήμη. Κρυφή Μνήμη (Cache) Καταχωρητές (Registers) μεγαλύτερη ταχύτητα

Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Οργάνωση αρχείων: πως είναι τοποθετηµένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Τα δεδοµένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο Για να επεξεργαστούµε τα δεδοµένα θα πρέπει αυτά να βρίσκονται στη

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΛΥΣΗ ΤΗΣ ΔΕΥΤΕΡΗΣ ΑΣΚΗΣΗΣ Όλγα Γκουντούνα

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

Άσκηση 1 (15 μονάδες) (Επεκτατός Κατακερματισμός)

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων

Επεξεργασία ερωτημάτων

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ευρετήρια. Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1

Τα δεδομένα συνήθως αποθηκεύονται σε αρχεία στο δίσκο

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2005

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση Διαφάνεια 16-1

Δυναμικός Κατακερματισμός. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Δυναμικός Κατακερματισμός

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

Οργάνωση Αρχείων. Βάσεις Δεδομένων : Οργάνωση Αρχείων 1. Blobs

Κατακερµατισµός. Οργάνωση Αρχείων (σύνοψη) Οργάνωση αρχείων: πως είναι τοποθετημένες οι εγγραφές ενός αρχείου όταν αποθηκεύονται στο δίσκο

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βελτιστοποίηση επερωτημάτων

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΛΥΣΗ ΣΤΗΝ ΕΥΤΕΡΗ ΑΣΚΗΣΗ

ΗΥ460 Συστήµατα Διαχείρισης Βάσεων Δεδοµένων Χειµερινό Εξάµηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης

Δεντρικά Ευρετήρια. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Copyright 2007 Ramez Elmasri and Shamkant B. Navathe, Ελληνική Έκδοση, Δίαβλος, Επιμέλεια Μ.Χατζόπουλος Διαφάνεια 14-1

Αποθήκευση Δεδομένων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων ΙΙ Ενότητα 5

Κεφάλαιο 14. Δομές Ευρετηρίων για Αρχεία. Copyright 2007 Ramez Elmasri and Shamkant B. Navathe Ελληνική Έκδοση,

Πληροφορική 2. Δομές δεδομένων και αρχείων

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Συστήματα Αρχείων. Διδάσκoντες: Καθ. Κ. Λαμπρινουδάκης Δρ. Α. Γαλάνη

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΙI

Αλγόριθμοι Ταξινόμησης Μέρος 4

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 6: Δομές ευρετηρίων για αρχεία

Κεφάλαιο 14. οµές Ευρετηρίων για Αρχεία. ιαφάνεια 14-1

Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών. ΗΥ-460 Συστήµατα ιαχείρισης Βάσεων εδοµένων ηµήτρης Πλεξουσάκης Βασίλης Χριστοφίδης

ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2016 Διδάσκοντες: Βασίλης Χριστοφίδης, Δημήτρης Πλεξουσάκης, Χαρίδημος Κονδυλάκης

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρα 1. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια.

ΗΥ460 Συστήματα Διαχείρισης Βάσεων Δεδομένων Χειμερινό Εξάμηνο 2018 Project

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Φροντιστήριο Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων κατακερματισμός και δομές ευρετηρίων για αρχεία

Εισαγωγή στην Επιστήμη των Υπολογιστών

Περιεχόμενα. Περιεχόμενα

'Ασκηση 1: Στατικός Κατακερματισμός. Εισαγωγή. Ρουτίνες υλοποίησης κατακερματισμού. (Ημερομηνία Παράδοσης: Παρασκευή, 16/5/2008, 5μμ) HT_Init()

Αλγόριθμοι και Πολυπλοκότητα

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

Ευρετήρια. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια. Ευρετήρια. Ευρετήρια

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

5. Απλή Ταξινόμηση. ομές εδομένων. Χρήστος ουλκερίδης. Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

Αλγόριθμοι Ταξινόμησης Μέρος 2

Τμήμα Πληροφορικής ΑΠΘ

Ονοματεπώνυμο: Αριθμός Μητρώου:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 8 Ο. Ταξινόμηση και Αναζήτηση Συναρτήσεις χειρισμού οθόνης ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Ευρετήρια. Βάσεις Δεδομένων : Ευρετήρια 1. Πρωτεύον ευρετήριο (primary index): ορισμένο στο κλειδί διάταξης του αρχείου. Ευρετήρια.

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΗΥ240: οµές εδοµένων Χειµερινό Εξάµηνο Ακαδηµαϊκό Έτος Παναγιώτα Φατούρου. Προγραµµατιστική Εργασία 3 ο Μέρος

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο

Κεφάλαιο 13. Αποθήκευση σε Δίσκους, Βασικές Δομές Αρχείων, και Κατακερματισμός

Σχεσιακή Άλγεβρα. Παύλος Εφραιμίδης. Βάσεις Δεδομένων Σχεσιακή Άλγεβρα 1

Ευρετήρια. Ευρετήρια. Βάσεις εδοµένων :ευρετήρια 1

Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)

Προσεγγιστικοί Αλγόριθμοι

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Ταξινόμηση: Εισαγωγικά. Ταξινόμηση (Sor ng) Αλγόριθμοι Απλής Ταξινόμησης. Βασικά Βήματα των Αλγορίθμων

Κατανεμημένα Συστήματα Ι

Αν ένα πρόβλημα λύνεται από δύο ή περισσότερους αλγόριθμους, ποιος θα είναι ο καλύτερος; Με ποια κριτήρια θα τους συγκρίνουμε;

Βάσεις Δεδομένων. Αποθήκευση σε δίσκο, βασικές οργανώσεις αρχείων, κατακερματισμός και δομές ευρετηρίων για αρχεία. Φροντιστήριο 7 o

Αλγόριθμοι και Πολυπλοκότητα Φώτης Ε. Ψωμόπουλος, Περικλής Α. Μήτκας

Transcript:

Οι πράξεις της συνένωσης Μ.Χατζόπουλος 1

ΠΡΟΜΗΘΕΥΤΗΣ (ΠΡΜ) Κ_Προμ Π_Ονομα Είδος Πόλη 22 Ανδρέου 7 Αθήνα 31 Πέτρου 8 Πάτρα 28 Δέδες 12 Λάρισα 58 Παππάς 7 Αθήνα ΠΡΟΙΟΝ (ΠΡ) Κ_Πρ Πρ_Ονομα Χρώμα Βάρος Π35 Οθόνη Γκρι 8 Π76 DVD Μαύρο 4 Π14 Κράνος Άσπρο 1 ΕΡΓΟ (ΕΡ) Κ_Ερ Προυπ Πόλη Ε25 245Κ Αθήνα Ε32 500Κ Άργος Ε68 1000Κ Αθήνα ΠΑΡΑΓΓΕΛΙΑ (ΠΑΡ) Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ 22 Π35 Ε25 200 31 Π35 Ε25 100 31 Π76 Ε32 150 28 Π14 Ε68 150 22 Π76 Ε25 450 22 Π35 Ε32 670 22 Π35 Ε68 650 58 Π14 Ε68 670 28 Π14 Ε32 540 22 Π14 Ε25 200 Μ.Χατζόπουλος 2

Η συνένωση είναι μια από τις πιο χρήσιμες πράξεις της σχεσιακής άλγεβρας και είναι ουσιαστικά η κύρια πράξη για τον συνδυασμό πληροφοριών από δυο ή περισσότερες σχέσεις H πράξη της συνένωσης είναι μια από τις πιο χρονοβόρες πράξεις στην επεξεργασία επερωτήσεων. Oι πράξεις συνένωσης που εμφανίζονται πιο συχνά στις επερωτήσεις είναι η συνένωση ισότητας και η φυσική συνένωση και είναι αυτές που θα μελετήσουμε σε κάποια λεπτομέρεια. Yπάρχουν πολλοί δυνατοί τρόποι για την υλοποίηση της συνένωσης δύο αρχείων. Συνενώσεις περισσοτέρων από δύο αρχείων καλούνται πολλαπλές συνενώσεις. Tο πλήθος των δυνατών τρόπων εκτέλεσης πολλαπλών συνενώσεων αυξάνει πολύ γρήγορα, καθώς το πλήθος των αρχείων αυξάνει. Μ.Χατζόπουλος 3

Η συνένωση αποτελείται από ένα Καρτεσιανό γινόμενο ακολουθούμενο από μια επιλογή. Όμως το Καρτεσιανό γινόμενο έχει μεγάλο κόστος (πόσο;) και η τελική επιλογή μπορεί να αφορά μικρό πλήθος πλειάδων. Μ.Χατζόπουλος 4

Συνενώσεις σε Εμπορικά Συστήματα Sybase ASE:Υποστηρίζει εμφωλευμένους βρόγχους με ευρετήριο και συνένωση με ταξινόμηση και συγχώνευση. Sybase ASIQ: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες, εμφωλευμένους βρόγχους με ευρετήριο, κατακερματισμό, και συνένωση με ταξινόμηση και συγχώνευση. Oracle: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες, μια παραλλαγή της συνένωσης του υβριδικού κατακερματισμού, και συνένωση με ταξινόμηση και συγχώνευση. DB2: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες, εμφωλευμένους βρόγχους με ευρετήριο, και συνένωση υβριδικού κατακερματισμού. SQL Server: Υποστηρίζει εμφωλευμένους βρόγχους σε σελίδες, εμφωλευμένους βρόγχους με ευρετήριο, συνένωση με ταξινόμηση και συγχώνευση, και συνένωση με κατακερματισμό Μ.Χατζόπουλος 5

Eμφωλευμένοι βρόχοι (εξαντλητική μέθοδος) Ο απλούστερος αλγόριθμος συνένωσης. Για κάθε εγγραφή t της σχέσης R (εξωτερικός βρόχος), ανακτάται κάθε εγγραφή s από τη σχέση S (εσωτερικός βρόγχος) και ελέγχεται αν οι δύο εγγραφές ικανοποιούν τη συνθήκη συνένωσης. foreach tuple r R do foreach tuple s S do if r i ==s j then output <r,s> Μ.Χατζόπουλος 6

Η χειρότερη περίπτωση είναι αν εξετάζουμε μια μια τις πλειάδες της R με αυτές της S. Αν b R και b S είναι οι σελίδες αντίστοιχα των σχέσεων και p R και p S οι πλειάδες ανά σελίδα τότε το κόστος είναι: b R + p R * b R * b S. Που δίνει απόθανα αποτελέσματα Αν b ΠΑΡ =1000, b ΠΡΜ =500 και p ΠΑΡ =100 Σημαίνει κόστος 1000+100*1000*500=1000+(5*10 7 ) που με χρόνο προσπέλασης 10ms δίνει 140 ώρες Δεν λαμβάνουμε υπόψη και το κόστος εγγραφής του αποτελέσματος. Μ.Χατζόπουλος 7

Μια βελτίωση μπορεί να γίνει αν δεν εξετάζουμε μια-μια τις εγγραφές αλλά σελίδες. Με τον τρόπο αυτό το κόστος θα είναι: b R + b R * b S. Οπότε στη συγκεκριμένη περίπτωση 1000+1000*500=501000 Ή 1.4 ώρες Μ.Χατζόπουλος 8

Από τους τύπους αυτούς παρατηρούμε ότι έχει σημασία ποια σχέση θα διαλέξουμε σαν εξωτερική στο βρόγχο. Η εξωτερική θα πρέπει να είναι η μικρότερη από τις δυο. Μ.Χατζόπουλος 9

Εμφωλευμένοι βρόγχοι με χρήση ενδιάμεσης μνήμης Στον προηγούμενο αλγόριθμο δεν κάναμε χρήση της δυνατότητας του buffer εισόδου. Αν ένα buffer μεγέθους B σελίδων τότε ο αλγόριθμος μπορεί να τροποποιηθεί σε: foreach block από Β-2 σελίδες της R do foreach σελίδα της S do για όλες τις πλειάδες r R στο block που αντιστοιχούν σε πλειάδες s S της σελίδας output <r,s> Μ.Χατζόπουλος 10

Σχέση R Input buffer Output buffer Αρχικές Σχέσεις στο Δίσκο Scan all S Αποτέλεσμα της συνένωσης Στο δίσκο Μ.Χατζόπουλος 11

Στην περίπτωση αυτή το κόστος θα είναι: b R + b R /(Β-2) * b S. Αν επομένως στην περίπτωση μας Β=102 το κόστος θα είναι: 1000+10*500=6000 Ενώ αν η εξωτερική είναι η ΠΡ 500+5*1000=5500 Μ.Χατζόπουλος 12

Μπορούμε επίσης να βελτιώσουμε κάπως το CPU κόστος αν για την σχέση R κρατήσουμε ένα πίνακα κατακερματισμού στην κύρια μνήμη Μ.Χατζόπουλος 13

Hash table for block R j (k<b-2) Input buffer Output buffer Αρχικές Σχέσεις στο Δίσκο Scan all S Αποτέλεσμα της συνένωσης Στο δίσκο Μ.Χατζόπουλος 14

Συνένωση απλού βρόγχου (χρήση μιας δομής προσπέλασης για ανάκτηση των εγγραφών που ικανοποιούν τη συνθήκη) Αν υπάρχει ευρετήριο (ή κλειδί κατακερματισμού) για ένα από τα δύο γνωρίσματα της συνένωσης -έστω το j της σχέσης S- ανακτώνται όλες οι εγγραφές r της σχέσης R, μία προς μία, και χρησιμοποιείται η δομή προσπέλασης για να ανακτηθούν άμεσα όλες οι εγγραφές της σχέσης S που ικανοποιούν τη συνθήκη s j =r i foreach tuple r R do foreach tuple s S where r i ==s j then output <r,s> Η αναζήτηση στο S με χρήση του ευρετηρίου Μ.Χατζόπουλος 15

Για κάθε πλειάδα r R χρησιμοποιούμε το ευρετήριο για ανάκτηση των αντίστοιχων πλειάδων της S. Η διαφορά της μεθόδου είναι ότι δεν κάνει αναζήτηση στο Καρτεσιανό γινόμενο των σχέσεων. Το κόστος σάρωσης της R είναι το ίδιο b R όπως και στην προηγούμενη μέθοδο. Όμως το κόστος ανάκτησης των πλειάδων της S εξαρτάται από το είδος του ευρετηρίου και την επιλεξιμότητα. Μ.Χατζόπουλος 16

Για κάθε πλειάδα της R το κόστος αναζήτησης της S είναι: 1. Αν το ευρετήριο της S είναι Β+ δένδρο το κόστος εύρεσης του κόμβου φύλου είναι μεταξύ 2 και 4. Αν είναι ευρετήριο κατακερματισμού 1 με 2. 2. Μόλις βρεθεί ο κατάλληλος τερματικός κόμβος το κόστος ανάκτησης εξαρτάται από το αν το ευρετήριο είναι συστάδα. Αν είναι το κόστος είναι μια ακόμη προσπέλαση. Αν όχι το κόστος θα είναι τόσες προσπελάσεις όσες και οι αντίστοιχες πλειάδες της S (υποθέτοντας ότι βρίσκονται σε διαφορετική σελίδα). Μ.Χατζόπουλος 17

Παράδειγμα Έστω ΠΑΡ*ΠΡΜ Ας υποθέσουμε ότι η ΠΡΜ έχει ευρετήριο κατακερματισμού στο Κ_Προμ που είναι και κλειδί με προσπέλαση 1.2 κατά μέσο όρο. Το ΠΑΡ έχει 1000 σελίδες των 100 πλειάδων η σελίδα. Επομένως το συνολικό κόστος είναι: 1000+100000(1+1.2)=222000 Μ.Χατζόπουλος 18

Συνένωση ταξινόμησης-συγχώνευσης Αν οι εγγραφές των σχέσεων R και S είναι φυσικά ταξινομημένες σύμφωνα με τις τιμές των γνωρισμάτων συνένωσης A και B αντίστοιχα, μπορούμε να υλοποιήσουμε τη συνένωση κατά τον πιο αποδοτικό τρόπο. Kαι τα δύο αρχεία σαρώνονται σύμφωνα με τη διάταξη των γνωρισμάτων συνένωσης και επιλέγεται ο συνδυασμός των εγγραφών με τις ίσες τιμές στα A και B. Αν τα αρχεία δεν είναι ταξινομημένα, μπορεί να ταξινομηθούν πρώτα χρησιμοποιώντας μια εξωτερική ταξινόμηση. Mε τη μέθοδο αυτή οι εγγραφές κάθε αρχείου σαρώνονται μόνο μιά φορά, προκειμένου να ταιριάξουν με αυτές του άλλου αρχείου -εκτός αν και τα A και B δεν είναι γνωρίσματα-κλειδιά, στην οποία περίπτωση η μέθοδος πρέπει να τροποποιηθεί ελαφρά. Μ.Χατζόπουλος 19

Mια παραλλαγή του αλγόριθμου ταξινόμησης-συγχώνευσης μπορεί να χρησιμοποιηθεί όταν υπάρχουν δευτερεύοντα ευρετήρια και στα δύο γνωρίσματα συνένωσης. Tα ευρετήρια παρέχουν τη δυνατότητα προσπέλασης (σάρωσης) των εγγραφών με διάταξη των γνωρισμάτων συνένωσης, αλλά οι ίδιες οι εγγραφές μπορεί να είναι φυσικά διεσπαρμένες σε όλα τα μπλοκ του αρχείου και έτσι αυτή η μέθοδος μπορεί να μην είναι αποτελεσματική καθώς κάθε προσπέλαση εγγραφής μπορεί να απαιτεί προσπέλαση ενός μπλοκ δίσκου. Μ.Χατζόπουλος 20

Η βασική ιδέα του αλγόριθμου είναι να ταξινομηθούν οι δυο σχέσεις στο γνώρισμα συνένωσης και στη συνέχεια να γίνει έλεγχος για τις πλειάδες που αντιστοιχούν. Για την ταξινόμηση μπορεί να χρησιμοποιηθεί μια μέθοδος εξωτερικής ταξινόμησης. Μ.Χατζόπουλος 21

ΠΑΡ Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ 22 Π35 Ε25 200 ΠΡΜ Κ_Προμ Π_Ονομα Είδος Πόλη 22 Ανδρέου 7 Αθήνα 31 Πέτρου 8 Πάτρα 28 Δέδες 12 Λάρισα 58 Παππάς 7 Αθήνα 31 Π35 Ε25 100 31 Π76 Ε32 150 28 Π14 Ε68 150 22 Π76 Ε25 450 22 Π35 Ε32 670 22 Π35 Ε68 650 58 Π14 Ε68 670 28 Π14 Ε32 540 22 Π14 Ε25 200 Μ.Χατζόπουλος 22

ΠΑΡ Κ_Προμ Κ_Πρ Κ_Ερ Ποσοτ 22 Π35 Ε25 200 ΠΡΜ Κ_Προμ Π_Ονομα Είδος Πόλη 22 Ανδρέου 7 Αθήνα 28 Δέδες 12 Λάρισα 31 Πέτρου 8 Πάτρα 58 Παππάς 7 Αθήνα 22 Π14 Ε25 200 22 Π35 Ε68 650 22 Π76 Ε25 450 22 Π35 Ε32 670 28 Π14 Ε68 150 28 Π14 Ε32 540 31 Π35 Ε25 100 31 Π76 Ε32 150 58 Π14 Ε68 670 Μ.Χατζόπουλος 23

procedure join(r,s, R i = S j ) Tr = η πρώτη πλειάδα της R; Ts= η πρώτη πλειάδα της S; Gs η πρώτη πλειάδα της S while Tr eof and Gs eof do{ while Tr i < Gs j do Tr = η επόμενη πλειάδα της Tr από την R; while Tr i > Gs j do Gs = η επόμενη πλειάδα της Gs από την S; Ts=Gs; while Tr i == Gs j do{ Ts=Gs; while Ts j == Tr i do{ output <Tr, Ts> Ts= η επόμενη πλειάδα της Ts από την S;} Tr= η επόμενη πλειάδα της Ts από την R; } Gs=Ts } Μ.Χατζόπουλος 24

Το κόστος ταξινόμησης της R είναι Ο(b R logb R ) Το κόστος ταξινόμησης της S είναι Ο(b S logb S ) Το κόστος της συγχώνευσης είναι b R +b S αν δεν χρειασθεί να επαναφερθούν κάποια τμήματα της S. Η μέθοδος αυτή είναι ιδιαίτερα καλή αν τουλάχιστον μια από τις σχέσεις είναι ταξινομημένη στο γνώρισμα της συνένωσης ή αν έχει ευρετήριο συστάδα στο γνώρισμα συνένωσης. Μ.Χατζόπουλος 25

Συνένωση με κατακερματισμό Κατά την μέθοδο αυτή δημιουργείται ένα ευρετήριο κατακερματισμού για τις εγγραφές των αρχείων R και S, χρησιμοποιώντας τα γνωρίσματα συνένωσης A και B ως κλειδιά κατακερματισμού. Kαι για τα δύο αρχεία χρησιμοποιείται το ίδιο αρχείο κατακερματισμού και η ίδια συνάρτηση κατακερματισμού. Πρώτη φάση (φάση διαμέρισης) :Πρώτα διατρέχεται το αρχείο με τις λιγότερες εγγραφές (έστω το R) μία μόνο φορά, προκειμένου να απεικονισθούν οι εγγραφές του στους κάδους του αρχείου κατακερματισμού (οι εγγραφές του R μοιράζονται στους κάδους κατακερματισμού). Μ.Χατζόπουλος 26

Δεύτερη φάση (που ονομάζεται φάση της αναζήτησης) το άλλο αρχείο (S) διατρέχεται μία μόνο φορά με απεικόνιση κάθε εγγραφής του στον κατάλληλο κάδο, όπου η εγγραφή συνδυάζεται με όλες τις εγγραφές του αρχείου R που ταιριάζουν με αυτή. Αυτή η απλουστευμένη περιγραφή της συνένωσης με κατακερματισμό υποθέτει ότι το μικρότερο από τα δύο αρχεία χωράει τελείως σε κάδους της μνήμης μετά την πρώτη φάση. Μ.Χατζόπουλος 27

Η ιδέα είναι να γίνει κατακερματισμός και των δυο σχέσεων στο γνώρισμα της συνένωσης χρησιμοποιώντας την ίδια συνάρτηση κατακερματισμού h. Αν ο κατακερματισμός χωρίσει σε k διαμερίσεις εξασφαλίζουμε ότι οι πλειάδες της R στην i διαμέριση έχουν αντίστοιχες πλειάδες στην S μόνο από την ίδια διαμέριση. Αυτό σημαίνει ότι μπορούμε να διαβάσουμε μια πλήρη διαμέριση της μικρότερης σχέσης R και απλά να σαρώσουμε μόνο την αντίστοιχη διαμέριση της S. Αυτές οι πλειάδες των R και S δεν θα χρειασθεί να εξετασθούν ξανά. Επομένως μετά την διαμέριση των R και S μπορεί να γίνει η συγχώνευση μόνο με μια ανάγνωση των R και S, με την προϋπόθεση ότι υπάρχει διαθέσιμη μνήμη για κάθε διαμέριση της R. Μ.Χατζόπουλος 28

Hash table for block R j (k<b-10 Input buffer Output buffer Αρχικές Σχέσεις στο Δίσκο Scan all S Αποτέλεσμα της συνένωσης Στο δίσκο Μ.Χατζόπουλος 29

Πρακτικά για κάθε διαμέριση χτίζεται ένας πίνακας κατακερματισμού για κάθε διαμέριση της R, χρησιμοποιώντας μια συνάρτηση κατακερματισμού h2 που είναι διαφορετική από την h, ώστε να μειωθεί το CPU κόστος. Χρειαζόμαστε αρκετή μνήμη για να μπορεί να καταχωρηθεί αυτός ο πίνακας κατακερματισμού, που θα είναι λίγο μεγαλύτερη από την διαμέριση της R. Μ.Χατζόπουλος 30

//Διαμέριση της R foreach tuple r R read r και πρόσθεσε την στην σελίδα εξόδου h(r i ) //Διαμέριση της S foreach tuple s S read r και πρόσθεσε την στην σελίδα εξόδου h(s i ) //Φάση συνένωσης for l=1,,k do { //Δημιουργία του πίνακα κατακερματισμού για την R i, με χρήση της h 2 foreach tuple r R l do read r και εισαγωγή στον πίνακα κατακερματισμού με χρήση της h 2 (r l ); //Σάρωση της Sl για αντίστοιχες πλειάδες στην R l foreach tuple s στη διαμέριση S l do { read s και απεικόνισε με χρήση της h 2 ; Για τις πλειάδες r της R που αντιστοιχούν output <r,s> }; Καθαρισμός του πίνακα κατακερματισμού; } Μ.Χατζόπουλος 31

Κόστος της συνένωσης με κατακερματισμό Στη φάση της διαμέρισης σαρώνουμε την R και την S μια φορά και γράφουμε μια φορά. Επομένως το κόστος αυτής της φάσης είναι 2(b R +b S ). Στη δεύτερη φάση σαρώνουμε κάθε διαμέριση μια φορά, υποθέτοντας ότι κάθε διαμέριση χωράει στη μνήμη, το κόστος είναι b R +b S. Επομένως το συνολικό κόστος είναι 3(b R +b S ). Επομένως στο παράδειγμα μας θα είναι: 3*(500+1500)=4500 που για πρόσβαση 10ms κοστίζει λιγότερο από ένα λεπτό. Μ.Χατζόπουλος 32

Απαιτήσεις σε μνήμη Για να αυξήσουμε τις πιθανότητες να χωράει κάθε διαμέριση στη μνήμη πρέπει να ελαχιστοποιήσουμε το μέγεθος κάθε διαμέρισης μεγιστοποιώντας το πλήθος των διαμερίσεων. Στη φάση της διαμέρισης, για διαμέριση της R (και της S) σε k διαμερίσεις χρειαζόμαστε k block εξόδου και ένα εισόδου. Επομένως με B σελίδες το μέγιστο πλήθος διαμερίσεων είναι k=b-1. Υποθέτοντας ότι οι διαμερίσεις έχουν ίδιο μέγεθος, τότε το μέγεθος κάθε διαμέρισης της R είναι b R /(B-1). Το πλήθος των σελίδων του πίνακα κατακερματισμού (στη μνήμη) κατά την φάση της συνένωσης είναι f*b R /(B-1) (όπου f ο παράγοντας αύξησης λόγω κατακερματισμού). Κατά την φάση της συγχώνευσης θέλουμε μια σελίδα για την σάρωση των διαμερίσεων της S και μια για την έξοδο. Επομένως για να χωράει στη μνήμη η διαμέριση B>(f*b R /(B-1))+2. Επομένως για B> f* b R έχουμε καλή απόδοση του αλγόριθμου. Μ.Χατζόπουλος 33

Αν επομένως B> f* b R αναμένουμε ότι κάθε διαμέριση θα έχει μέγεθος b R /(Β-1). Αν δεν έχουμε τόση μνήμη η αν δεν γίνει ομοιόμορφη κατανομή θα έχουμε κάποια υπερχείλιση. Η απόδοση στην περίπτωση της υπερχείλισης μπορεί να βελτιωθεί με επανάληψη του κατακερματισμού (της R). Μ.Χατζόπουλος 34

Υβριδικός Αλγόριθμος Συνένωσης με Κατακερματισμό Αν διαθέτουμε περισσότερη μνήμη μπορεί να χρησιμοποιήσουμε μια παραλλαγή του αλγόριθμου κατακερματισμού. Έστω ότι B>f*(b R /k) για κάποιο ακέραιο k. Δηλαδή αν διαμερίσουμε την R σε k διαμερίσεις μεγέθους b R /k μπορούμε να έχουμε ένα πίνακα κατακερματισμού στη μνήμη. Για την διαμέριση της R (και της S) σε k σελίδες εξόδου και μια σελίδα εισόδου, δηλαδή k+1 σελίδες. Επομένως έχουμε B-(k+1) επιπλέον σελίδες κατά την φάση της διαμέρισης. Έστω ότι B-(k+1)>f*(b R /k). Τότε έχουμε επιπλέον μνήμη κατά την φάση της διαμέρισης για να χωρέσει και μια διαμέριση της R. Η ιδέα είναι να κρατήσουμε στη μνήμη την πρώτη διαμέριση της R. Επίσης κατά της διαμέριση της S η πρώτη διαμέριση δεν γράφεται αλλά συγκρίνεται άμεσα με την πρώτη της R. Το κέρδος είναι ότι δεν θα ξαναδιαβαστούν οι πρώτες διαμερίσεις των R και S. Μ.Χατζόπουλος 35

Για παράδειγμα αν b R =500 σελίδες και b S =1000 σελίδες και Β=300. Μπορούμε να κρατήσουμε στη μνήμη την πρώτη διαμέριση της R όταν χωρίζεται σε δυο διαμερίσεις. Κατά τη φάση της διαμέρισης της R σαρώνουμε την R και γράφουμε μια διαμέριση δηλαδή το κόστος είναι 500+250. Σαρώνουμε την S γράφουμε μια διαμέριση. Το κόστος είναι 1000+500 (αν υποθέσουμε ότι οι διαμερίσεις έχουν ίδιο μέγεθος. Στην συνένωση σαρώνουμε την δεύτερη διαμέριση των R και S με κόστος 250+500. Συνολικό κόστος 750+1500+750=3500. Μ.Χατζόπουλος 36

Σύγκριση Συνένωσης με κατακερματισμό με συνένωση συγχώνευσης ταξινόμησης Αν B> b R όπου b R το μέγεθος της μικρότερης σχέσης, και υποθέσουμε ομοιόμορφη κατανομή στις διαμερίσεις το κόστος του κατακερματισμού είναι 3(b R +b S ). Αν B> b S όπου b S το μέγεθος της μεγαλύτερης σχέσης, τότε το πλήθος των ταξινομημένων σειρών κάθε σχέσης είναι μικρότερο του b S και αν υποθέσουμε ότι οι διαθέσιμες σελίδες για την συγχώνευσης είναι περισσότερες από 2 b S δηλαδή περισσότερες από το συνολικό πλήθος των ταξινομημένων σειρών, μπορούμε να διαθέσουμε μια σελίδα για κάθε σειρά της R και της S. Τότε μπορεί να γίνει ταυτόχρονα η συγχώνευση των σειρών της R και της S. Βέβαια χρειαζόμαστε μνήμη B>2 b S. Συνολικό κόστος 3(b R +b S ). Μ.Χατζόπουλος 37

Αν οι διαμερίσεις στον κατακερματισμό δεν έχουν ομοιόμορφη κατανομή, η συνένωση με κατακερματισμό μπορεί να κοστίσει παραπάνω. Αν η διαθέσιμε μνήμη είναι μεταξύ b R και b S τότε η συγχώνευση με κατακερματισμό κοστίζει λιγότερο (αφού υπάρχει μνήμη μόνο για τις διαμερίσεις της μικρότερης σχέσης) Επιπλέον παράγοντες που πρέπει να ληφθούν υπόψη είναι αν κάποια σχέση είναι ταξινομημένη σε κάποιο γνώρισμα συνένωσης. Μ.Χατζόπουλος 38

Γενικότερες Συνθήκες Συνένωσης περιλαμβάνουν ισότητα σε περισσότερα από ένα γνωρίσματα και συνθήκες άλλες εκτός από ισότητα. Για ισότητα σε περισσότερα από ένα γνωρίσματα στον αλγόριθμο εμφωλευμένων βρόγχων με ευρετήριο μπορούμε να χτίσουμε ένα ευρετήριο στο συνδυασμό των γνωρισμάτων της R και να την χρησιμοποιήσουμε σαν εσωτερική σχέση ή μπορούμε να χρησιμοποιήσουμε υπάρχον ευρετήριο σ αυτό τον συνδυασμό γνωρισμάτων. Για ισότητα σε περισσότερα από ένα γνωρίσματα στον αλγόριθμο ταξινόμησης συγχώνευσης μπορούμε να ταξινομήσουμε στον συνδυασμό των γνωρισμάτων. Επίσης στην συνένωση με κατακερματισμό, ο κατακερματισμός γίνεται στο συνδυασμό των γνωρισμάτων. Μ.Χατζόπουλος 39

Σε περίπτωση ανισότητας R.A<S.B Χρειαζόμαστε ένα Β+ δενδρικό ευρετήριο για τον αλγόριθμο εμφωλευμένων βρόγχων με ευρετήριο. Οι αλγόριθμοι ταξινόμησης συγχώνευσης και κατακερματισμού συγχώνευσης δεν μπορούν να εφαρμοσθούν. Οι άλλοι αλγόριθμοι μπορούν να εφαρμοσθούν Μ.Χατζόπουλος 40

Συνολοθεωρητικές Πράξεις Από άποψη υλοποίησης το Καρτεσιανό γινόμενο και η τομή μπορούν να θεωρηθούν ειδικές περιπτώσεις της συνένωσης. Για την τομή συνένωση με ισότητα για όλα τα γνωρίσματα και το Καρτεσιανό γινόμενο συνένωση χωρίς συνθήκη συνένωσης. Το βασικό πρόβλημα για για την πράξη της ένωσης είναι η απαλοιφή των διπλότυπων.μια παραλλαγή της μεθόδου απαλοιφής των διπλότυπων μπορεί να χρησιμοποιηθεί και για την διαφορά. Μ.Χατζόπουλος 41

Ταξινόμηση για Ένωση και Διαφορά 1. Ταξινόμηση της R και της S στο συνδυασμό όλων των γνωρισμάτων 2. Σάρωση των ταξινομημένων R και S και συγχώνευση με απαλοιφή των διπλότυπων. (Μπορεί να γίνει και με δημιουργία ταξινομημένων σειρών και συγχώνευση τους) Παρόμοια γίνεται και η διαφορά μόνο που κατά την φάση της συγχώνευσης γράφουμε τις πλειάδες της R αφού ελεγχθεί ότι δεν ανήκουν στην S Μ.Χατζόπουλος 42

Κατακερματισμό για Ένωση και Διαφορά 1. Διαμέριση των R και S με χρήση μιας συνάρτησης κατακερματισμού h. 2. Για κάθε διαμέριση l: Δημιουργία ενός πίνακα κατακερματισμού (χρησιμοποιώντας μια συνάρτηση κατακερματισμού h2 h) για την S l. Σάρωση της R l. Για κάθε πλειάδα απεικόνιση στον πίνακα κατακερματισμού της S l. Αν η πλειάδα υπάρχει στον πίνακα απορρίπτεται διαφορετικά προστίθεται. Εγγραφή του πίνακα και ετοιμασία για την επόμενη διαμέριση Μ.Χατζόπουλος 43

Με τον ίδιο τρόπο γίνεται και η διαφορά (R-S). Η διαφορά είναι στην επεξεργασία της διαμέρισης. Μετά τον πίνακα κατακερματισμού της S l,σαρώνουμε την R l. Αν μια πλειάδα δεν είναι στον πίνακα γράφεται στο αποτέλεσμα. Μ.Χατζόπουλος 44