PracticU

מבוא לטרנזקציה - transaction

בלי כתוביותעם כתוביות
PracticU › קורס DBA אפליקטיבי - שפת SQL למתחילים › מבוא לטרנזקציה - transaction
מילון מושגים:
מסד נתונים - אוסף מאורגן של נתונים המאוחסן כך שאפשר לשמור, לחפש, לעדכן ולשלוף אותו ביעילות, לרוב באמצעות שפת שאילתות.
טבלה - מבנה במסד נתונים שמאחסן נתונים בשורות ועמודות. כל שורה היא רשומה וכל עמודה היא שדה.
קומיט - פעולה ב-Git ששומרת תמונת מצב של השינויים במאגר יחד עם תיאור. גם אישור סופי של שינויים במסד נתונים.
שרת - מחשב או תוכנה שמספקים שירות למחשבים אחרים (לקוחות) ברשת, למשל אחסון קבצים, אתר אינטרנט או מסד נתונים, ומגיבים לבקשות שלהם.
שאילתה - בקשה למסד נתונים לשלוף, להוסיף, לעדכן או למחוק נתונים, לרוב בשפת SQL.

מבוא לטרנזקציה - transaction
השיעור מסביר מהי טרנזקציה ומדוע היא נחוצה. הדוגמה היא העברת כסף בין שני חשבונות בטבלת בנק בבסיס נתונים שנבנה לתרגול.
הדוגמה
1. הטבלה: בבסיס נתונים בשם טסט נוצרת טבלת בנק עם שם וסכום. שני חשבונות נכנסים לטבלה: 800 דולר ו-300 דולר.
2. העברה בלי טרנזקציה: דוד מעביר 100 דולר למכללה בשני עדכונים נפרדים: הורדה מהחשבון שלו, והוספה לחשבון המכללה. אם החיבור נפסק בין שני העדכונים, הסכום נשאר חצי מבוצע: הצד של דוד ירד, והכסף לא הגיע למכללה.
3. העברה עם טרנזקציה: שני העדכונים עטופים ב-BEGIN TRANSACTION וב-COMMIT. אם הכול הסתיים, COMMIT מאשר את השינוי. אם החשמל נופל לפני COMMIT, השרת מבצע ROLLBACK, והסכום חוזר לחשבון של דוד.
4. כלל: שתי הפעולות הן יחידה לוגית אחת. או שתיהן מתבצעות, או אף אחת מהן. חצי מצב אינו מותר.
השיעור מדגים את התהליך עם שאילתות SELECT לפני ואחרי כל שלב, כך שאפשר לראות שהסכום לא נשאר באמצע.
אחרי השיעור אפשר לכתוב טרנזקציה שמבטיחה ששני עדכונים יתבצעו יחד, או לא יתבצעו בכלל.
השיעור הבא בקורס: Transaction Isolation Level

פרקי ההרצאה: מבוא לטרנזקציה - transaction

  1. 00:00

    מבוא: יצירת מסד נתונים לדוגמה

  2. 00:37

    יצירת טבלת בנק לדוגמה

  3. 02:22

    העברת 100 דולר בין חשבונות

  4. 03:44

    עדכון יתרות בטבלה ללא טרנזקציה

  5. 05:01

    ניתוק הרשת באמצע העברה

  6. 06:16

    הלוגיקה של הנתונים נשברת

  7. 07:02

    BEGIN TRANSACTION ו-COMMIT

  8. 08:40

    Commit או Rollback: מה קורה

תמלול ההרצאה: מבוא לטרנזקציה - transaction

