Έλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Σχετικά έγγραφα
Έλεγχος συγχρονικότητας Μέρος 1 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Δοσοληψίες Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

Θεµατολόγιο. Α) Πρακτικά Θέµατα στον Έλεγχο Ταυτοχρονισµού

Έλεγχος Ταυτοχρονισμού

Επεξεργασία οσοληψιών (συνέχεια)

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

Βάσεις Δεδομένων 2. Φροντιστήριο Δοσοληψίες Τεχνικές ελέγχου συνδρομικότητας. Ημερ: 05/5/2009 Ακ.Έτος

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων: ημήτρης Πλεξουσάκης

Βάσεις Δεδομένων ΙΙ. Διάλεξη 2 η Tεχνικές Ελέγχου Συνδρομικότητας

Αποκατάσταση συστήματος Βάσεις Δεδομένων

Βάσεις Δεδομένων ΙΙ. Διάλεξη 1 η Επεξεργασία Δοσοληψιών. Σύστημα Επεξεργασίας Δοσοληψιών

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. Πληροφοριακά Συστήματα και Βάσεις Δεδομένων. Δρ. Κωνσταντίνος Χ.

ΗΥ360 Αρχεία και Βάσεις εδοµένων ιδάσκων:. Πλεξουσάκης

Κεφάλαιο 13 Δοσοληψίες

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Επαναληπτικές ασκήσεις

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

Θεµατολόγιο. Πώς ελέγχουµε σειριοποιησιµότητα στην πράξη;

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

Προχωρημένα Θέματα Βάσεων Δεδομένων

Πλειάδες φαντάσματα (phantoms)

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

Δοσοληψίες. Κατανεμημένα Συστήματα

ΙΑΧΕΙΡΙΣΗ ΟΣΟΛΗΨΙΩΝ Να θυµηθούµε:

Επεξεργασία οσοληψιών

Δοσοληψίες. Κατανεμημένα Συστήματα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Μανουσόπουλος Χρήστος

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

Διαχείριση Δοσοληψιών

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

ΗΥ360 Αρχεία και Βάσεις εδοµένων

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

Τεχνικές Ελέγχου Συνδροµικότητας

Επεξεργασία οσοληψιών (συνέχεια)

Επεξεργασία οσοληψιών

Κατανεμημένα Συστήματα με Java. Ενότητα # 7: Ατομικές συναλλαγές Διδάσκων: Γεώργιος Ξυλωμένος Τμήμα: Πληροφορικής

Ιδιοκτησία Αντικειµένου

Επεξεργασία οσοληψιών

Επανάκτηση δεδομένων. (εμπλουτισμένο υλικό)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Έλεγχος Ταυτοχρονισμού

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

Advanced Data Indexing

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

