מסד נתונים

מסד נתונים (באנגלית: Database - דַּאטָה־בֵּייס, או בראשי תיבות DB, "בסיס נתונים") הוא אמצעי המשמש לאחסון מסודר של נתונים במחשב, לשם אחזורם ועיבודם. מסד נתונים מאוחסן באמצעי אחסון נתונים, בדרך כלל על גבי דיסק קשיח, המאפשר גישה ישירה לנתונים. הגישה למסד הנתונים נעשית באמצעות תוכנה ייעודית - מערכת לניהול מסד נתונים (DBMS - Database Management System). מסד הנתונים בנוי לפי מודל לאחסון הנתונים, כמו מנגנונים פנימיים למיון ולחיפוש.

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

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

סוגים שונים של מסדי נתונים

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

חלוקה לפי סוג
 מסדי נתונים אקטיביים (Active Databases).
 מסדי נתונים עתיים (Temporal Databases).
 מסדי נתונים שיתופיים (Cooperative/Federated Databases).
 מסדי נתונים מבוזרים (Distributed Databases).
 מסדי נתונים הסתברותיים (Probabilistic Databases).

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

אוסף כל השדות המתארים את האזרח הוא הרשומה (record) של אותו אזרח. לכל רשומה יש מפתח ראשי (primary key), המשמש לזיהוי חד-משמעי שלה. מפתחות משניים משמשים לאיתור מהיר של רשומות ולקישור בין רשומות. ברשומת האזרח, מספר הזהות משמש כמפתח ראשי, ושם המשפחה והשם הפרטי משמשים כמפתח משני. מפתח המורכב מכמה שדות קרוי מפתח מורכב.

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

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

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

Query Optimizer רכיב במסד הנתונים האחראי לתכנון ביצוע השאילתות במסד הנתונים והמבצע מיטוב שאילתות.

Storage Manager מנגנון המנהל את האחסון הפיסי של הנתונים על גבי הדיסק.

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

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

מנגנון בקרת המקביליות (Concurrency Control) מנגנון זה אחראי לביצוע התקין של תנועות במסד הנתונים (Transactions). מנגנון בקרת המקביליות אחראי לקיום תכונות ACID במסד הנתונים. תנועה (טרנזקציה) היא אבסטרקציה של אוסף פעולות קריאה וכתיבה אטומיות לאובייקטים במסד הנתונים. היסטוריה מגדירה יחס סדר חלקי בין תנועות הרצות במקביל במסד הנתונים. כאשר שתי תנועות שונות ניגשות לאותו אובייקט ייתכן מצב של חוסר עקביות במסד כתוצאה מכך ששתי התנועות מתנגשות. שתי תנועות נקראות מתנגשות כאשר לפחות אחת מהן מבצעת פעולת כתיבה לאותו אובייקט. מנגנון בקרת המקביליות דואג שביצוע התנועות יהיה נכון ושקיף למשתמש. אחת מהמנגנונים הנפוצים לבקרת מקביליות הוא מנגנון הנעילות (Lock Based Mechanism). האלגוריתם הנפוץ ביותר נקרא 2PL (Two Phase Locking). חיסרון בשימוש במנגנון נעילות כגון 2PL הוא האפשרות להגיע למצב של קיפאון (Deadlock). מנגנונים מבוססי נעילות נוספים שבשימוש הם: STRICT 2PL ו Conservative 2PL. כמו כן ישנם מנגנוני בקרת מקביליות המשתמשים בתגיות זמן (Timestamps).

מנגנון שכפול (Replica Control) מנגנון המאפשר ליצור כמה מופעים של מסד הנתונים באתרים שונים ולבצע סינכרון בין הנתונים שבהם באופן שכל שינוי במסד נתונים אחר מועבר לכל היתר. באמצעות מנגנון השכפול אפשר להעביר גם שינוי הגדרות של מסד הנתונים לכל הבסיסים האחרים.

מסדי נתונים נפוצים

מודל רשתי
 ADABAS

מודל היררכי
 IMS/DB

מודל טבלאי
 MySQL
 Microsoft SQL Server
 אורקל
 Access
 DB2
 PostgreSQL
 אינפורמיקס
 Sybase Database
 SQLite
Firebird

מודל העצמים
 PostgreSQL

NoSQL 
 MongoDB
 אפאצ'י קסנדרה
 RavenDB

ראו גם
 אינדקס
 תוכנה - מונחים
 מסד נתונים גרפי
CAP theorem

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

קישורים חיצוניים 

 מסדי נתונים באינטרנט, אתר אית"ן
 ארגון ומפתוח של מאגרי מידע (האו"פ)
  הרצאות בקורס בסיסי נתונים (בעברית), באתר אוניברסיטת בן-גוריון
 מילון למונחי ארגון נתונים | 2002 | השלמות 2014 | באתר האקדמיה ללשון העברית
 
 

מבני נתונים
אחסון נתונים
מונחים בתוכנה