הטקסט המלא של הדקות הראשונות בהרצאה «מבוא לטרנזקציה - transaction» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:19

    שלום לכולם היום אנחנו נבין מה זה טרנזקציה ולמה זה כל כך חשוב אז בואו קודם כל ניצור לנו איזשהו דאטאבייס קטן אתם רואים זה השרת האמיתי שלי שיש לי פה דאטאבייס לאתר הווב שלי לאיזושהי מערכת ייעול הפנימית שלי אז בואו נעשה איזה דאטאבייס שנקרא לו טסט על השרת המרוחק שימו לב זה שרת שנמצא במקום אחר ואני מתחבר אליו אני עושה טסט דאטאבייס שנקרא טסט ובתוך דאטאבייס טסט אנחנו נעשה טבלה שמדמה

  2. 00:51

    לנו בנק נעשה לנו טבלה שמדמה לנו איזה בנק קטן רק לשם דוגמה בוא נעשה זריז קודם כל נעשה איזושהי עמודה של שם ואחרי שנעשה עמודה של שם נעשה עמודה של נניח כמה כסף יש אז נעשה name שזה יהיה nvarchar n כדי שזה יתמוך בעברית רוסית וכל מיני שפות ולא רק אנגלית unicode varchar שהאורך משתנה ולא קבוע

  3. 01:30

    חמישים וכסף money my money my money וזה נעשה נניח אינטג'ר נניח מספרים שלמים בלבד מי שרוצה להיות מדויק יכול לעשות פלוט או מאני אני אסתפק באינטג'ר אוקיי כאילו יש לנו רק ממש ספרות שלמות אוקיי כאילו שאנחנו שופכים כסף בשלם שיהיה לנו פשוט יופי נעשה משהו כזה כן בנק אוקיי זה טבלה שנקראת בנק זאת טבלה

  4. 02:09

    משהו מאוד מאוד פשוט, ונשים פה שתי שורות, נניח נעשה חשבון בנק לפרקטי קיו, נעשה חשבון בנק לפרקטי קיו עם 800 דולר, ונשים חשבון לדוד שיש לו נניח 300 דולר, אוקיי?

  5. 02:35

    יפה. עכשיו אנחנו רוצים לעשות תוכנה פשוטה, איזה אתר ווב שמעביר כסף. דוד צריך לשלם 100 דולר לפרקטי קיו בגין השכרת מחשב.

  6. 02:46

    איך אנחנו נעשה את זה? תחשבו שאנחנו עושים אתר אינטרנט או איזה אפליקציה לאייפון שהוא לוחץ להעביר כסף למכללה. דוד מעביר 100 דולר מ-300 למכללה.

  7. 03:01

    איך אנחנו נעשה את זה? איך נעשה העבר ראשי כסף? אנחנו עושים כזה דבר update, לדוגמה נעשה פה update איזה טבלה? טבלת בנק. כן, update בנק, set, איך נקראות העבודות פה? אני כבר שכחתי.

  8. 03:23

    זה מיימני, מיימני, עושה קופי פייסט, מיימני שווה מיימני מינוס מייר, אוקיי, ווייר ניים שווה לדאגה. נעשה משהו פשוט, נניח שזה מה שאפליקציה או אתר וב של הבנק שולח, אוקיי, הבנק, אתר וב שלו, הוא נכנס לאתר וב שלו ושלח את הבקשה הזאת.

  9. 03:59

    ואנחנו רוצים לראות את הבעיה שיש עם אין טרנזקציות. ועכשיו אנחנו עושים אותו דבר, רק פלוס 100. פלוס 100 לפרקטיקיו, כן? לפרקטיקיו, עושה פה פי פייסט, יופי.

  10. 04:21

    בואו נראה שזה עובד. נעשה את הסלקט הזה, ניקח לפה. נעשה סלקט לפני שכל זה קורה, ונעשה סלקט אחרי שהכל קורה. סוגריים מרובעים אתם לא חייבים לשים.

  11. 04:40

    שימו לב, היה 800, 300, ונהיה 900, 200. בואו נראה, זה עובד מצוין. יפה מאוד. עבר עוד חודש ודוד רוצה שוב להעביר את הכסף אבל פעם נפל, התנתק כבל רשת באמצע פעולה.

  12. 05:00

    מה זאת אומרת? הוא נתן את הפעולה באתר האינטרנט, השרת של אתר האינטרנט, כן, האתר עצמו, ביצע את הפקודה הראשונה, שלח פקודה ראשונה לשרת, השרת ביצע אותה, שימו לב, ביצע אותה, אבל פה, לפני שאתר האינטרנט שלח את הפקודה השנייה

  13. 05:19

    לדאטאבייס, לפני שזה קרה, התנתק לו כבל רשת. אבל רשת התנתק והsql לא קיבל את הפקודה הזאת לא קיבל הוא לא יודע שהיא קיימת לא קרה כלום מבחינתו מבחינתו את מה שהיה הוא עשה משהו חדש הוא לא קיבל יפה ואז הפקודה השנייה לא התבצעה אז מה אנחנו רואים יום למחרת שעשינו ריסטה שבפרקטי קיוב היה

  14. 05:47

    900 דולר ונשאר 900 דולר ולדוד היה 200 דולר ונשאר 100 דולר דוד פרקטי קיוב המנהל של פרקטיקיו מתקשר לדוד אומר, לא קיבלתי כסף.

  15. 06:00

    דוד אומר, מה פתאום? היה 200, נהיה 100. הבנתם שהלך פה כסף לאיבוד. ויש פה בעיה רצינית, בגלל איזושהי תקלה טכנית, הלוגיקה של הדאטה בייס התקלקל, כן?

  16. 06:17

    לא ייתכן מצב שבחשבון אחד ירד הכסף ובחשבון שני הוא לא הגיע. אתם מבינים שזה יכול להיות גם במניות בבורסה, SQL מנהל המון המון, ב-SQL הכל מנוהל, כן? כל הנתונים מנוהלים במערכות כמו SQL, זה מייקרוסופט או לא מייקרוסופט כדי שהדבר הזה לא יקרה בואו נחזיר חזרה למצב כדי שלא יצא מצב שאנחנו הורדנו

  17. 06:43

    לאחד כסף ולשני לא נתנו אנחנו צריכים להגיד ששתי הפעולות האלו הם יחידה לורגית אחת או ששתי מתבצעות או שאף אחד מהם לא מתבצע אבל אין דבר כזה שזה חצי אין דבר כזה שזה חצי חצי שימו לב מה אנחנו עושים אנחנו עושים פה בגין טרנזקשן קוראים לזה טרנזקציה ואני יכול דרך אגב לתת שם לטרנזקשן טרנזקציה אבל לא צריך ובסוף אני עושה קומיט

  18. 07:14

    קומיט טרנזקציה קומיט זה אומר סיימתי את הטרנזקציה הכל מצוין יפה מאוד שימו לב מה יקרה עכשיו עכשיו אם החשמל ייפול בוא בוא נתחיל זאת אומרת אנחנו מתחילים פה פה פה מגיעים עד לכאן ופה נופל החשמל כן פה נופל לנו החשמל יפה עשינו שימו לב מה קורה בסלקט בסלקט בוא נראה אם לדוד ירד 100 דולר מתוך ה-200

  19. 07:55

    מניח אתם יודעים מה, נופל כל החשמל. ברגע שנופל כל החשמל, אז השרת לא הספיק לשלוח קומיט טרנזאקשן, השרת לבד עושה רולבק. זה היופי.

  20. 08:13

    קומיט זה לגמור את זה מצוין, במקרה שהגענו לסוף, ואם לא הגענו לסוף, השרת עצמו מספיק חכם בשביל לעשות רולבק. ברגע שהשרת רואה שטרנזאקציה לא הסתיימה ונפל לו החשמל, הוא יודע לעשות לזה רולבק.

  21. 08:27

    כן? זאת אומרת, ברגע שהשרט עושה רולבק, רולבק טרנזקשן, שימו לב מה יקרה. זה משהו שהשרט עושה אוטומט. למרות שהורדנו לו מ-200, זה חזר חזרה.

  22. 08:48

    ראיתם? הורדנו לו 100 דולר וזה חזר חזרה. בואו אני אדגים שוב. זה או זה או זה. או שקומיט או רולבק.

  23. 08:55

    קומיט זה אומר שהכל מצוין, עוברים הלאה. ורולבק אומר שום דבר, מגלגלים הכל חזרה בזמן. אז יופי. אז בואו תראו.

  24. 09:07

    מתחילים בככה. מתחילים ב-200 דולר. אתם רואים התחלנו ב-200 דולר, התחלנו טרנזקציה, הורדנו לו 100 דולר לדוד ואז נפל לנו החשמל.

  25. 09:29

    אחרי שהיה לו כבר 100 דולר בחשבון וזה לא הגיע לפרקטיקיו, לפרקטיקיו נשאר 900. תסתכלו מה קורה עכשיו, אני עושה rollback ואחרי ה-rollback ה-200 דולר חזרו חזרה לדוד.

  26. 09:46

    זה בדיוק מה שרציתי להראות לכם. בואו נכניס את כל זה להערה, כדי שהכל הזה לא יתבצע ושימו לב מה קורה אצלנו.

לקורס המלא: קורס SQL ו‑DBA אפליקטיבי

ההרצאה הקודמת: cursor - חלק 2

ההרצאה הבאה: Transaction Isolation Level

הרצאות קשורות מקורסים אחרים

  • Server Transaction

קורסים נוספים במסלול

  • קורס NoSQL - MongoDB
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI