Διαχείριση Συναλλαγών σε ΣΔΒΔ: Καταστάσεις, Τύποι & ACID
⚡ Έξυπνη Σύνοψη
Η Διαχείριση Συναλλαγών Βάσης Δεδομένων αντιμετωπίζει μία ή περισσότερες λειτουργίες βάσης δεδομένων ως μία ενιαία λογική μονάδα που μετακινεί τη βάση δεδομένων από μια συνεπή κατάσταση σε μια άλλη. Βασίζεται σε ιδιότητες ACID, καθορισμένες καταστάσεις συναλλαγών και χρονοδιαγράμματα για να διατηρεί τη σωστή ταυτόχρονη πρόσβαση.

Τι είναι μια συναλλαγή βάσης δεδομένων;
A Συναλλαγή βάσης δεδομένων είναι μια λογική μονάδα επεξεργασίας σε ένα ΣΔΒΔ που περιλαμβάνει μία ή περισσότερες λειτουργίες πρόσβασης σε βάσεις δεδομένων. Με λίγα λόγια, οι συναλλαγές βάσεων δεδομένων αντιπροσωπεύουν γεγονότα του πραγματικού κόσμου οποιασδήποτε επιχείρησης.
Όλοι οι τύποι λειτουργιών πρόσβασης σε βάση δεδομένων που διατηρούνται μεταξύ των εντολών έναρξης και λήξης της συναλλαγής θεωρούνται μία μόνο λογική συναλλαγή στο ΣΔΒΔ. Κατά τη διάρκεια της συναλλαγής, η βάση δεδομένων είναι ασυνεπής. Μόνο όταν ολοκληρωθεί η συναλλαγή, η κατάσταση αλλάζει από τη μία συνεπή κατάσταση στην άλλη.

Γεγονότα σχετικά με τις συναλλαγές βάσης δεδομένων
- Μια συναλλαγή είναι μια μονάδα προγράμματος της οποίας η εκτέλεση μπορεί να αλλάξει ή να μην αλλάξει τα περιεχόμενα μιας βάσης δεδομένων.
- Η έννοια της συναλλαγής στο DBMS εκτελείται ως ενιαία μονάδα.
- Εάν οι λειτουργίες της βάσης δεδομένων δεν ενημερώνουν τη βάση δεδομένων αλλά ανακτούν μόνο δεδομένα, αυτός ο τύπος συναλλαγής ονομάζεται συναλλαγή μόνο για ανάγνωση.
- Μια επιτυχημένη συναλλαγή μπορεί να αλλάξει τη βάση δεδομένων από μια ΣΥΝΕΠΗ ΚΑΤΑΣΤΑΣΗ σε μια άλλη.
- Οι συναλλαγές DBMS πρέπει να είναι ατομικές, συνεπείς, απομονωμένες και ανθεκτικές.
- Εάν η βάση δεδομένων ήταν σε ασυνεπή κατάσταση πριν από μια συναλλαγή, θα παρέμενε σε ασυνεπή κατάσταση μετά τη συναλλαγή.
Γιατί χρειάζεστε ταυτόχρονη συναλλαγή;
Μια βάση δεδομένων είναι ένας κοινόχρηστος πόρος. Χρησιμοποιείται από πολλούς χρήστες και διεργάζεται ταυτόχρονα. Παραδείγματα περιλαμβάνουν τραπεζικά συστήματα, συστήματα κρατήσεων σιδηροδρομικών και αεροπορικών εισιτηρίων, παρακολούθηση χρηματιστηρίου και αποθέματα και ταμεία σούπερ μάρκετ.
Η μη διαχείριση της ταυτόχρονης πρόσβασης μπορεί να δημιουργήσει προβλήματα όπως:
- Βλάβη υλικού και σφάλματα συστήματος.
- Ταυτόχρονη εκτέλεση της ίδιας συναλλαγής, αδιέξοδοή αργή απόδοση.
Ο έλεγχος αυτής της κοινόχρηστης πρόσβασης είναι δουλειά του/της έλεγχος ταυτόχρονης λειτουργίας, το οποίο χρησιμοποιεί κλείδωμα και χρονικές σημάνσεις για την ασφαλή παρεμβολή συναλλαγών. Πριν από αυτό, είναι χρήσιμο να γνωρίζουμε τις καταστάσεις από τις οποίες διέρχεται μια συναλλαγή.
Κατάσταση συναλλαγών
Οι διάφορες καταστάσεις μιας έννοιας συναλλαγής στο DBMS παρατίθενται παρακάτω:
| Κατάσταση | Περιγραφή |
|---|---|
| Ενεργός Κατάσταση | Μια συναλλαγή εισέρχεται στην ενεργή κατάσταση όταν ξεκινά η διαδικασία εκτέλεσης. Κατά τη διάρκεια αυτής της κατάστασης, μπορούν να εκτελεστούν λειτουργίες ανάγνωσης ή εγγραφής. |
| Μερικώς δεσμευμένος | Μια συναλλαγή μεταβαίνει στην κατάσταση μερικής ολοκλήρωσης (partially committed) μετά το τέλος της συναλλαγής. |
| Δεσμευμένο κράτος | Όταν η συναλλαγή φτάσει στην κατάσταση ολοκλήρωσης, έχει ολοκληρωθεί με επιτυχία και όλες οι αλλαγές της καταγράφονται μόνιμα στη βάση δεδομένων. |
| Αποτυχημένη κατάσταση | Μια συναλλαγή θεωρείται αποτυχημένη όταν οποιοσδήποτε από τους ελέγχους αποτύχει ή εάν η συναλλαγή ματαιωθεί ενώ βρίσκεται σε ενεργή κατάσταση. |
| Τερματισμένη κατάσταση | Η κατάσταση μιας συναλλαγής φτάνει στην τερματισμένη κατάσταση όταν η συναλλαγή εγκαταλείπει το σύστημα και δεν μπορεί να επανεκκινηθεί. |
Ας μελετήσουμε ένα διάγραμμα μετάβασης κατάστασης που υπογραμμίζει τον τρόπο με τον οποίο μια συναλλαγή κινείται μεταξύ αυτών των διαφόρων καταστάσεων.
- Μόλις μια συναλλαγή ξεκινήσει την εκτέλεση, γίνεται ενεργή. Μπορεί να εκτελέσει μια λειτουργία READ ή WRITE.
- Μόλις ολοκληρωθούν οι λειτουργίες READ και WRITE, η συναλλαγή φτάνει στην κατάσταση μερικής ολοκλήρωσης.
- Στη συνέχεια, ορισμένα πρωτόκολλα ανάκτησης πρέπει να διασφαλίζουν ότι μια συστημική βλάβη δεν θα οδηγήσει σε αδυναμία μόνιμης καταγραφής των αλλαγών της συναλλαγής. Εάν αυτός ο έλεγχος είναι επιτυχής, η συναλλαγή ολοκληρώνεται και εισέρχεται στην κατάσταση ολοκλήρωσής της.
- Εάν ο έλεγχος αποτύχει, η συναλλαγή μεταβαίνει στην κατάσταση αποτυχίας.
- Εάν η συναλλαγή ματαιωθεί ενώ βρίσκεται στην ενεργή κατάσταση, μεταβαίνει στην κατάσταση αποτυχίας. Η συναλλαγή θα πρέπει να ακυρωθεί για να αναιρεθεί η επίδραση των λειτουργιών εγγραφής της στη βάση δεδομένων.
- Η κατάσταση τερματισμού αναφέρεται στη συναλλαγή που εξέρχεται από το σύστημα.
Ποιες είναι οι ιδιότητες του οξέος;
Ιδιότητες ΟΞΥ χρησιμοποιούνται για τη διατήρηση της ακεραιότητας της βάσης δεδομένων κατά την επεξεργασία συναλλαγών. Το ACID στο DBMS σημαίνει Aτομικότητα, Cεπιμονή, Iλύση, και Dχρηστικότητα.
- Atomπαγετός: Μια συναλλαγή είναι μια ενιαία μονάδα λειτουργίας. Είτε το εκτελείτε εξ ολοκλήρου είτε δεν το εκτελείτε καθόλου. Δεν μπορεί να υπάρξει μερική εκτέλεση.
- Συνέπεια: Μόλις εκτελεστεί η συναλλαγή, θα πρέπει να μετακινηθεί από τη μια συνεπή κατάσταση στην άλλη.
- Απομόνωση: Μια συναλλαγή θα πρέπει να εκτελείται μεμονωμένα από άλλες συναλλαγές. Κατά την ταυτόχρονη εκτέλεση, τα ενδιάμεσα αποτελέσματα από συναλλαγές που εκτελούνται ταυτόχρονα δεν θα πρέπει να διατίθενται μεταξύ τους.
- Αντοχή: Μετά την επιτυχή ολοκλήρωση μιας συναλλαγής, οι αλλαγές στη βάση δεδομένων θα πρέπει να διατηρούνται, ακόμη και σε περίπτωση βλαβών του συστήματος.
Ιδιότητα ACID σε DBMS με παράδειγμα
Παρακάτω είναι ένα παράδειγμα της ιδιότητας ACID στο DBMS:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Η συναλλαγή 1 μεταφέρει 50 $ από τον λογαριασμό X στον λογαριασμό Y.
Η συναλλαγή 2 πιστώνει κάθε λογαριασμό με πληρωμή τόκου 10%.
Εάν και οι δύο συναλλαγές υποβληθούν μαζί, δεν υπάρχει εγγύηση ότι η Συναλλαγή 1 θα εκτελεστεί πριν από τη Συναλλαγή 2 ή αντίστροφα. Ανεξάρτητα από την εντολή, το αποτέλεσμα πρέπει να είναι σαν οι συναλλαγές να πραγματοποιούνται σειριακά, η μία μετά την άλλη.
Είδη Συναλλαγών
Με βάση τους τομείς εφαρμογής:
- Μη κατανεμημένο έναντι κατανεμημένου.
- Αντισταθμιστικές συναλλαγές.
- Χρονισμός συναλλαγής.
- Online έναντι παρτίδας.
Με βάση τις ενέργειες:
- Δύο βήματα.
- Περιορισμένος.
- Μοντέλο δράσης.
Με βάση τη δομή:
- Επίπεδες ή απλές συναλλαγές: αποτελούνται από μια ακολουθία πρωτόγονων λειτουργιών που εκτελούνται μεταξύ μιας λειτουργίας έναρξης και μιας λειτουργίας λήξης.
- Ένθετες συναλλαγές: μια συναλλαγή που περιέχει άλλες συναλλαγές.
- Ροή εργασίας
Τι είναι ένα Πρόγραμμα;
Ένα χρονοδιάγραμμα είναι μια διαδικασία δημιουργίας μιας ενιαίας ομάδας πολλαπλών παράλληλων συναλλαγών και εκτέλεσης αυτών μία προς μία. Θα πρέπει να διατηρεί τη σειρά με την οποία εμφανίζονται οι οδηγίες σε κάθε συναλλαγή. Εάν εκτελούνται δύο συναλλαγές ταυτόχρονα, το αποτέλεσμα της μίας συναλλαγής μπορεί να επηρεάσει την έξοδο της άλλης.
Παράδειγμα
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Εάν η Συναλλαγή 2 εκτελεστεί πριν από τη Συναλλαγή 1, θα διαβαστούν παρωχημένες πληροφορίες σχετικά με την ποσότητα του προϊόντος. Ως εκ τούτου, απαιτούνται χρονοδιαγράμματα.
Η παράλληλη εκτέλεση σε μια βάση δεδομένων είναι αναπόφευκτη. Αλλά η παράλληλη εκτέλεση επιτρέπεται όταν υπάρχει σχέση ισοδυναμίας μεταξύ των ταυτόχρονα εκτελούμενων συναλλαγών. Αυτή η ισοδυναμία είναι τριών τύπων.
Ισοδυναμία Αποτελέσματος: Εάν δύο χρονοδιαγράμματα εμφανίζουν το ίδιο αποτέλεσμα μετά την εκτέλεση, αυτό ονομάζεται χρονοδιάγραμμα ισοδύναμου αποτελέσματος. Μπορεί να προσφέρουν το ίδιο αποτέλεσμα για ορισμένες τιμές και διαφορετικά αποτελέσματα για ένα άλλο σύνολο τιμών. Για παράδειγμα, μια συναλλαγή ενημερώνει την ποσότητα του προϊόντος ενώ μια άλλη ενημερώνει τα στοιχεία του πελάτη.
Προβολή ισοδυναμίας: Η ισοδυναμία προβολής συμβαίνει όταν οι συναλλαγές και στα δύο χρονοδιαγράμματα εκτελούν μια παρόμοια ενέργεια. Για παράδειγμα, μια συναλλαγή εισάγει λεπτομέρειες προϊόντος στον πίνακα προϊόντων, ενώ μια άλλη συναλλαγή εισάγει λεπτομέρειες προϊόντος στον πίνακα αρχειοθέτησης. Η συναλλαγή είναι η ίδια, αλλά οι πίνακες είναι διαφορετικοί.
Ισοδυναμία Σύγκρουσης: Σε αυτήν την περίπτωση, δύο συναλλαγές ενημερώνουν ή προβάλλουν το ίδιο σύνολο δεδομένων. Υπάρχει σύγκρουση μεταξύ των συναλλαγών, καθώς η σειρά εκτέλεσης θα επηρεάσει την έξοδο.
Τι είναι η σειριοποίηση;
Η σειριοποιησιμότητα είναι η διαδικασία αναζήτησης ενός ταυτόχρονου χρονοδιαγράμματος του οποίου η έξοδος είναι ίση με ένα σειριακό χρονοδιάγραμμα όπου οι συναλλαγές εκτελούνται η μία μετά την άλλη. Ανάλογα με τον τύπο του χρονοδιαγράμματος, υπάρχουν δύο τύποι σειριοποιησιμότητας:
- Σειριοποιησιμότητα σύγκρουσης.
- Δείτε τη σειριοποιησιμότητα.
Οι δύο διαφέρουν ως προς το πόσο αυστηρά κρίνουν την ισοδυναμία, όπως συνοψίζεται παρακάτω.
| Άποψη | Σειριοποιησιμότητα σύγκρουσης | Προβολή σειριοποιησιμότητας |
|---|---|---|
| Βάση | Σειρά αντικρουόμενων λειτουργιών | Σχέσεις ανάγνωσης-από-και-τελικής εγγραφής |
| Δοκιμή | Το γράφημα προτεραιότητας πρέπει να είναι ακυκλικό | Προβολή ισοδυναμίας με ένα σειριακό χρονοδιάγραμμα |
| Αυστηρότητα | Αυστηρότερο, ένα υποσύνολο | Ευρύτερο, περιλαμβάνει τυφλές γραφές |
| Κόστος ελέγχου | Αποτελεσματικός | Υπολογιστικά δύσκολο |
Κάθε χρονοδιάγραμμα που μπορεί να σειριοποιηθεί βάσει σύγκρουσης είναι επίσης σειριοποιήσιμο βάσει όψης, αλλά όχι το αντίστροφο, γι' αυτό και η σειριοποιησιμότητα βάσει σύγκρουσης είναι η πρακτική δοκιμή που εφαρμόζει ένα ΣΔΒΔ.

