280 likes | 500 Views
236363 מערכות מסדי נתונים. 1. הקדמה. ברוכים הבאים !. מרצה: יוהן מקובסקי חדר 628 טלפון 4358 דוא"ל: janos@cs.technion.ac.il שעת קבלה: יום רביעי, 13:30 מתרגל אחראי: יבגני אברמוביץ' חדר 407, טלפון 4349 דוא"ל: aevgeny@cs.technion.ac.il
E N D
236363מערכות מסדי נתונים 1. הקדמה
ברוכים הבאים ! • מרצה: יוהן מקובסקי חדר 628 טלפון 4358 דוא"ל: janos@cs.technion.ac.il • שעת קבלה: יום רביעי, 13:30 • מתרגל אחראי: יבגני אברמוביץ' חדר 407, טלפון 4349 דוא"ל: aevgeny@cs.technion.ac.il • מתרגל: עדי עומרי חדר 312, טלפון 4335 דוא"ל: omari@cs.technion.ac.il
איך יראה העולם בלי מסדי נתונים? • דמיינו תסריט שבו, יום אחד, בין רגע נמחקים כל מסדי הנתונים בעולם: • בלי מסדי הנתונים של משרדי הממשלה לא ניתן יהיה לנהל את המדינה: ימחק המידע לגבי גביית מיסים, אזרחות, רישיונות, ... • בין היתר יתקשו או יפסיקו לפעול: בנקים, בתי חולים, חברות הטלפונים, חברות התעופה, אוניברסיטאות, ולמעשה כל גוף המשלם משכורות באופן חוקי. אז מי שומר על היתרה שלכם בבנק, הציונים, המידע הרפואי, ...?
נושאי הקורס • א. הקדמה • ב. דיאגראמות ישויות קשרים (ERD) • ג. אלגברה של יחסים (אלגברה רלציונית) • ד. תחשיב היחסים • ה. שפת המודל הלוגי Datalog • ו. תיאוריה של תכנון מסדי נתונים • תלויות פונקציונאליות • פירוק סכמות וצורות נורמאליות • ז. שפת XML ושפות השאילתה XPath ו-XQuery • תילמד בתרגול: שפת השאילתות SQL • לימוד בקריאה עצמית : שפת הגדרת המידע ODL ושפת השאילתות OQL.
פרטים על הקורס • אתר הקורס: http://webcourse.cs.technion.ac.il/236363/ • תרגילים: 3 יבשים ואחד רטוב • הגשה בזוגות • חישוב הציון:80% מבחן סופי 20% תרגילי בית (מותנה בציון עובר במבחן), • 8% התרגיל הרטוב ו-4% כל תרגיל יבש. • כרגיל יהיו שינויים (בעיקר קלים) מהשקפים של הסמסטר הקודם.
מסדי נתונים • מסד נתונים הינו אוסף (לרוב גדול) של נתונים המתארים פעילות בתחום כלשהו בארגון או במספר ארגונים קשורים. • דוגמאות: מסד נתונים של בנק, מסד נתונים של ספריות במוסד אקדמי, מסד נתונים של רשת סופרמרקטים. • מערכת ניהול מסדי נתונים (DBMS─Database Management System) תוכנה המיועדת לניהול מאגרי נתונים גדולים. • מדוע יש צורך במערכות DBMS? האם מערכות הפעלה ומערכות הקבצים בהם אינן פתרון מספק?
היסטוריה • 1960s – תחילת פיתוח מערכות ניהול נתונים • Late 1960s – פיתוח המודל ההיררכי (מוטיבציה: מערכות לניהול הזמנת מקומות בטיסה) • 1970 – הופעת המודל הרלציוני (Edgar Codd) • 1980s – המודל הרלציוני הופך להיות המודל הדומיננטי, פיתוח שפת השאילתות SQL • 1990s – התפתחות התמיכה ביכולות אנליזה מגוונות, סוגי נתונים שונים, שאילתות מורכבות, מחסני נתונים וכו'. • לאחרונה – כיווני התפתחות שונים, כגון: • פיתוח שכבת אפליקציה מעל שכבת מסד הנתונים, לדוגמה ERP- Enterprise Resource Planning • שכבת הנתונים באפליקציות אינטרנט • מסדי נתונים לניהול מידע גיאוגרפי, ביולוגי, מידע מרשתות סנסורים, וכו'
מערכת הקבצים מול ה-DBMS • שימוש במערכת הקבצים דורש מימוש של: • - שמירת הנתונים על הדיסק באופן מובנה • - תוכניות יעילות לשליפת נתונים • - מניעת אי עקביות • (למשל, האם ניתן לייצג שני אנשים שונים בעלי אותו מספר זהות?) • - טיפול בריבוי משתמשים • - הגנה על הנתונים: • - מפני נפילות • - מפני גישה לא מורשית DBMSהיא למעשה מימוש של כל אלו ועוד.
מערכת ניהול מסדי נתונים • מערכת לניהול מסדי נתונים עובדת על פי מודל נתונים ומאפשרת שליפת מידע בעזרת שפת שאילתות. • מודל הנתונים: דרך ייצוג הנתונים במערכת.ייצוג המידע נעשה על פי מודל נתונים מופשט, וביצוע השאילתות נעשה על פי המודל הנתון. • דוגמה: במודל הרלציוני, הנתונים מיוצגים בטבלאות והשאילתות גם הן מחזירות טבלאות • שפת שאילתות: למשל SQL. מאפשרת לשלוף מידע ממסד הנתונים.
מערכת ניהול מסדי נתונים • מערכת לניהול מסדי נתונים מכילה את האלמנטים הבאים: • רכיב לניהול אמצעי האכסון: מאפשר שמירה יעילה של מידע בדיסק וחיפוש יעיל בקבצים. • מעבד שאילתות: מאפשר שליפה יעילה של מידע מהדיסק. • בקרת מקבילות והתאוששות: רכיב שנועד למנוע כשלים הנובעים מריבוי משתמשים או מנפילת המערכת. • אימות שלמות המידע: רכיב הבודק שכל הנתונים המסד מקיימים תנאים לוגים מסוימים (למשל שת"ז היא מספר ייחודי). • בטחון המידע: רכיב המאפשר ליצור מגבלות על הרשאות גישה.
SQLinterface Query evaluation engine: Parser Optimizer Operator Evaluator Plan executor Transaction manager Recovery manager File and access methods Buffer manager Lock manager Disk space manager Disk Data files Index files System catalog
אי תלות במודל הנתונים • יתרון חשוב של השימוש במערכת לניהול מסדי נתונים: אי תלות במודל הנתונים. • מושג על ידי חלוקה לשלוש רמות של הפשטה: רמה פיסית אי תלות באחסון הפיזי מעבר לכאן תאור המידע לפי המודל שלנו (מאורגן לפי סכימה רלציונית) רמה לוגית אי תלות בארגון הלוגי מעבר לכאן מבטי משתמש (views)
מסדי נתונים ─ הרמות העליונות • רמת משתמש הקצה: לכל משתמש מבט (חלקי) על המסד. משתמשים שונים יכולים לראות מבטים שונים, ואלו לא בהכרח משקפים את ארגון הנתונים הפיזי במסד.
פעולות על המסד • הגדרת מבנה מסד הנתונים (בעקבות ניתוח צורכי היישום): כוללת את המבנה הלוגי של הנתונים והקשרים ביניהם. מתבצעת בדרך כלל באמצעות שפת הגדרת נתונים (DDL - Data Definition Language). • ביצוע שאילתות (Queries) להפקת מידע מהמסד (באמצעות התוכנות המורצות מעל המסד). • שינוי נתונים: הוספה, מחיקה ועדכון של פרטים. לשפה לביצוע שאילתות ושינויים קוראיםשפת שינוי נתונים (DML - Data Manipulation Language). • פעולות נוספות: הוספת אינדקסים, הגדרת מבטים ועוד.
מנהל המערכת • מנהל המערכת (DBA – Database Administrator) אחראי, בין היתר, על: • - תכנון הרמה הלוגית והתאמה לרמה הפיסית • - אבטחת מידע וניהול הרשאות גישה • - טיפול במערכת ההתאוששות מנפילות • - כוונון של המערכת (Tuning)
מסדי נתונים ─ אספקטים נוספים • ברמות התחתונות: יש לתרגם את הגדרות הנתונים לתכנון הולם של מבני הקבצים המאוחסנים פיזית על הדיסק. בהינתן שאילתה, יש לתרגם אותה לאלגוריתם יעיל לשליפת הנתונים מהקבצים. • בנוסף, יש לממש עבור מסד הנתונים בקרת גישה (לפי הרשאות המשתמשים), בקרת מקביליות (עבור מסדים הנגישים למספר משתמשים בו זמנית), אבטחת עמידות המידע בנפילות של המערכת . . . • אספקטים אלו הם מחוץ לתחום של קורס זה.
מודלים של נתונים • ישנם מספר מודלים של נתונים: • המודל המדרגי ומודל הרשת: מודלים הסטורים שלא ילמדו בקורס זה. במודלים אלו הקשר בין האובייקטים השונים במסד הנתונים נעשה באמצעות מצביעים (pointers). אין הפרדה בין הרמה הלוגית לרמה הפיסית. • המודל הרלציוני (יחסי, טבלאי): האובייקטים מסודרים בטבלאות. קשר בין רשומות מטבלאות שונות יצוין ע"י ערכים זהים במקומות מתאימים בטבלאות. הקורס יעסוק בעיקר במסדי נתונים רלציוניים. • מודל הישויות והקשרים (ER): כלי חשוב לניתוח דרישות ולתכנון סכימה למסד נתונים רלציוני (או אחר). זהו מודל מופשט ואין לו מימוש במערכת ניהול מסדי נתונים.
מודלים של נתונים – המשך • מודל הנתונים המכוון עצמים (Object Oriented Data Model): נתונים מיוצגים על ידי אובייקטים באופן המזכיר רעיונות מתכנות מכוון עצמים (OOP). • מודל הנתונים המובנה למחצה (Semistructured Data Model): הנתונים מיוצגים במבנה של גרף אך בשונה ממודל הרשת, ישנה אי תלות ברמה הפיסית. • XML: מקרה פרטי של מודל הנתונים המובנה למחצה שבו הנתונים מיוצגים במבנה של עץ.
המודל הרלציוני • נניח שאנו רוצים לייצג אוסף של אובייקטים מסוג מסוים (למשל: ברצוננו לאסוף נתונים על שחקני קולנוע)ושבידינו רשימה של תכונות שערכיהן מאפיינות כל אובייקט(למשל: שם, תאריך לידה, וסרט ראשון). • אנו נוכל להביט על אוסף האובייקטים כטבלה, שבה כל שורה מתאימה לאובייקט, וכל עמודה מכילה את הערכים של כל האובייקטים עבור תכונה אחת. • שימו לב: הטבלה לא בהכרח מתארת את אופן כתיבת הנתונים הפיזית על הדיסק, אלא מהווה ייצוג של הנתונים ברמה הלוגית.
המודל הרלציוני: טרמינולוגיה תבנית (סכמה, כותרת הטבלה) תכונה (אטריביוט, שם עמודה) רשומה (שורה) יחס (רלציה, טבלה)
הגדרה פורמאלית • 1. נתונה קבוצה של שמות תכונות A1,…, An וקבוצה D1,…, Dnשלתחומים המתאימים לתכונות (כל תחום הוא קבוצה של ערכים). • 2. נסמן ב- R(A1,…, An) את הסכמה הרלציונית המכילה את n התכונות A1,…, An • יחס r מעל R הינו תת קבוצה של מכפלת התחומים: • r ⊆ D1×D2× … × Dn במודל הפורמאלי, יחס הוא קבוצה. המימוש במערכות DBMS שונה מהמודל הפורמאלי בשתי הנקודות הבאות: א. במימוש, טבלה תהיה רב קבוצה ולא קבוצה, כלומר, רשומה עשויה להופיע בטבלה יותר מפעם אחת. ב. יש חשיבות לסדר.
ההגדרה הפורמלית – נקודת מבט • במקום להסתכל על כל ישות כשורה בטבלה, מסתכלים עליה כעל נקודה במרחב כל הערכים האפשריים שניתן להציב בתכונות. הרלציה מתוארת כתת קבוצה סופית של "קבוצת כל האובייקטים האפשריים". ג'ון ווין, 26.5.1907 שם (מחרוזת) מרילין מונרו, 1.6.1926 תאריך לידה
מפתחות • על-מפתחשל יחס r הינו קבוצת תכונות המוכלת בסכמה של r כך שהערכים בתכונות אלו מאפשרים לזהות באופן חד ערכי רשומות מ-r. כלומר, מפתח על מגדיר אילוץ: אין שתי רשומות ביחס r שלהן ערכים זהים בכל עמודות המפתח. • ליחס עשויים להיות מספר מפתחות על. מפתח על הוא מינימאלי אם אין אף תת קבוצה שלו שהיא מפתח על. מפתח כזה יקרא גם מפתח קביל. • ניתן לבחור אחד ממפתחות העל ולהגדיר אותו כמפתח ראשי. הגדרה זו משחקת תפקיד ברמת מימוש המסד.
מסדי נתונים פשוטים • במקרה הפשוט ביותר, כל האובייקטים שנרצה לאסוף עליהם מידע יהיו מאותו "סוג", זאת אומרת שתהיה לכולם אותה רשימת מאפיינים ורק ערכי המאפיינים יבדילו ביניהם. • דוגמא: רשימת קבצים מוזיקלים להשמעה. כל אובייקט יתאפיין ע"י שם השיר, שם הקובץ, הפורמט (mp3/ogg/wma...) וזמן הנגינה. • במקרים כאלה אין החלטות קשות ברמת הארגון הכללי של המסד ─ כל הנתונים יאורגנו כטבלה אחת, שתמומש על הדיסק באחד האופנים הנלמדים בקורס "מערכות קבצים".
מסדים מורכבים יותר ─ דוגמא • נניח שנרצה לתכנן מסד נתונים עבור מזכירות הפקולטה. במקרה כזה ניתן לאפיין מספר סוגים של ישויות שעליהן נרצה לשמור מידע: • סטודנטים─ עבור כל סטודנט נשמור את שמו, מס' הזהות וכתובת. • קורסים─ עבור כל קורס נרצה לשמור את שם הקורס, מס' הקורס ושם מרצה. • אם סטודנט מסוים השתתף בקורס מסוים, נרצה לדעת על כך, וכן לדעת את ציונו הסופי של סטודנט בקורס. לכן, לכל השתתפות של סטודנט בקורס, נשמור קישור המעיד על ההשתתפות (ומכיל גם את הציון הסופי בקורס). • כיצד נארגן את הישויות והקשרים הנ"ל?
אפשרויות ארגון • אפשרות פשטנית: נשמור טבלה אחת גדולה. לכל רישום של סטודנט לקורס, נחזיק את שם הסטודנט, מס' זהות, כתובת, שם הקורס, מס' הקורס, שם מרצה, וציון סופי. לאפשרות זו חסרונות רבים. • יתירות רבה מדי─ מדוע צריך לאחסן את כתובת הסטודנט מספר רב כל כך של פעמים? • חוסר יכולת לייצג תרחישים מסוימים─ איך נשמור את נתוני הסטודנט עבור סטודנט שלא לקח עדיין אף קורס? • קושי בעדכון─ אם הסטודנט משנה כתובת, נצטרך לאתר ולשנות את כל הרשומות הקשורות בלקיחת קורס על ידו. יהיה קשה להימנע ממצב שבו נתוני הסטודנט יפסיקו להיות עקביים בין הרשומות.
אפשרויות ארגון (המשך) • אפשרות יותר ריאלית: נשמור טבלה אחת לסטודנטים, טבלה אחת לקורסים וטבלה אחת לרישומים של סטודנטים לקורסים. • אפשר לשמור עבור כל רישום לקורס רק את התכונות המזהות של הסטודנט (מס' זהות) ושל הקורס (מס' קורס), בנוסף לציון הסופי. • הגדרת קיומו של סטודנט מסוים אינה תלויה ברישומו לקורסים ─ יש לכל סטודנט מעמד של ישות "עצמאית" במאגר וניתן לעדכנו ככזה. בדומה לכך נוכל לעדכן רשומה של קורס.
החלטות קשות • מה יקרה אם עבור סטודנט מסוים נרצה לדעת לא רק אילו קורסים הוא לקח, אלא נרצה לדעת גם אצל אילו מרצים הוא למד? • אם בטבלה עבור יחסי לקיחת הקורסים נשמור רק את מספרי הקורסים, אז שאילתה מעין זו תיקח זמן רב יותר כי נצטרך לבצע התאמה גם עם הטבלה עבור ישויות הקורסים. • יתרה מזו, אם בינתיים התחלפו המרצים בקורס, אז השאילתה הנ"ל תחזיר תשובה לא נכונה! איך נתקן זאת? • נוסיף לטבלת היחסים עמודה עבור מרצה הקורס שנלקח?נגדיר סוג חדש של ישויות "מרצה" ויחסים מתאימים? • ההחלטות לגבי ארגון הנתונים במסד אינן טריוויאליות!