עסקאות הן פעולות בסיסיות המאפשרות לנו לשנות ולאחזר נתונים. עם זאת כדי להבטיח את תקינות מסד הנתונים חשוב שעסקאות אלו יבוצעו באופן שישמור על עקביות תקינות ואמינות גם במקרה של כשלים/טעויות. כאן נכנסות לתמונה תכונות ה-ACID.
ACID ראשי תיבות של Atomicity Consistency Isolation and Durability.
מאפיינים של חומצה:
ישנן ארבע תכונות של ACID
1. אטומיות
אטומיות פירושה עסקה היא הכל או כלום או שכל הפעולות שלה מצליחות או שאף אחת לא מיושמות. אם חלק כלשהו נכשל, העסקה כולה מוחזרת כדי לשמור על עקביות מסד הנתונים.
- לְבַצֵעַ : אם העסקה תצליח, השינויים יחולו לצמיתות.
- : אם העסקה נכשלת כל השינויים שנעשו במהלך העסקה יימחקו.
דוּגמָה : שקול את העסקה הבאה ט מורכב מ T1 ו T2 : העברה של 0 מהחשבון X ו .
אָטוֹמִיוּתאם העסקה תיכשל לאחר השלמת T1 אך לפני השלמת T2, מסד הנתונים יישאר במצב לא עקבי. עם Atomicity, אם חלק כלשהו בעסקה נכשל, התהליך כולו מוחזר למצבו המקורי ולא מתבצעים שינויים חלקיים.
עקביות בעסקאות פירושה שמסד הנתונים חייב להישאר במצב תקף לפני ואחרי עסקה.
מערך אובייקטים ב-java
- מצב חוקי עוקב אחר כל אילוצי הכללים והיחסים שהוגדרו (כמו מפתחות זרים של מפתחות ראשיים וכו').
- אם עסקה מפרה את אחד מהכללים הללו, היא מבוטלת כדי למנוע נתונים פגומים או לא חוקיים.
- אם עסקה מנכה כסף מחשבון אחד אך לא מוסיפה אותו לאחר (בהעברה) זה מפר את העקביות.
דוּגמָה : נניח שסכום כל היתרות במערכת בנקאית צריך להיות תמיד קבוע. לפני העברה היתרה הכוללת היא 0. לאחר העסקה היתרה הכוללת צריכה להישאר 0. אם העסקה נכשלת באמצע (כמו עדכון חשבון אחד אך לא השני) המערכת צריכה לשמור על עקביותה על ידי ביטול העסקה.
עֲקֵבִיוּתבידוד מבטיח שעסקאות מתנהלות באופן עצמאי מבלי להשפיע אחת על השנייה. שינויים שנעשו על ידי עסקה אחת אינם גלויים לאחרים עד לביצועם.
זה מבטיח שהתוצאה של עסקאות במקביל תהיה זהה כאילו הן בוצעו בזו אחר זו ומונעת בעיות כמו:
המרת מחרוזת לתאריך
- שינויים בנתונים בין שני קריאות
דוּגמָה
בידודהֶסבֵּר:
- ו (ערך: 500) גורע מ-X (X חדש = 450) ומוסיף ל-Y (Y חדש = 550).
- ט' '
- בינתיים הערכים של X ו-Y משתנים ל-450 ו-550 בהתאמה.
- בידוד מבטיח ש-T'' לא קורא ערכים מיושנים בזמן שעסקה נוספת (T) עדיין מתבצעת.
- עסקאות צריכות להיות עצמאיות ו-T'' צריך לגשת לערכים הסופיים רק לאחר T commit.
- זה ימנע תוצאות לא עקביות כמו הסכום השגוי שחושב על ידי T''.
4. עמידות:
עמידות מבטיחה שברגע ביצוע עסקה השינויים שלה נשמרים לצמיתות גם אם המערכת נכשלת. הנתונים מאוחסנים בזיכרון לא נדיף כך שמסד הנתונים יכול להתאושש למצב המחויב האחרון שלו מבלי לאבד נתונים.
דוּגמָה : לאחר העברת כסף בהצלחה מחשבון א' לחשבון ב' השינויים נשמרים בדיסק. גם אם תהיה קריסה מיד לאחר הביצוע, פרטי ההעברה עדיין יהיו שלמים כשהמערכת תתאושש מה שמבטיח עמידות.
כיצד מאפייני ACID משפיעים על עיצוב ותפעול DBMS
ה מאפייני ACID בסך הכל מספקים מנגנון להבטיח את הנכונות והעקביות של מסד נתונים באופן שכל עסקה היא קבוצת פעולות הפועלת כיחידה אחת שמפיקה תוצאות עקביות, פעולות במנותק מפעולות אחרות ועדכונים שהיא מבצעת מאוחסנים לאורך זמן.
מאפייני ACID שומרים על שלמות הנתונים של DBMS על ידי הבטחה שעסקאות יסתיימו בהצלחה או לא ישאירו עקבות אם יופסקו. הם מונעים מעדכונים חלקיים להשחית את הנתונים ומבטיחים שמסד הנתונים עובר רק בין מצבים חוקיים.
2. בקרת מקבילות
מאפייני ACID מספקים מסגרת מוצקה לניהול עסקאות במקביל. בידוד מבטיח שעסקאות אינן מפריעות זו לזו ומונעות חריגות בנתונים כגון חוסר עקביות זמנית של עדכונים ונתונים לא מחויבים.
עמידות מבטיחה שגם אם מערכת קורסת מסד הנתונים יכול להתאושש למצב עקבי. הודות למאפייני Atomicity ו-Durability אם עסקה נכשלת באמצע הדרך, מסד הנתונים נשאר במצב עקבי.
| נֶכֶס | |
|---|---|
| אָטוֹמִיוּת | מנהל עסקאות |
| עֲקֵבִיוּת | מתכנת יישומים |
| בידוד | |
| עֲמִידוּת | הִתאוֹשְׁשׁוּת |
ביישומים מודרניים הבטחת המהימנות והעקביות של הנתונים היא קריטית. ACID properties are fundamental in sectors like:
- בַּנקָאוּת : עסקאות הכוללות העברות כספים הפקדות או משיכות חייבות לשמור על עקביות ועמידות קפדנית כדי למנוע שגיאות והונאות.
- מסחר אלקטרוני : הבטחת ספירת מלאי של הזמנות ופרטי לקוחות מטופלים בצורה נכונה ועקבית גם בזמן תעבורה גבוהה דורשת תאימות של ACID.
- שירותי בריאות : תוצאות הבדיקות והמרשמים של המטופל רשומות חייבות לעמוד בסטנדרטים קפדניים של שלמות ואבטחה עקביות.