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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

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

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

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

Σχεδιασμός Βάσεων Δεδομένων

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

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

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

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Η SQL ως γλώσσα τροποποίησης Δεδομένων

Τεχνικές Ανάκαµψης. Αtomicity (ατοµικότητα) - είτε όλες οι πράξεις είτε

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

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

Τεχνικές Ανάνηψης Περιεχόµενα

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

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

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

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

9η Εργαστηριακή Άσκηση: Stored Procedures - Triggers. Αποθηκευμένες Διαδικασίες (Stored Procedures):

Βάσεις Δεδομένων (Databases)

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

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

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Διάλεξη 02: Βάσεις Δεδομένων Εισαγωγή. Διδάσκων: Παναγιώτης Ανδρέου

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

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

Βάσεις Δεδομένων (Databases)

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

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

Εισαγωγή στις βασικές έννοιες των Βάσεων Δεδομένων

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Χρονοδιάγραμμα/Χρονοπρόγραμμα

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

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

Πληροφοριακά Συστήματα Διοίκησης

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

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

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

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

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

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

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

Ιατρική Πληροφορική. Δρ. Π. ΑσβεστΑΣ ΤμΗμα ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ

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

DELETE, UPDATE, INSERT.

Εργαστήριο Βάσεων Δεδομένων. Triggers

ΠΕΡΙΟΔΙΚΕΣ ΕΡΓΑΣΙΕΣ. Ενέργειες Ανοίγματος Χρήσης & Μεταφοράς Υπολοίπων

ΕΝΟΤΗΤΑ 4 Λήψη Αποφάσεων και Συναρτήσεις Ελέγχου

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο Βάσεων Δεδομένων

DELETE, UPDATE, INSERT

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

