תנועה (מערכות מידע)

במערכת מידע, תנועה (באנגלית: transaction) היא פעולה לוגית לשינוי נתונים המורכבת מסדרת פעולות בדידות. תנועה מכונה לעיתים גם יחידת עבודה לוגית, מכיוון שכל הפעולות הבדידות המרכיבות אותה חייבות להתבצע כיחידה אחת, או לא להתבצע כלל. תכונה זו נקראת אטומיות. השימוש בתנועות נפוץ מאוד בתחום מסדי הנתונים ומערכות ניהול תנועות, ובמידה פחותה גם במערכות קבצים. במערכות אלה, היכולת להבטיח את שלמות הנתונים מכונה ACID.

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

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

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

מינוח ותיווי
 בהנדסת תוכנה, מערכת תוכנה התומכת בתנועות מכונה "טרנזאקציונלית".
 מקובל לסמן תנועה באות T גדולה.

ראו גם
 ACID
 מסד נתונים
 ניהול תנועות
 תזמון (מסדי נתונים)

הנדסת תוכנה
מערכות מידע
מבני נתונים