Επαναφορά του Συστήματος (Μέρος Α')

Μέγιστη ροή. Κατευθυνόμενο γράφημα. Συνάρτηση χωρητικότητας. αφετηρίακός κόμβος. τερματικός κόμβος. Ροή δικτύου. με τις ακόλουθες ιδιότητες

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

Κατανεμημένες δοσοληψίες

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

Συναλλαγές. Εαρινό Εξάμηνο Τμήμα Μηχανικών Η/Υ και Πληροϕορικής Πολυτεχνική Σχολή, Πανεπιστήμιο Πατρών. Συναλλαγές. Βάσεις Δεδομένων ΙΙ

Σημεία ελέγχου (Checkpoints)

Διαχρονικές δομές δεδομένων

Αδιέξοδα (Deadlocks)

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

Μάθημα Βάσεις Δεδομένων ΙΙ - Ασκήσεις Επανάληψης. 01 Εκφώνηση

Βάσεις Δεδομένων ΙΙ. Διάλεξη 3 η Tεχνικές Aνάκαμψης. Ιδιότητες Δοσοληψιών

10 η Διάλεξη Python Βάσεις δεδομένων στη python

Επεξεργασία οσοληψιών

Κατανεμημένες δοσοληψίες

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

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

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

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

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

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

Έλεγχος Ταυτοχρονισμού

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Σχετικά µε το µάθηµα: Αξιολόγηση. Σχετικά µε το µάθηµα:faq ΟΧΙ ΝΑΙ. Λιγότερος! (ας πούµε το 1/3-1/4)

ΒΑΣΕΙΣ Ε ΟΜΕΝΩΝ ΙΙ. Επεξεργασία οσοληψιών. το πώς βλέπει το Σ Β τα προγράµµατα των χρηστών. οσοληψία (transaction)

PostgreSQL. Oracle. Εαρινό Εξάμηνο

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

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

Εαρινό Εξάμηνο

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

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

HY-486 Αρχές Κατανεμημένου Υπολογισμού

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

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

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

Σηµειώσεις Βάσεων εδοµένων. ιαχείριση οσοληψιών. Γιάννης Θεοδωρίδης. Τµήµα Πληροφορικής, Πανεπιστήµιο Πειραιά.

an:3 are:6 a:10

Κατανεμημένα Συστήματα Ασκήσεις.

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

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

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

Φραγή σε πολλαπλά επίπεδα λεπτομέρειας Τι αντικείμενα κλειδώνουμε?

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

Αδιέξοδα Ανάθεση Πόρων (Deadlocks Resource Allocation)

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

Υ- 07 Παράλληλα Συστήματα Συνέπεια και συνοχή μνήμης

Λειτουργικά Συστήματα (Λ/Σ)

Αµοιβαίοςαποκλεισµός. Κατανεµηµένα Συστήµατα 03-1

HY-486 Αρχές Κατανεμημένου Υπολογισμού Εαρινό Εξάμηνο

ΚΕΦΑΛΑΙΟ 1 ΣΥΝΑΛΛΑΓΕΣ ΚΑΙ ΕΛΕΓΧΟΣ ΤΑΥΤΟΧΡΟΝΙΣΜΟΥ

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

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

Transactions Management. (Διαχείριση Δοσοληψιών)

Transcript:

Έλεγχος συγχρονικότητας Μέρος 2 Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη με βάση slides από A. Silberschatz, H. Korth, S. Sudarshan, Database System Concepts, 5 th edition

Πρωτόκολλα βασισμένα σε γράφο (1) Πρωτόκολλα με βάση γράφο είναι μία εναλλακτική περίπτωση του κλειδώματος δύο φάσεων Επιβάλλει μία μερική ταξινόμηση στο σύνολο D = {d 1, d 2,..., d h } όλων των στοιχείων δεδομένων. Εάν d i d j τότε όποια δοσοληψία προσπελαύνει τόσο το d i όσο και το d j πρέπει να προσπελαύνει το d i πριν προσπελάση d j. Υπονοεί ότι το σύνολο D μπορούμε να το δούμε σαν ένα κατευθυνόμενο ακυκλικό γράφο, ο οποίος ονομάζεται γράφος βάσης δεδομένων. Το πρωτόκολλο-δέντρο είναι ένα απλού είδους πρωτόκολλο γράφος. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 2

Πρωτόκολλο δέντρου Μόνο τα αποκλειστικά κλειδώματα επιτρέπονται. Το πρώτο κλείδωμα από το T i μπορεί να είναι σε οποιοδήποτε αντικείμενο. Στη συνέχεια, ένα στοιχείο Q μπορεί να κλειδωθεί από το T i μόνο εάν ο πατέρας του Q είναι αυτή τη στιγμή κλειδωμένος από το T i. Τα στοιχεία μπορεί να ξεκλειδωθούν οποιαδήποτε στιγμή. Ένα στοιχείο που έχει κλειδωθεί και ξεκλειδωθεί από το T i, δεν μπορεί στη συνέχεια να ξανακλειδωθεί από το T i Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 3

Πρωτόκολλα με βάση το γράφο (2) Το πρωτόκολλο δέντρου διαβεβαιώνει σειριακή διάταξη ως προς σύγκρουση καθώς και ελευθερία από αδιέξοδα. Το ξεκλείδωμα μπορεί να συμβεί νωρίτερα σε ένα πρωτόκολλο κλειδώματος δέντρου από ότι σ ένα δύο φάσεων πρωτόκολλο κλειδώματος. Μικρότερος χρόνος αναμονής και αύξηση της ταυτοχρονικότητας Το πρωτόκολλο είναι απαλλαγμένο από αδιέξοδα. Η αναίρεση μίας δοσοληψίας μπορεί να οδηγήσει σε διαδοχικές αναιρέσεις. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 4

Πρωτόκολλα με βάση το γράφο (3) Σ ένα πρωτόκολλο κλειδώματος δέντρου, μία δοσοληψία μπορεί να χρειαστεί να κλειδώσει αντικείμενα που δεν τα προσπελαύνει. Αυξάνει τα επιπλέον κλειδώματα και τον επιπρόσθετο χρόνο αναμονής Πιθανή μείωση του ταυτοχρονισμού Χρονοπρογράμματα που δεν είναι δυνατά κάτω από δύοφάσεων κλειδώματα είναι δυνατά κάτω από πρωτόκολλο δέντρου και το αντίστροφο. Προσπέλαση των δεδομένων Α και J Απαιτεί κλείδωμα και των B, D και Η Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 5

Χρονοπρογράμματα σειριακής διάταξης κάτω από πρωτόκολλο δέντρου Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 6

Πρωτόκολλα με βάση Timestamp (1) Προσεγγίσεις ελέγχου συγχρονικότητας Κλείδωμα : Αναίρεση δοσοληψίας ή μπλοκάρισμα για επίλυση σύγκρουσης Χωρίς κλειδώματα Ετικέτες χρόνου: Οι περισσότερες δοσοληψίες δεν συγκρούονται με άλλες Εκτέλεση σε 3 φάσεις Read: Ανάγνωση από ΒΔ, εγγραφή σε ιδιωτικό χώρο Validation: Η δοσοληψία αποφασίζει να κάνει commit. To ΣΔΒΔ ελέγχει εάν υπάρχει σύγκρουση με άλλες δοσοληψίες Write: εγγραφή στη ΒΔ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 7

Πρωτόκολλα με βάση Timestamp (2) Για κάθε δοσοληψία εκδίδεται ένα timestamp όταν εισέρχεται στο σύστημα. Εάν μία παλιά δοσοληψία T i έχει time-stamp TS(T i ), σε μία νέα δοσοληψία T j ανατίθεται time-stamp TS(T j ) τέτοιο ώστε TS(T i ) <TS(T j ). Θα πρέπει να ικανοποιούνται οι εξής συνθήκες T i ολοκληρώνεται πριν η T j αρχίσει Τ i ολοκληρώνεται πριν T j αρχίσει τη φάση εγγραφής και η T i δεν γράφει κάποιο αντικείμενο της βάσης που διαβάζει η T j T i ολοκληρώνει την ανάγνωση πριν η T j ολοκληρώσει τη φάση ανάγνωσης και η T i δεν γράφει κάποιο αντικείμενο που γράφει ή διαβάζει η Τ j Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 8

Πρωτόκολλα με βάση Timestamp (3) Το πρωτόκολλο διαχειρίζεται ταυτόχρονη εκτέλεση τέτοια ώστε τα time-stamps να ορίζουν σειριακή διάταξη. Προκειμένου να επιβεβαιώσουμε τέτοια συμπεριφορά, το πρωτόκολλο διατηρεί για κάθε αντικείμενο Q δύο τιμές timestamp: W-timestamp(Q) είναι το μεγαλύτερο time-stamp οποιαδήποτε δοσοληψίας που εκτελεί επιτυχώς write(q). R-timestamp(Q) είναι το μεγαλύτερο time-stamp οποιασδήποτε δοσοληψίας που εκτελεί επιτυχώς read(q). Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 9

Πρωτόκολλα με βάση Timestamp (4) Το πρωτόκολλο διάταξης με βάση το timestamp διαβεβαιώνει ότι οποιεσδήποτε σε σύγκρουση λειτουργίες read και write εκτελούνται με βάση τη σειρά των timestamps. Υποθέτουμε μία δοσοληψία T i εκδίδει ένα read(q) 1. Εάν TS(T i ) W-timestamp(Q), τότε T i ξεκίνησε πριν γραφτεί Q. Συνεπώς, η λειτουργία read απορρίπτεται και το T i αναιρείται. 2. Εάν TS(T i ) W-timestamp(Q), τότε η λειτουργία read εκτελείται και η R-timestamp(Q) τίθεται στη μέγιστη τιμή του R-timestamp(Q) και TS(T i ). Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 10

Πρωτόκολλα με βάση Timestamp (5) Υποθέτουμε ότι η δοσοληψία T i εκδίδει write(q). Εάν TS(T i ) < R-timestamp(Q), T i ξεκίνησε πριν διαβαστεί η τιμή του Q. Η τιμή του Q που παράγει η T i χρειαζόταν προηγουμένως και το σύστημα υπέθεσε ότι η τιμή αυτή δεν θα παραχθεί ποτέ. Συνεπώς, η λειτουργία write απορρίπτεται και η T i αναιρείται. Εάν TS(T i ) < W-timestamp(Q), τότε T i προσπαθεί να γράψει μία παλιά τιμή του Q. Συνεπώς, αυτή η λειτουργία write απορρίπτεται και η T i αναιρείται. Διαφορετικά, η λειτουργία write εκτελείται και το W-timestamp(Q) τίθεται σε TS(T i ). Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 11

Αποκαταστάσιμο και ελεύθερο από Διαδοχικές αναιρέσεις Προβλήματα με το πρωτόκολλο timestamp-ordering : Υποθέτουμε T i αναιρείται, αλλά T j έχει διαβάσει ένα αντικείμενο το οποίο έχει γραφεί από την T i Συνεπώς η T j πρέπει να αναιρεθεί Εάν η T j έχει επιτραπεί να κάνει commit νωρίτερα,το χρονοπρόγραμμα δεν είναι αποκαταστάσιμο. Επιπρόσθετα, κάθε δοσοληψία που διαβάζει ένα αντικείμενο που έχει γράψει η T j πρέπει να αναιρεθεί Μπορεί να οδηγήσει σε διαδοχικές αναιρέσεις--- δηλ. Αλυσίδα από rollbacks Λύση Μία δοσοληψία A δομείται έτσι ώστε οι εγγραφές της να εκτελούνται στο τέλος της επεξεργασίας της Όλες οι εντολές εγγραφής διαμορφώνουν μία ατομική ενέργεια Καμία δοσοληψία δεν μπορεί να εκτελεστεί ενώ μία δοσοληψία εκτελεί εντολή εγγραφής Μία δοσοληψία που αναιρείται αρχίζει από την αρχή με νέο timestamp Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 13

Thomas Write Rule Τροποποιημένη έκδοση του πρωτοκόλλου ταξινόμησης με timestamp στο οποίο οι παλιές λειτουργίες write μπορούν να αγνοηθούν κάτω από συγκεκριμένες καταστάσεις. Όταν η T i προσπαθεί να γράψει ένα αντικείμενο Q, Εάν TS(T i ) < W-timestamp(Q), τότε T i προσπαθεί να γράψει μία παλιά τιμή του {Q}. Αντί να αναιρεθεί η T i όπως θα γινόταν στο timestamp ordering protocol, αυτή η λειτουργία {write} μπορεί να αγνοηθεί. Αλλιώς το πρωτόκολλο είναι το ίδιο με το timestamp ordering protocol. Thomas' Write Rule επιτρέπει μεγαλύτερη προοπτική ταυτοχρονισμού. Αντίθετα με τα προηγούμενα πρωτόκολλα, επιτρέπουν κάποια χρονοπρογράμματα σειριακής διάταξης ως προς την όψη τα οποία δεν είναι σειριακής διάταξης ως προς τις συγκρούσεις. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 14

Πρωτόκολλο βασισμένο στην εγκυρότητα (1) Validation based Protocol Η εκτέλεση της δοσοληψίας T i γίνεται σε τρεις φάσεις. 1. Φάση ανάγνωσης και εκτέλεσης: Η δοσοληψία T i γράφει μόνο προσωρινές τοπικές μεταβλητές 2. Φάση εγκυρότητας: Η δοσοληψία T i εκτελεί «έλεγχο εγκυρότητας» για να ορίσουμε εάν τοπικές μεταβλητές μπορούν να γραφούν χωρίς παραβίαση της σειριακής διάταξης. 3. Φάση εγγραφής: Εάν T i επικυρωθεί, οι ενημερώσεις εφαρμόζονται στη βάση δεδομένων. Aλλιώς, T i αναιρείται. Kάθε δοσοληψία πρέπει να περάσει διαμέσου των τριών φάσεων με αυτή τη σειρά. Καλείται αισιόδοξος ταυτόχρονος έλεγχος καθώς η δοσοληψία εκτελείται πλήρως με την ελπίδα ότι όλα θα πάνε καλά στη διάρκεια τους ελέγχου εγκυρότητας Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 15

Πρωτόκολλο βασισμένο στην εγγυρότητα (2) Κάθε δοσοληψία Τ i έχει 3 timestamps Start(T i ) : ο χρόνος που αρχίζει η T i την εκτέλεσή της Validation(T i ): ο χρόνος που η T i τελειώνει τη φάση της ανάγνωσης και ξεκινάει της επικύρωσης Finish(T i ) : ο χρόνος όταν η T i τελειώνει τη φάση εγγραφής Η σειριακή διάταξη ορίζεται από το timestamp δεδομένου του χρόνου επικύρωσης, για να αυξήσουμε την ταυτοχρονικότητα. Έτσι στηts(t i ) δίνεται η τιμή της Validation(T i ). Αυτό το πρωτόκολλο είναι χρήσιμο και δίνει μεγαλύτερο βαθμό ταυτοχρονισμού εάν η πιθανότητα των συγκρούσεων είναι χαμηλή. Αυτό συμβαίνει εξαιτίας του ότι η σειριακή διάταξη δεν είναι προαποφασισμένη και σχετικά λίγες δοσοληψίες θα πρέπει να αναιρεθούν. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 16

Έλεγχος εγκυρότητας για τη δοσοληψία T j Εάν για όλα τα T i με TS (T i ) < TS (T j ) μία από τις ακόλουθες συνθήκες ισχύουν: finish(t i ) < start(t j ) start(t j ) < finish(t i ) < validation(t j ) και το σύνολο των αντικειμένων που γράφονται από την T i δεν τέμνεται με το σύνολο των αντικειμένων που διαβάζονται από την T j. τότε η εγκυρότητα επιτυγχάνει και T j μπορεί να κάνει commit. Διαφορετικά, η εγκυρότητα αποτυγχάνει και η T j αναιρείται. Δικαιολόγηση: Είτε η πρώτη συνθήκη ικανοποιείται και δεν υπάρχει επικαλυπτόμενη εκτέλεση ή η δεύτερη συνθήκη ικανοποιείται και 1. οι εντολές εγγραφής της T j δεν επηρεάζουν εντολές ανάγνωσης της T i καθώς συμβαίνουν αφού η T i έχει τελειώσει τις αναγνώσεις της. 2. οι εντολές εγγραφής της T i δεν επηρεάζουν τις αναγνώσεις της T j καθώς η T j δεν διαβάζει κάποιο αντικείμενο που να γράφεται από την T i. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 17

Χρονοπρόγραμμα που παράγεται από εγκυρότητα start(t 15 ) < finish(t 14 ) < validation(t 15 ) οι εντολές εγγραφής της T 15 δεν επηρεάζουν εντολές ανάγνωσης της T 14 καθώς συμβαίνουν αφού η T 14 έχει τελειώσει τις αναγνώσεις της. οι εντολές εγγραφής της T 14 δεν επηρεάζουν τις αναγνώσεις της T 15 καθώς η T 15 δεν διαβάζει κάποιο αντικείμενο που να γράφεται από την T 14. T 14 T 15 read(b) read(a) (validate) display (A+B) read(b) B:- B-50 read(a) A:- A+50 (validate) write (B) write (A) Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 18

Σχήματα πολλαπλών εκδόσεων Διατηρούν παλιές εκδόσεις αντικειμένων δεδομένων για να αυξήσουν την ταυτοχρονικότητα. Πολλαπλών εκδόσεων διάταξη με βάση Timestamp Πολλαπλών εκδόσεων κλείδωμα δύο φάσεων Όταν εκδίδεται μία λειτουργία read(q), επιλέγεται μία κατάλληλη έκδοση του Q με βάση το timestamp της δοσοληψίας και επιστρέφει την τιμή της επιλεγμένης έκδοσης. read ποτέ δεν πρέπει να περιμένει καθώς μία κατάλληλη έκδοση επιστρέφεται άμεσα. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 19

Έλεγχος ταυτοχρονισμού με πολλαπλές εκδόσεις Κάθε επιτυχές write οδηγεί στη δημιουργία μίας νέας έκδοσης από δεδομένα που γράφονται Ιδέα: Κάθε δοσοληψία που γράφει ένα αντικείμενο Ο, κατασκευάζει ένα ιδιωτικό copy του Ο που αποθηκεύεται σε μια Version pool Κάθε δοσοληψία έχει timestamp TS τη στιγμή εκκίνησής της MAIN SEGMENT (Τρέχουσες versions της DB) O O O VERSION POOL (παλαιότερες εκδόσεις μπορεί να είναι χρήσιμες για άλλες δοσοληψίες).

Έλεγχος ταυτοχρονισμού με πολλαπλές εκδόσεις Κάθε αντικείμενο Q έχει μία ακολουθία από εκδόσεις <Q 1, Q 2,..., Q m >. Κάθε έκδοση Q k περιέχει τρία πεδία δεδομένων: Content τιμή της έκδοσης Q k. W-timestamp(Q k ) -- timestamp της δοσοληψίας που δημιουργεί (γράφει) την έκδοση Q k R-timestamp(Q k ) μεγαλύτερο timestamp μίας δοσοληψίας που επιτυχώς διαβάζει μία έκδοση Q k Όταν μία δοσοληψία T i δημιουργεί μία νέα έκδοση Q k του Q, oι τιμές W-timestamp και R-timestamp του Q k αρχικοποιούνται σε TS(T i ). Η τιμή R-timestamp του Q k ενημερώνεται οποτεδήποτε μία δοσοληψία T j διαβάζει το Q k, και TS(T j ) > R-timestamp(Q k ). Οι versions του ιδίου αντικειμένου συνδέονται με pointers σε μια λίστα.

Πολλαπλών εκδόσεων διάταξη με βάση timestamps: Ανάγνωση WTS timeline old new Για να διαβάσει μια δοσοληψία Τ: Βρίσκει την τελευταία version με W-timestamp < TS(T) (Αν δεν της κάνει η τρέχουσα version ψάχνει για προηγούμενες) Αν υποθέσουμε ότι για κάθε αντικείμενο υπάρχει και μια version οι δοσοληψίες που διαβάζουν μόνο (χωρίς να γράφουν ποτέ) δεν αποτυγχάνουν ποτέ. T

Σειριακή διάταξη με βάση timestamps: Εγγραφή (1) Για να γράψει μια δοσοληψία Τ: Βρίσκει τη νεότερη version V με W-timestamp < TS(T). Αν R-timestamp(V) < TS(T), T κάνει ένα copy CV του V, με W-timestamp(CV) = R-timestamp(CV) = TS(T) (η εγγραφή αναμένει μέχρι το commit της Τ - οι άλλες δοσοληψίες δεν μπορούν να δουν την version CV) Αλλιώς, abort & restart με νέο TS. WTS old CV new V RTS(V) T

Εγγραφή (2) Αν R-Timestamp(V) < TS(T), τότε κάποια Τ διάβασε πριν ξεκινήσει η δοσοληψία Τ η Τ μπορεί να γράψει [στη χειρότερη περίπτωση να κάνει overwrite ότι θα έγραφε η Τ ] Αν R-Timestamp(V) > TS(T) προφανώς κάποια Τ διάβασε αφού ξεκίνησε η Τ κάποια πρέπει να κάνει abort & επιλέγουμε την Τ WTS old CV new V T RTS(V)

Πολλαπλών εκδόσεων δύο φάσεων κλείδωμα (1) Διαφοροποίηση ανάμεσα σε read-only δοσοληψίες και σε update δοσοληψίες Δοσοληψίες ενημέρωσης (Update transactions) αποκτούν κλειδώματα read και write, και διατηρούν όλα τα κλειδώματα μέχρι το τέλος της δοσοληψίας Οι δοσοληψίες update ακολουθούν αυστηρό δύοφάσεων κλείδωμα(rigorous two-phase locking) Κάθε επιτυχές write οδηγεί στη δημιουργία μίας έκδοσης των αντικειμένων που γράφονται. Κάθε έκδοση ενός αντικειμένου έχει ένα μόνο timestamp του οποίου η τιμή λαμβάνεται από ένα μετρητή ts-counter που αυξάνεται στη διάρκεια της επεξεργασίας του commit. Στις δοσοληψίες Read-only ανατίθεται ένα timestamp διαβάζοντας την τρέχουσα τιμή του ts-counter πριν αρχίσει η εκτέλεση; Ακολουθούν το πρωτόκολλο multiversion timestamp-ordering για την εκτέλεση των reads. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 25

Πολλαπλών εκδόσεων δύο φάσεων κλείδωμα (2) Μια update δοσοληψία όταν θέλει να διαβάσει ένα αντικείμενο, λαμβάνει ένα S_lock πάνω σ αυτό, και διαβάζει τη τελευταία έκδοση. όταν θέλει να γράψει ένα αντικείμενο, λαμβάνει X_lock πάνω σ αυτό. δημιουργεί μία νέα έκδοση του αντικειμένου και θέτει το timestamp της έκδοσης αυτής σε. Όταν η ενημέρωση της δοσοληψίας T i ολοκληρωθεί, πραγματοποιείται η επεξεργασία του commit : T i θέτει το timestamp στις εκδόσεις που έχει δημιουργήσει σε ts-counter + 1 Για το T i ts-counter = ts-counter +1 Read-only transactions που ξεκινάνε μετά την αύξηση του ts-counter από T i = θα δούν τις τιμές να ενημερώνονται από T i. Read-only δοσοληψίες που αρχίζουν πριν η T i αυξήσει το ts-counter θα δουν την τιμή πριν τις ενημερώσεις από το T i. Μόνο σειριακής διάταξης χρονοπρογράμματα παράγονται. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 26

Διαχείριση αδιεξόδου (1) Υποθέτουμε τις ακόλουθες δύο δοσοληψίες: T 1 : write (X) T 2 : write(y) write(y) write(x) Χρονοπρόγραμμα με αδιέξοδο T 1 T 2 lock-x on X write (X) wait for lock-x on Y lock-x on Y write (X) wait for lock-x on X Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 27

Διαχείριση αδιεξόδου (2) Πρωτόκολλα αποφυγής αδιεξόδου (Deadlock prevention) επιβεβαιώνουν ότι το σύστημα δεν θα μπει ποτέ σε κατάσταση αδιεξόδου. Μερικές στρατηγικές αποφυγής: Κάθε δοσοληψία θα πρέπει να κλειδώνει όλα τα αντικείμενα που την ενδιαφέρουν πριν ξεκινήσει η εκτέλεση (predeclaration). Επιβάλλει μερική ταξινόμηση των δεδομένων και απαιτεί μία δοσοληψία να μπορεί να κλειδώνει αντικείμενα μόνο με τη σειρά που καθορίζεται από τη μερική ταξινόμηση (πρωτόκολλο βασισμένο στο γράφο). Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 28

Στρατηγικές αποφυγής αδιεξόδου (2) Σχήματα που χρησιμοποιούν timestamps δοσοληψίών για χάρη αποφυγής αδιεξόδου. wait-die scheme non-preemptive Παλιότερες δοσοληψίες μπορούν να περιμένουν για κάποια νεότερη να αποδεσμέυσει κάποιο αντικείμενο. Νεότερες δοσοληψίες δεν περιμένουν ποτέ για παλιότερες; Αντίθετα αναιρούνται. Μία δοσοληψία μπορεί να περάσει στη κατάσταση die πολλές φορές πριν αποκτήσει τα δεδομένα που χρειάζεται wound-wait scheme preemptive Παλιότερες δοσοληψίες αναγκάζουν σε αναίρεση νεότερη δοσοληψία αντί να περιμένουν γι αυτή. Νεότερες δοσοληψίες μπορούν να περιμένουν για παλιότερες. Μπορεί να έχει λιγότερες αναιρέσεις απ ότι το σχήμα wait-die. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 29

Στρατηγικές αποφυγής αδιεξόδου (3) wait-die και wound-wait σχήματα: Δοσοληψίες που αναιρούνται αρχίζουν πάλι με το αρχικό τους timestamp. Έτσι παλιότερες δοσοληψίες έχουν προτεραιότητα πάνω σε νεότερες και το starvation συνεπώς αποφεύγεται. Timeout-Based σχήματα : Μία δοσοληψία περιμένει για ένα κλειδωμα μόνο για συγκεκριμένο χρονικό διάστημα. Μετά από αυτό το χρόνο, η αναμονή σταματάει και η δοσοληψία αναιρείται. Συνεπώς αδιέξοδα δεν είναι δυνατά Απλά στην υλοποίηση; Υπάρχει πιθανότητα starvation Δύσκολο να οριστούν καλές τιμές του διαστήματος αναμονής. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 30

Αναγνώριση Αδιεξόδου (1) Τα αδιέξοδα μπορούν να περιγραφούν ως γράφει wait-for, το οποίο αποτελείται από ένα ζεύγος G = (V,E), V σύνολο από κόμβους δοσοληψίες στο σύστημα E ένα σύνολο από ακμές; Κάθε στοιχείο είναι ένα ταξινομημένο ζεύγος T i T j. Όταν T i αιτείται ένα αντικείμενο που αυτή τη στιγμή δεσμεύεται από το T j,τότε η ακμή T i T j εισάγεται στον wait-for γράφο. \ η ακμή απομακρύνεται μόνο όταν η T j δεν κρατάει πλέον ένα αντικείμενο που χρειάζεται η T i. Το σύστημα είναι σε μία κατάσταση αδιεξόδου εάν και μόνο εάν ο γράφος wait-for έχει κάποιο κύκλο. Πρέπει να επικαλεστούμε έναν αλγόριθμο αναγνώρισης deadlockdetection περιοδικά για να ψάχνουμε για κύκλους. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 31

Αναγνώριση Αδιεξόδου Wait-for graph without a cycle Χωρίς Αδιέξοδο Wait-for graph with a cycle Κατάσταση αδιεξόδου Όταν T i αιτείται ένα αντικείμενο που αυτή τη στιγμή κρατείται από το T j,τότε η ακμή T i T j εισάγεται στον wait-for γράφο Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 32

Ανάνηψη από αδιέξοδο Όταν αναγνωριστεί κάποιο αδιέξοδο: Κάποια δοσοληψία πρέπει να αναιρεθεί (victim) για να σπάσει το αδιέξοδο. Επιλέγουμε ως victim τη δοσοληψία που προκαλεί το λιγότερο κόστος. Rollback ορίζει πόσο μακριά θα αναιρεθεί η δοσοληψία Πλήρης rollback: Αναίρεση της δοσοληψίας και μετά ξαναρχίζει. Πιο αποτελεσματικό: μία δοσοληψία κάνει roll back μόνο όσο χρειάζεται για να σπάσει το αδιέξοδο. Starvation συμβαίνει έαν η ίδια δοσοληψία επιλέγεται πάντα ως θύμα. Περιλαμβάνουμε τον αριθμό των rollbacks στον παράγοντα κόστους για να αποφύγουμε starvation Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 33

Δυναμικές Βάσεις Δεδομένων Μέχρι στιγμής, κάναμε δύο μη προφανείς υποθέσεις: Η ΒΔ δεν εμπλουτίζεται με νέες εγγραφές κατά τη διάρκεια των δοσοληψιών υποθέτομε ότι write = UPDATE και όχι INSERT Τα αντικείμενα της ΒΔ είναι ανεξάρτητα μεταξύ τους Η υπόθεση αυτή δεν ισχύει αν υποθέσουμε π.χ., ένα B+ tree σε κάποιο πεδίο ενός πίνακα Εάν δεν είναι σταθερό το σύνολο των εγγραφών τότε ακόμα και με βάση το αυστηρό πρωτόκολλο δύο φάσεων δεν εξασφαλίζεται σειριακή διάταξη Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 34

T2: Παράδειγμα: Sailors SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 3 Popay3 2 80 4 Popay4 2 63 INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING Πρόβλημα Η Τ1 θεωρούμε ότι έχει κλειδώσει όλες τις εγγραφές του Sailor με rating=1 Η υπόθεση αυτή ισχύει όταν δεν προστίθενται εγγραφές στο sailor όταν εκτελείται η T1 Απαιτείται κάποιος μηχανισμός για να επιλύσει αυτό το πρόβλημα Κλείδωμα κατηγορήματος, κλείδωμα ευρετηρίου Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 35

Πιθανή Εκτέλεση SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 3 Popay3 2 80 Χ1 Χ1 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING 4 Popay4 2 63 RATING AGE T2: INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) 1 71 Πρώτα, οι RATING=1 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 36

Πιθανή Εκτέλεση SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 3 Popay3 2 80 4 Popay4 2 63 5 X 1 96 Χ1 Χ1 Χ2 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING RATING AGE 1 71 T2: INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) Το INS παίρνει X- lock Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 37

T2: Πιθανή Εκτέλεση SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 3 Popay3 2 80 4 Popay4 2 63 5 X 1 96 INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) Χ1 Χ1 Χ2 Χ2 Χ2 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING RATING AGE 1 71 Το DEL παίρνει X- lock Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 38

Πιθανή Εκτέλεση SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 4 Popay4 2 63 5 X 1 96 Χ1 Χ1 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING RATING AGE 1 71 T2: INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) Τ2 COMMITS!! Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 39

Πιθανή Εκτέλεση SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 T1: SELECT RATING, MAX(AGE) FROM SAILORS GROUP BY RATING T2: 4 Popay4 2 63 5 X 1 96 INSERT INTO SAILORS (5, X,1,96); DELETE FROM SAILORS WHERE RATING = 2 AND AGE IN (SELECT MAX(AGE) FROM SAILORS WHERE RATING =2) Χ1 RATING AGE 1 71 2 63 Μετά, όσοι έχουν RATING=2 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 40

Πιθανές Εκτελέσεις... Τ1 Τ2 RATING AGE SID SNAME RATING AGE 1 Popay1 1 71 2 Popay2 1 43 3 Popay3 2 80 4 Popay4 2 63 5 X 1 96 Τ1 ; Τ2 1 71 2 63 RATING AGE 1 71 2 80 Τ2 ; Τ1 RATING AGE 1 96 2 63 Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 41

Φάντασμα Το φαινόμενο κατά το οποίο μια δοσοληψία ξεκινά με ένα σύνολο εγγραφών στην αρχή της, και βρίσκεται με ένα διαφορετικό σύνολο εγγραφών στο τέλος της, χωρίς να έχει κάνει αυτή τις αλλαγές. Το πρωτόκολλο δύο φάσεων ΔΕΝ μας προστατεύει από φαντάσματα! Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 42

Κλείδωμα κατηγορήματος Κλείδωμα των εγγραφών που πληρούν μια συνθήκη (όπως π.χ., RATING = 1, age > 2*salary) Απλούστερη λύση να κλειδώσω όλο τον πίνακα Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 43

Κλείδωμα ευρετηρίου Εάν υπάρχει πυκνό ευρετήριο πάνω στο πεδίο Rating η Τ1 πρέπει να κλειδώσει τη σελίδα του ευρετηρίου που περιέχει τις εισόδου δεδομένων με rating =1 Εάν δεν υπάρχουν εγγραφές με Rating =1, η Τ1 πρέπει να κλειδώσει τη σελίδα ευρετηρίου όπου μία τέτοια είσοδος θα ήταν, εάν υπήρχε! Εάν δεν υπάρχει κατάλληλο ευρετήριο, το Τ1 πρέπει να κλειδώνει όλες τις σελίδες και να κλειδώνει το file/table για να αποφύγουμε νέες σελίδες από το να προστεθούν, να επιβεβαιώσουμε ότι καμία νέα εγγραφή με rating =1 δεν θα προστεθεί Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 44

Πρώτη λύση Ας υποθέσουμε ότι θέλουμε να εισάγουμε μια εγγραφή με RATING=1στη διάρκεια της Τ1 Κατεβαίνοντας από τη ρίζα προς τα φύλλα του Β+ δέντρου, μπορούμε να κλειδώνουμε κάθε κόμβο με X- lock [του φύλλου συμπεριλαμβανομένου] Τραγική απόδοση: ήδη από το πρώτο βήμα έχω κλειδώσει τη ρίζα,δηλ. ΟΛΟ το δέντρο. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 45

Παρατήρηση Στα Β+ δέντρα, οι ενδιάμεσοι κόμβοι χρησιμεύουν ΜΟΝΟ ως μονοπάτια για τα φύλλα Αν κλειδώναμε με S-lock τους ενδιάμεσους κόμβους και με X-lock τα φύλλα? Bug: τι θα γίνει αν η εισαγωγή διασπάσει το παιδί? Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 46

Απλός αλγόριθμος κλειδώματος δέντρων SELECT: Ξεκινώντας από τη ρίζα κλειδώνουμε με S-lock κάθε κόμβο. Μετά, ξεκλειδώνουμε τον γονέα του. INS/DEL: Ξεκινώντας από τη ρίζα κλειδώνουμε με X-locks κατά περίπτωση. Μετά ελέγχουμε αν ο κόμβος που κλειδώσαμε είναι ασφαλής: Αν ναι, ξεκλειδώνουμε τους προγόνους του. Ασφαλής κόμβος: οι όποιες αλλαγές γίνουν δεν θα διαδοθούν προς τα πάνω από τον κόμβο αυτό INS: ο κόμβος δεν είναι πλήρης. DEL: ο κόμβος δεν είναι άδειος κατά το ήμισυ. Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 47

Απλός αλγόριθμος κλειδώματος δέντρων 1 ος τρόπος για το «κατά περίπτωση» X-locks για όλους τους κόμβους 2 ος τρόπος για το «κατά περίπτωση» S-locks για τους ενδιάμεσους κόμβους X-locks για τα φύλλα Μετατροπή του S-lock σε Χ-lock αν υπάρχει διάσπαση Elmasri & Navathe, Ramakrishnan & Gehrke Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 48

ROOT 20 A 35 B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 49 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT Χ 20 A DEL 38* 35 B Με Α τρόπο... 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 50 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A DEL 38* 35 Χ B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 51 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A DEL 38* 35 B 23 F Χ 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 52 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A DEL 38* 35 B 23 F 38 44 C 20* G H I D E 22* 23* 24* 35* 36* 38* 41* 44* Χ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 53 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A DEL 38* 35 B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 54 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT S 20 A INS 45* 35 B Με Β τρόπο... 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 55 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 45* 35 S B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 56 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A 35 S B INS 45* S Γιατί ΔΕΝ ξεκλειδώνω το Β? 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 57 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 45* 35 B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* Χ E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 58 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 45* 35 B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E 45* Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 59 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT S 20 A INS 25* 35 B Με Β τρόπο... 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 60 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 25* 35 S B 23 F 38 44 C 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 61 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 25* 35 B 23 F 38 44 C S 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 62 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 25* Πλήρης κόμβος Διάσπαση Η 35 B 23 F 38 44 C S 20* G H I D 22* 23* 24* 35* 36* 38* 41* 44* E Χ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 63 Διαφάνειες από Π. Βασιλειάδης, Παν. Ιωαννίνων

ROOT 20 A INS 25* 35 B 23 F 38 44 C Upgrade S Χ 20* G H H 22* 23* 24* I 35* 36* Χ Χ Χ Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 64

ROOT 20 A INS 25* 35 B 23 24* F 38 44 C 20* G H H 22* 23* 24* 25* I 35* 36* Βάσεις Δεδομένων ΙΙ, Παν. Πειραιά 65