Θέματα Υλοποίησης Σχεσιακών ΣΔΒΔ

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (

Αρχιτεκτονική Συστημάτων Βάσεων Δεδομένων. Κατηγορίες χρηστών ΣΔΒΔ Αρχιτεκτονική ANSI/SPARC Γλώσσες ερωτημάτων Μοντέλα δεδομένων Λειτουργίες ΣΔΒΔ

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

. Εργαστήριο Βάσεων Δεδομένων. Triggers

Transcript:

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

Δοσοληψίες (Transactions) Μέχρι στιγμής θεωρούσαμε πως υπάρχει μόνο ένας DB χρήστης που εκτελεί μία SQL δήλωση κάθε φορά. Στην πραγματικότητα όμως, ένα σύστημα βάσεων δεδομένων μπορεί να έχει πολλούς παράλληλους χρήστες. Κάθε χρήστης μπορεί να συντάξει μια σειρά από SQL δηλώσεις, οι οποίες στο σύνολο τους αποτελούν μια λογική μονάδα (δοσοληψία - transaction). Η δοσοληψία είναι μια μονάδα εργασίας που εκτελείται σε μια βάση δεδομένων. Είναι μονάδες ή ακολουθίες εργασίας που εκτελούνται σε λογική σειρά, είτε με χειροκίνητο τρόπο από κάποιον χρήστη είτε αυτόματα από κάποιο σύστημα Βάσεων Δεδομένων. Το σύστημα βάσεων δεδομένων είναι υπεύθυνο να ζητήσει τις SQL δηλώσεις από διαφορετικούς χρήστες με έναν τρόπο, ώστε να παράγει τα ίδια αποτελέσματα που θα παράγονταν στην περίπτωση που οι δηλώσεις θα εκτελούνταν σε ένα σενάριο ενός μοναδικού χρήστη(serializable).

Δοσοληψίες (Transactions) A transaction is a sequence of one or more SQL statements that together form a logical piece of work - Groff & Weinberg Μια δοσοληψία είναι η εφαρμογή μιας ή περισσοτέρων αλλαγών στη βάση δεδομένων. Για παράδειγμα εάν δημιουργούμε ή διαγράφουμε ή τροποποιούμε μια εγγραφή σε έναν πίνακα, τότε εκτελούμε μια δοσοληψία στον πίνακα. Είναι σημαντικό ο έλεγχος των δοσοληψιών για να εξασφαλίζουμε ακεραιότητα δεδομένων και να χειριστούμε σφάλματα της βάσης δεδομένων. Πρακτικά, ομαδοποιούμε πολλές δηλώσεις SQL σε ένα σύνολο και τα εκτελούμε όλα μαζί ως δοσοληψία. όλες οι δηλώσεις πρέπει να εκτελεστούν επιτυχώς. Σε αντίθετη περίπτωση ΚΑΜΙΑ δεν πρόκειται να εκτελεστεί. μερικές δοσοληψίες ΔΕΝ γίνονται ποτέ επιτρεπτές. Μια σταθερή κατάσταση βάσης δεδομένων είναι αυτή στην οποία ικανοποιούνται όλοι οι περιορισμοί που έχουν τεθεί, αναφορικά με την ακεραιότητα των δεδομένων.

Δοσοληψίες (Ιδιότητες) Οι δοσοληψίες έχουν τις ακόλουθες τέσσερις απαραίτητες ιδιότητες, στις οποίες αναφερόμαστε με το ακρωνύμιο ACID: Ατομικότητα (Atomicity): διασφαλίζει ότι όλες οι ενέργειες στη μονάδα εργασίας θα ολοκληρωθούν επιτυχώς. Αλλιώς, η δοσοληψία ματαιώνεται στο σημείο αποτυχίας και όλες οι προηγούμενες ενέργειες επιστρέφουν (roll back) στη προηγούμενη κατάσταση. Account transfer debit and credit both succeeded or both failed Συνέπεια (Consistency): Διασφαλίζει ότι η βάση δεδομένων αλλάζει καταστάσεις σωστά μετά από μια επιτυχημένη εκτελεσμένη δοσοληψία. If order detail cannot be written, order header is rolled back Απομόνωση (Isolation): δίνει τη δυνατότητα στις δοσοληψίες να εκτελούνται ανεξάρτητα η μια απ την άλλη και τα αποτελέσματα της μιας δεν είναι ορατά στις υπόλοιπες έως ότου ολοκληρωθεί επιτυχώς. Account transfer debit and credit either both seen or neither is seen Αντοχή (Durability): διασφαλίζει ότι το αποτέλεσμα ή η συνέπεια μιας σωστά εκτελεσμένης δοσοληψίας επιβιώνει σε περίπτωση ανεπάρκειας συστήματος (system failure). Account balance is maintained

Transaction control Τα περισσότερα εμπορικά SQL προϊόντα ακολουθούν το ANSI/ISO Transaction Model, το οποίο προσδιορίζει τους ρόλους των COMMIT και ROLLBACK. Μια δοσοληψία αρχικοποιείται από την πρώτη SQL δήλωση που εκτελείται. Θεωρείται δεδομένο ότι κάθε SQL δήλωση αντιμετωπίζεται ως ξεχωριστή δοσοληψία. Ο έλεγχος των δοσοληψιών γίνεται με τις παρακάτω εντολές: COMMIT: για να αποθηκευτούν οι αλλαγές. ROLLBACK: για επιστροφή στη προηγούμενη κατάσταση. SAVEPOINT: δημιουργεί σημεία μέσα σε σύνολα δοσοληψιών στα οποία να γίνεται το ROLLBACK SET TRANSACTION: δίνει όνομα στη δοσοληψία. Οι εντολές ελέγχου δοσοληψιών χρησιμοποιούνται μόνο με τις εντολές DML INSERT, UPDATE και DELETE.

Transaction control Σύνταξη δοσοληψίας: BEGIN TRANSACTION [transaction_name]; <sequence of SQL statements> COMMIT; or ROLLBACK; Π.χ. BEGIN TRANSACTION; DELETE FROM HumanResources.JobCandidate WHERE JobCandidateID = 13; COMMIT; Το ANSI / ISO Transaction Model προσδιορίζει ότι: O επιτυχής τερματισμός του προγράμματος σηματοδοτεί το τέλος της δοσοληψίας και την πραγματοποίηση ανανεώσεων στα δεδομένα Ο μη φυσιολογικός τερματισμός του προγράμματος σταματά τη δοσοληψία και οι ανανεώσεις των δεδομένων αναιρούνται.

Transaction control Η εντολή COMMIT; Η εντολή COMMIT χρησιμοποιείται για να σωθούν οι αλλαγές που προκαλέστηκαν από μια δοσοληψία στη βάση δεδομένων. Σώζει όλες τις δοσοληψίες στη βάση δεδομένων από τη τελευταία εντολή COMMIT ή ROLLBACK. Τα δεδομένα που έχουν εισαχθεί και ανανεωθεί στη ΒΔ διατηρούνται που σημαίνει ότι η δοσοληψία δεν μπορεί να γυρίσει σε προηγουμένη φάση, παρά μόνο στην περίπτωση που εκτελεστεί το αντίθετο σύνολο των δηλώσεων με αντίστροφη σειρά Σύνταξη COMMIT; Η εντολή ROLLBACK; Η εντολή χρησιμοποιείται για να αναιρεθούν όλες οι δοσοληψίες που δεν έχουν σωθεί στη βάση δεδομένων. Μπορεί να αναιρέσει δοσοληψίες από το τελευταίο COMMIT ή ROLLBACK. Σύνταξη ROLLBACK;

Transaction control Η εντολή SAVEPOINT; Ένα SAVEPOINT το σημείο σε μια δοσοληψία όπου μπορούμε να κάνουμε rollback χωρίς να κάνουμε rollback ολόκληρη την δοσοληψία. Σύνταξη SAVEPOINT SAVEPOINT_NAME; Για να αναιρέσουμε τις αλλαγές που προκύπτουν από μια ομάδα συναλλαγών χρησιμοποιούμε την παρακάτω εντολή. Σύνταξη ROLLBACK TO SAVEPOINT_NAME; Η RELEASE SAVEPOINT εντολή χρησιμοποιείται για να αφαιρέσουμε ένα SAVEPOINT που έχουμε δημιουργήσει. Σύνταξη RELEASE SAVEPOINT SAVEPOINT_NAME;

Transaction logs Με ποιο τρόπο το ΣΔΒΔ σταματά μια δοσοληψία? Τα περισσότερα συστήματα διατηρούν Transaction Logs που καταγράφουν όλες τις λειτουργίες, όπως και τις COMMIT δηλώσεις. όταν πραγματοποιείται ένα ROLLBACK, εξετάζεται το log και οι λειτουργίες αναιρούνται σε ανάποδη χρονολογική σειρά, μέχρι το πιο πρόσφατο COMMIT. Όταν η δοσοληψία δεν πραγματοποιήθηκε εξαιτίας software/hardware σφάλματος, το ΣΔΒΔ επικαλείται ένα εργαλείο επανόρθωσης (recovery utility), ώστε να επαναφέρει το log και μετά να κάνει rollback όλες τις λειτουργίες που δεν έχουν πραγματοποιηθεί. Το log συνήθως αποθηκεύονται σε διαφορετικό σημείο από την ΒΔ, προκειμένου να αποφευχθεί προσπάθεια πρόσβασης.

Παραδείγματα Δοσοληψιών στον SQL Server Π.χ.1 use lab_db; BEGIN TRAN; delete from orders WHERE customer_id is null; IF @@ROWCOUNT = 5 COMMIT TRAN; ELSE ROLLBACK TRAN; Π.χ.2 Begin Tran; SAVE Transaction SP1; DELETE FROM categories WHERE category_id = 1; SAVE Transaction SP2 ; DELETE FROM categories WHERE category_id = 2 ; SAVE Transaction SP3 ; DELETE FROM categories WHERE category_id = 3; Rollback transaction SP2;

Read only Δοσοληψίες Μια δοσοληψία που απλώς διαβάζει μια ΒΔ και δεν γράφει σε αυτή, μπορεί εύκολα να σειριοποιηθεί με άλλες read-only δοσοληψίες. Αυτό σημαίνει ότι οι read-only δοσοληψίες δεν χρειάζεται να περιμένουν η μία να ολοκληρωθεί η άλλη. Για να ορίσουμε ότι η επόμενη δήλωση πρόκειται να είναι readonly, γράφουμε το εξής: SET TRANSACTION READ ONLY;

Serializability (1/2) Θεωρείστε δυο χρήστες που θέλουν ταυτόχρονα να κλείσουν μια θέση για μια συγκεκριμένη πτήση: βρίσκουν μια άδεια θέση και κάνουν την κράτηση (τη θέτουν occupied). Σε ένα σύστημα χωρίς περιορισμούς, οι λειτουργίες τους θα μπορούσαν να εκτελεστούν με τη συγκεκριμένη σειρά: T1: find empty seat 22A, T2: find empty seat 22A, ποιος χρήστης θα κρατήσει τελικά τη θέση 22A? book seat 22A time book seat 22A Για να αποφύγουμε αυτό το πρόβλημα, πρέπει να θεωρήσουμε τη συνέχεια των ερωτημάτων της δοσοληψίας ενός χρήστη ως μια μονάδα. ερωτήματα από δύο διαφορετικές δοσοληψίες χρηστών πρέπει να μπουν σε μια σειρά, έτσι ώστε και οι δύο δοσοληψίες να εκτελούνται σειριακά. Στο παράδειγμα, είτε ο χρήστης 1 ή ο χρήστης 2 θα κρατήσει τη θέση 22A. Ο άλλος χρήστης θα δει τη θέση 22A ως occupied και θα πρέπει να βρει άλλη θέση.

Serializability(2/2) Η Σειριοποιησιμότητα (Serializability) συνήθως διασφαλίζεται μέσω του κλειδώματος (locking) των αντικειμένων της ΒΔ ως read ή written. Πριν να διαβαστεί ή να εγγραφεί ένα αντικείμενο ΒΔ (πίνακας ή πλειάδα), η δοσοληψία πρέπει να εξασφαλίσει το κατάλληλο κλείδωμα. Τα κλειδώματα συνήθως ελευθερώνονται μόνο κατά το τέλος της δοσοληψίας. Εάν μια δοσοληψία δεν μπορεί να πάρει το κλείδωμα που του ζητήθηκε, πρέπει να περιμένει έως ότου απελευθερωθεί από μια άλλη δοσοληψία που το έχει την τρέχουσα χρονική στιγμή.

Μέχρι αυτή τη στιγμή, έχουμε θεωρήσει ότι όλες οι SQL δηλώσεις εκτελούνται σωστά. Στην πραγματικότητα, μπορούν να συμβούν πολλοί τύποι σφαλμάτων στο σύστημα, κατά την εκτέλεση της δοσοληψίας ενός χρήστη Τη στιγμή που το σύστημα παρουσιάζει σφάλμα η δοσοληψία θεωρείται μη ολοκληρωμένη. Ωστόσο κάποιες SQL δηλώσεις μπορούν να έχουν εκτελεστεί. Έστω μια δοσοληψία τραπέζης T: T: A=A+100, B=B-100 Η δοσοληψία T μεταφέρει 100 από το λογαριασμό του B στο λογαριασμό του A. Τι συμβαίνει αν το σύστημα παρουσιάζει σφάλμα ακριβώς μετά την εκτέλεση της πρώτης δήλωσης της Τ?

Παράδειγμα ACID Ιδιοτήτων (1/4) Έστω ότι θέλουμε να μεταφέρουμε 50 από το λογαριασμό Α στο λογαριασμό Β. read(a); A := A -50; write(a); read(b); B := B + 50; Η ΒΔ «βλέπει»: R(A); W(A); R(B); W(B); Σύμφωνα με τις ιδιότητες ACID πρέπει κατά τη διάρκεια της δοσοληψίας να διασφαλίζονται: Ατομικότητα, Συνέπεια, Απομόνωση και Αντοχή.

Παράδειγμα ACID Ιδιοτήτων (2/4) Ατομικότητα H δοσοληψία αποτελείται από πολλές ενέργειες, όμως για διάφορους λόγους μπορεί να εκτελεστούν μερικές μόνο από αυτές. Αυτό έχει ως αποτέλεσμα να παραβιαστούν κάποιοι κανόνες και μαζί μ αυτούς και η συνέπεια της βάσης. Αν η δοσοληψία του παραδείγματος αποτύχει μετά το βήμα 3, το σύστημα θα πρέπει να εξασφαλίζει ότι τα updates του δεν αντανακλώνται στη βάση, εκτός και αν προκύψει μια ασυνέπεια. read(a); A := A -50; write(a); --CRASH-- read(b); B := B + 50;

Παράδειγμα ACID Ιδιοτήτων (3/4) Συνέπεια Tο άθροισμα των δύο λογαριασμών στο τέλος της συναλλαγής, πρέπει να ισούται με το άθροισμά τους στην αρχή. Υποθέτουμε ότι μια δοσοληψία που ξεκινά να τροποποιεί μια συνεπή ΒΔ, θα καταλήξει επίσης σε συνεπή ΒΔ read(a); A := A - 50; write(a); read(b); B := B + 50; write(b);

Παράδειγμα ACID Ιδιοτήτων (4/4) Απομόνωση Ας υποθέσουμε ότι στο σύστημα τρέχουν περισσότερες από μια δοσοληψίες ταυτοχρόνως. Στο παράδειγμα ανάμεσα στα βήματα 3 και 6 θεωρούμε ότι μια άλλη δοσοληψία επιτρέπεται να αποκτήσει πρόσβαση στη μερικώς ενημερωμένη βάση δεδομένων. Τότε αφού αυτή μπορεί να δει τα ενδιάμεσα αποτελέσματα της άλλης μπορεί να προκληθούν ανεπιθύμητα αποτελέσματα (π.χ. το άθροισμα Α+Β να είναι μικρότερο από αυτό που θα έπρεπε να είναι). Αυτό συμβαίνει γιατί στο μέσο της δοσοληψίας η βάση μπορεί να είναι ασυνεπής. Αντοχή Κάθε φορά που ο χρήστης ειδοποιείται ότι η συναλλαγή έχει ολοκληρωθεί, η ενημέρωση της βάσης από τη συναλλαγή πρέπει να διατηρηθεί παρά τις αποτυχίες του συστήματος.