ארגון נתונים וניהול קבצים

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

OCR (הסבר)
"| מאמרז הייפרמן = גללל = רשזמה ‏ 2%, מבנה פיסי:. 0 ערך יצחק עמיהוד 2 . ספרי לימוד והכשרה במדעי המחשב 5 הוצאת הוד-עמי בשותוף המכון לפריון העבודה והזוצור. "0 5 31 4 ארגון נתונים וניהול קבצים ארגון נתונים וניהול קבצים מאת רז הייפרמן ערך יצחק עמיהוד ספרי לימוד והכשרה במדעי המחשב הוצאת הוד-עמי בשיתוף המכון לפריון העבודה והייצור אסודה2ואהסמס הדהס דא או 5-|- סחה חההּוחז9ו10] ₪82 ע בטחווח ג אהח2!! עס 601160 69 כל הזכויות שמורות הוצאת הוד-עמי לספרי מחשבים ת.ד. 560 רמת-גן 105 52 6 פוחפות || ווח/-1100 30-08 ,560 אסם.0/ק אין להעתיק ולפרסם חלקים מספר זה ללא רשות בכתב מאת ההוצאה אלא לשם ציטוט קטעים קצרים בציון שם המקור הודפס בישראל אב תשמ"ב, אוגוסט 1982 72 2 ,קט עריכה גרפית והבאה לדפוס: חיים אלבוחר סדר: טכנוסדר בע"מ מוקדש לרעייתי ארנונה וילדי אייל ואילת הקדמה מערכות לניהול נתונים התפתחו בקצב מהיר בשנים האחרונות והן מהוות את אחד המרכיבים החשובים ביותר במערכות המידע הממוחשבות. קיים גידול מתמיד במספר המערכות לניהול נתונים ובמגוון מבני הנתונים שמערכות אלה מעמידות לרשות המשתמש. מטרת הספר להקנות לאנשים העוסקים בפיתוח והקמת מערכות מידע ממוחשבות בסיס להבנת עקרונות הפעולה ומבני הנתונים במערכות לניהול נתונים. הבנת מערכות אלה תאפשר למשתמש לפתור את בעית ניהול הנתונים בצורה טובה ויעילה יותר. הספר מחולק לאחד-עשר פרקים. בפרק הראשון מוצגים מושגי היסוד של מערכות לניהול נתונים ומושם דגש על ההבדל בין המבנה הלוגי של הנתונים לבין ייצוגם הפיסי במחשב. הפרק השני מציג את היחידות השונות לאיחסון נתונים ומוסבר ההבדל בין הזכרון הפנימי של המחשב לבין היחידות החיצוניות לאיחסון נתונים. הפרק השלישי מציג את השיקולים השונים בתכנון הרשומה, שהיא יחידת המידע המשמשת לתקשורת בין המשתמש לבין המערכת לניהול נתונים. פרקים ד' עד ט' מציגים את מבני הנתונים השונים הקיימים במערכות לניהול נתונים. הפרק העשירי מציג מודל כללי לתכנון קבצים במערכות מידע ממוחשבות ואת המאפינים השונים של הקבצים. הבנת מאפינים אלה מאפשרת בחירת מבנה הנתונים המתאים ביותר לפתרון בעית עיבוד הנתונים. הפרק האחד"עשר מציג את עקרונות הפעולה של המערכות לניהול נתונים והשיטות השונות לניהול הקבצים ביחידות האיחסון. את הספר חותמים ביבליוגרפיה ומילון נתונים. בסיום כל פרק הובאו מספר שאלות חזרה ותרגול של החומר הנלמד. כדי להקל על הלומד לא ניתן הסבר מפורט לנוסחאות ולשיטות חישוב מסוימות בגוף החומר אלא בנספחים שבסוף כל פרק. הספר מניח שלקורא נסיון מסוים בתכנון ויישום מערכות מידע ממוחשבות. רוב הדוגמאות מבוססות על שפת.0028021. השתדלתי, עד כמה שניתן, להתרכז בצד העקרוני של ניהול הנתונים ולא ביישום מערכת ניהול נתונים במחשב מסוים. המשתמש המעונין בהבנת יישום מערכת ניהול נתונים מסוימת מופנה לספרים הטכניים של היצרנים. תקוותי שספר זה ימלא את החסר בספרות בשפה העברית בתחום זה, ובכך יתרום לשיפור השימוש במערכות לניהול נתונים. תוכן הענינים הקדמה תוכן הענינים פרק ראשון: מבוא ומושגי יסוד בניהול נתוניס 141 12 13 14 מבוא מושגי יסוד בניהול נתונים סיכום שאלות פרק שני: יחידות לאחסון נתוניס 2.1 242 23 23 25 206 27 28 29 מבוא אחסנה פנימית מבוא ליחידות אחסון חיצוניות סרט מגנטי י דיסק מגנטי מאגרי קלט/פלט שאלות נספח א' --- חישוב גודל גוש בסרט מגנטי נספח ב' --- חישוב זמן חיפוש בדיסק. פרק שלישי: תכנון רשומות 341 .2 3 4 5 26 מבוא איפיון רשומות מפתחות קביעת השדות המרכיבים את הרשומה אירוע -- תכנון רשומות שאלות 5 23 29 0 3 5 7 20 46 33 7 58 3 69 99 6 18 33 66 פרק רביעי: שיטת ארגון סדרתי 141 +2 +3 +4 מבוא, עדכון קובץ סדרתי שיטות חיפוש בקובץ סדרתי סיכום . פרק חמישי: ארגון אינדקס סדותי 541 12 3 4 5 46 7 מבוא איחזור רשומה באמצעות אינדקס ארגון אינדקס סדרתי (1א 4 18) ארגון אינדקס סדרתי (1א 4 5) סיכום שאלות נספח--חישוב מספר רמות אינדקס פרק שישי: ארגון נתונים ישיר 1 2 3 4 5 6 17 8 39 20 מבוא יחוס ישיר יחוס לפי טבלה יחוס על-ידי חישוב שיטות לחישוב כתובות גישה ישירה ב-.60801 טיפול בגלישות טעינת קובץ לגישה ישירה סיכום נספח -- הפיכת כתובת יחסית לכתובת מוחלטת ביחוס ישיר פרק שביעי: אינדקסים משניים 41 2 3 4 5 פרק שמיני; ארגון נתוניס מורכב -- שרשוות |11 12 3 14 מבוא מפתח משני מבנה ושימוש באינדקס משני סיכום שאלות מבוא מבני נתונים משורשרים שרשרת פשוטה מבני שרשרות מיוחדים 199 8 14 15 16 139 1410 1412 13 146 100 12 17 18 19 13 13 17 113 14 17 1-39 11 17 15 16 17 48 1-9 1.10 1.11 טבעת פשוטה מצביע לרשומת מוביל שרשרת מקומות פנויים תכנון שרשרות סיכום שאלות נספח -- חישוב גודל קבוצה אופטימלי בשרשרת דילוגים פרק תשיעי: ארגון נתונים מורכב -- עצים |41 (92 (3 (94 (5 (6 |07 9.8 מבוא ארגון נתונים במבנה עץ שיטות לייצוג עצים ביחידות איחסון עצי חיפוש בינרים עצי חיפוש אופטימליים עצים מאוזנים שאלות נספח -- חישוב עומק העץ פרק עשירי: תכנון קבציס 11 12 13 14 15 16 מבוא מודל כללי לתכנון קבצים מאפייני קבצים סיכום אירוע -- תכנון קבצים שאלות פרק אחד-עשר: מערכות לניחול קבצים 111 112 13 14 15 16 מבוא שיטות עבודה במערכות לניהול קבצים ניהול קבצים ביחידות אחסון לגישה ישירה אבטחה ופרטיות בניהול קבצים סיכום שאלות נספח א' -- ביבליוגרפיה נספח ב' -- מילון מונחים 1 פרק ראשון מבוא ומושגי יסוד בניהול נתונים 1 מבוא 2 מושגי יסוד בניהול נתוניס 3 סיכום 4 שאלות בפרק זה מוצגים מושגי היסוד במערכות לניהול נתונים. 1 מבוא ארגון וניהול נתונים לשם אבטחת גישה נוחה ומהירה לאחסנה, לעדכון ולאיחזור הינם בין הנושאים המרכזיים המעסיקים א.ז המשתמשים במערכות מידע ממוחשבות, כלומר, מערכת ניהול הנתונים הינה הבסיס לפיתוח מערכת המידע. ההגדרה המקובלת היא שהמידע הינו התוצאה של עיבוד או ניתוח נתונים. הנתונים הם חומר הגלם לתהליך זה ומורכבים מאוסף של סמלים המיצגים עובדות. הבעיה מתעוררת כאשר נתונים למשתמש אחד הם מידע עבור המשתמש השני ולהיפך. לדוגמא, קופאי המסכם בסוף היום את התקבולים באותו יום מאמין שהוא מייצר מידע חשוב אודות פעילותו במשך היום. מבחינת הארגון, לטווח הארוך אלה הם נתונים גולמיים המשמשים להפקת מידע על תחזית המכירות. המסקנה היא שתהליך תרגום הנתונים למידע הינו תהליך סוביקטיבי התלוי במטרה למענה מבוצע התרגום ובזמן התרגום. ניתן לומר שהמידע נבדל מהנתונים בכך שהוא שותף בתהליכים ארגוניים של קבלת החלטות ופתרון בעיות. למידע יש ערך אשר הולך ופוחת עם הזמן כאשר המידע מאבד את עדכניותו. ככל שתהליך תרגום הנתונים למידע ארוך יותר, ערך המידע המופק הינו קטן יותר. המערכות לניהול נתונים הינס הכלי המאפשר בנית מסגרת ברורה לארגון הנתונים וליעול תהליך תרגומם למידע. מערכות אלה מאפשרות קבלת המידע בעיתוי מוקדם יותר, עיתוי שבו ערך המידע בשיאו. מערכת המידע בנויה מהרכיבים הבאים: א אנשים הזקוקים למידע ומשתמשים בו למטרות שונות. הארגון מורכב מאנשים המבצעים משימות מוגדרות (לדוגמא מחלקת השיווק האחראית על נושא השיווק בארגון, או מחלקת אחסנה האחראית על ניהול המלאי). מערכות המידע צריכות לשרת את הארגון בתחומים הבאים: תפעול שוטף, עזרה בתהליך קבלת החלטות, פתרון בעיות, ניתוח נתונים ועוד. ב | כללים לעיבוד הנתונים. זהו אוסף של כללים המגדיר את תהליכי העיבוד ואת צורת תרגום הנתונים למידע. כללים אלה תלויים בסביבה בה פועל הארגון. לדוגמא, כללי הנהלת חשבונות יקבעו מהם האירועים שיש להזין בהם את מערכת המידע. ג. | מכונות לעיבוד נתונים המבצעות את תהליך התרגום מנתונים למידע. מכונות אלה יכולות להיות מחשבים, מכונות להנהלת חשבונות, קופות רושמות ועוד. האדם עצמו שותף גם הוא בתהליך התרגום. מערכות המידע הממוחשבות מנצלות את המהירות העצומה של המחשב לעיבוד כמויות גדולות של נתונים, בדייקנות ובצורה אחידה. 15 ד. | נתונים, שהם "לב" מערכת המידע. הנתונים מאוחסנים ביחידות איחסון חיצוניות למחשב, מאחר וקימת מגבלה של כמות הנתונים שניתן לאחסן בזכרון המחשב (אחסנה פנימית). אם עלות האיחסון של הנתונים עולה על ערך המידע המופק מהם, לא נהיה מעונינים לאחסן אותם. ככל שערך המידע המופק הולך וקטן נהיה מעונינים להעביר נתונים אלה ליחידות איחסון זולות יותר, עד כדי אידשמירה. התכנון והגדרת המטרות של מערכת מידע חייבים להתחשב בכל הרכיבים האלה ולראותם כשלימות אחת. התחשבות רק בטכנולוגית המידע (שיטות העיבוד במחשב, שיטות ארגון קבצים, שיטות אחסון) יכולה להביא לכשלון המערכת. קביעת המטרות של מערכת המידע והגדרת הדרישות הם עיקר תפקידיו של מנתח המערכות. למרות שבספר זה נתרכז בעיקר בהיבטים שונים של טכנולוגית המידע, על מנתח המערכות להבין שזהו רק אחד מתוך המכלול הרחב של היבטים של תהליך ניהול וארגון הנתונים במערכת המידע. כללים לעיבוד הנתונים ניתן לחלק את מערכות עיבוד הנתונים לשני מרכיבים עיקריים: -- אוסף של תוכניות מחשב המיועדות לפתרון בעית עיבוד הנתונים. תוכניות אלה מיצגות את הכללים לעיבוד הנתונים (האלגוריתמים) והן נכתבות על"ידי המשתמש בשפה עילית כלשהי, כמו קובול או 21/1. התוכניות משמשות לניסוח ותרגום הבעיה לשפה המובנת על-ידי המחשב. -- אוסף הנתונים הדרושים לפתרון הבעיה. נתונים אלה מנוהלים בעזרת אוסף של תוכניות מחשב מיוחדות לפתרון בעית ניהול הנתונים (₪₪15 או 55 חסוחסהָההג1א 2818]). תכניות אלה נכתבות בדרך כלל על-ידי יצרן המחשב או בתי תוכנה המתמחים בסוג זה של תוכניות. מורכבותם הרבה של תוכניות אלה והצורך בניצול יעיל של משאבי המחשב מחייבת את כתיבתם בשפת סף (80886ח1.8 ע01ות4556/) מיוחדת לכל מחשב. 16 אי"תלות פיסית (66ח6066ק06ה1 2818] [8סופעתק) אי"תל?ות פיסית (60הס הטק ה המבנה הלוגי של הנתונים הינו הצורה בה רואה המשתמש את הנתונים. צורה זו יכולה להיות שונה מאד מהצורה בה הנתונים מאוחסנים ביחידות האחסון. המבנה הלוגי האידיאלי הוא המבנה המאפשר נוחות שימוש מירבית למשתמש. ככל שהמבנה הפיסי שקוף יותר מבחינת המשתמש נאמר שקימת אי-תלות פיסית גדולה יותר. להשגת אי-תלות יש לבנות מודל נתונים המאפשר את ביצוע התרגום בין המבנה הפיסי של הנתונים למבנה הלוגי. מודל נתונים תרשיס 2: מודל הנתונים מתרגם את המבנה הפיסי למבנה לוגי במקום לפנות לנתונים על סמך התכונות הפיסיות שלהם (כגון מספר דיסק, מספר גליל, מספר מסילה, מספר הבתים וכדומה) בונים מודל נתונים שהינו אוסף כללים לייצוג הנתונים והקשרים ביניהם. המודל אינו מתיחס לנתונים עצמם המאוחסנים ביחידות האחסון, כי אם לדרך בה הם מאורגנים מבחינה לוגית. לדוגמא נסתכל על יישום של ניהול מלאי. עבור כל פריט במלאי יש לנהל את הנתונים הבאים: מספר קטלוגי, מספר מחסן, כמות במלאי. לכל פריט במלאי ננהל את הנתונים האלה במסגרת רשומת מלאי. אוסף כל רשומות המלאי יוגדר כקובץ המלאי. תרשים 1-3 מציג את המבנה הלוגי שבנינו. ניתן לראות שבמודל לא התיחסנו כלל לתוכן הנתונים כפי שהם מופיעים ביחידת האיחסון אלא רק למבנה הלוגי שלהם. תרשים 1-3: מודל לוגי קובצ מלאי 17 כל רשומה לוגית ניתן לאחסן ברשומה פיסית אחת. זהו מודל הנתונים הפשוט ביותר והוא מיושם ברוב המערכות לניהול קבצים. ארגון הקוב עו מודל נתונים -<- מבנה לוג? מבנה פיס? ותרשים 1-4: מודל נתוניסם פשוט כפי שנראה בהמשך קיימות שיטות לארגון הקובץ בהן המשתמש פונה לרשומה על-ידי ציון המפתח של הרשומה המבוקשת, המשתמש אינו יודע כלל את הדרך בה המערכת לניהול קבצים מאתרת את הרשומה באופן פיסי. ארגון מחדש של הקובץ יכול לגרום לתזוזה של רשומות ממקום אחד למקום אחר אבל אין לכך כל השפעה על המבנה הלוגי שאותו רואה המשתמש. עם זאת אין אפשרות לומר שקימת כאן אי-תלות פיסית מוחלטת מאחר והמשתמש חייב בכל זאת להכיר את שיטת הארגון של הקובץ ולהשתמש בכללים המיוחדים לשיטה. עליו להכיר גם את המבנה המדויק של הרשומות בקובץ כדי שיוכל לטפל בהן. למערכות המשתמשות במודל נתונים זה נקרא מערכות לניהול קבצים (5וח5/5)6 1601ת886ח13/ 3116 -- 15א). מערכות אלו מציגות בפני המשתמש מספר שיטות מצומצם יחסית לארגון הנתונים. שיטות אלה מוצגות בפרקים 4, 5, 6, 7. מודל נתונים מבנה לוג תרשים 1-5: מודל נתוניס מורכב מבנה פיסל 8 כל רשומה לוגית ניתן לאחסן ברשומה פיסית אחת. זהו מודל הנתונים הפשוט ביותר והוא מיושם ברוב המערכות לניהול קבצים. ארגון הקוב ץו מודל נתונים | מבנה לוג? מבנה פיסיל ונרשיס 1-4: מודל נתוניס פשוט כפי שנראה בהמשך קיימות שיטות לארגון הקובץ בהן המשתמש פונה לרשומה על-ידי ציון המפתח של הרשומה המבוקשת, המשתמש אינו יודע כלל את הדרך בה המערכת לניהול קבצים מאתרת את הרשומה באופן פיסי. ארגון מחדש של הקובץ יכול לגרום לתזוזה של רשומות ממקום אחד למקום אחר אבל אין לכך כל השפעה על המבנה הלוגי שאותו רואה המשתמש. עם זאת אין אפשרות לומר שקימת כאן אי-תלות פיסית מוחלטת מאחר והמשתמש חייב בכל זאת להכיר את שיטת הארגון של הקובץ ולהשתמש בכללים המיוחדים לשיטה. עליו להכיר גם את המבנה המדויק של הרשומות בקובץ כדי שיוכל לטפל בהן. למערכות המשתמשות במודל נתונים זה נקרא מערכות לניהול קבצים (5וח55)6 1ח06ח486ה13/ 116 -- 15). מערכות אלו מציגות בפני המשתמש מטפר שיטות מצומצם יחסית לארגון הנתונים. שיטות אלה מוצגות בפרקים 4, 5, 6, 7. מודל נתונים מבנה לוגל תרשים 1-5: מודל נתוניס מורכב מבנה פיסי 8 אי-תלות פיסית (06ח066ח6ק06ח1 2818 |8סגפעק ) אי"חלות פיסית (שסתפטתטק6 טח 78 המבנה הלוגי של הנתונים הינו הצורה בה רואה המשתמש את הנתונים. צורה זו יכולה להיות שונה מאד מהצורה בה הנתונים מאוחסנים ביחידות האחסון. המבנה הלוגי האידיאלי הוא המבנה המאפשר נוחות שימוש מירבית למשתמש. ככל שהמבנה הפיסי שקוף יותר מבחינת המשתמש נאמר שקימת אי-תלות פיסית גדולה יותר. להשגת אי-תלות יש לבנות מודל נתונים המאפשר את ביצוע התרגום בין המבנה הפיסי של הנתונים למבנה הלוגי. מודל נתונים תרשיס 2: מודל הנתוניס מתרגס את המבנה הפיסי למבנה לוגי במקום לפנות לנתונים על סמך התכונות הפיסיות שלהם (כגון מספר דיסק, מספר גליל, מספר מסילה, מספר הבתים וכדומה) בונים מודל נתונים שהינו אוסף כללים לייצוג הנתונים והקשרים ביניהם. המודל אינו מתיחס לנתונים עצמם המאוחסנים ביחידות האחסון, כי אם לדרך בה הם מאורגנים מבחינה לוגית. לדוגמא נסתכל על יישום של ניהול מלאי. עבור כל פריט במלאי יש לנהל את הנתונים הבאים: מספר קטלוגי, מספר מחסן, כמות במלאי. לכל פריט במלאי ננהל את הנתונים האלה במסגרת רשומת מלאי. אוסף כל רשומות המלאי יוגדר כקובץ המלאי. תרשים 1-3 מציג את המבנה הלוגי שבנינו. ניתן לראות שבמודל לא התיחסנו כלל לתוכן הנתונים כפי שהם מופיעים ביחידת האיחסון אלא רק למבנה הלוגי שלהם. תרשים 1-3: מודל לוגי קובץ מלאי 7 קיימת אפשרות לארגן את המבנה הפיסי של הנתונים בצורה שונה לחלוטין מהמבנה הלוגי. בתרשים 1-5 הגתונים קשורים ביניהם בעזרת מצביעים שונים. המשתמש אינו צריך להכיר את הארגון הפיסי של הנתונים. הוא ממשיך לראות לפניו מבנה לוגי כלשהו ורק בו הוא מטפל. המשתמש יכול לפנות לנתונים במושגים "הרשומה הבאה" או "הרשומה הקודמת" מבלי להתיחס כלל למצביעים (5ז6)ת01?) הקושרים קטעי רשומות פיסיות לרשומה לוגית אחת. המערכות המיישמות מודלים מורכבים יותר של נתונים הן המערכות לניהול בסיסי נתונים (8ח516ע5 1חות380ה3]/! 88% 418 -- 81/5 ). מערכות אלה משתמשות במבני נחונים פיסיים מורכבים מאד (מבנים אלה מוצגים בפרק 8 ו- 9) ומאפשרות למשתמש אי-תלות פיסית. היתרונות של אי-תלות פיסית הם: א. נוחות שימוש מנקודת מבט המשתמש. המודל הלוגי בלתי תלוי בצורת ההצגה הפיסית ומשחרר את המשתמש מלהתיחס לבעיות הטכניות של אחסון הנתונים. תהליך פיתוח תוכנת היישומים פשוט יותר. ב. | אפשרות לבצע שינויים במבנה הפיסי של הנתונים ללא השפעה על תוכניות היישום. לדוגמא ניתן להשתמש בטכנולוגיות אחסון נתונים חדשות (כגון דיסק חדש) ללא צורך בביצוע שינויים כלשהם בתוכניות. כאן המקום לציין שקיימת סכנה מסוימת באי-תלות פיסית. מאחר והמשתמש אינו מכיר את המבנה הפיסי של הנתונים ואת שיטת אירגונם הוא יכול להשתמש במערכת בצורה לא יעילה (לדוגמא, אם המשתמש אינו יודע שגישה לרשומה לפי מפתח מחייבת סריקות נרחבות של כל הקובץ). המערכות לניהול נתונים מטפלות במגוון רחב של פונקציות. לדוגמא: הגדרת הנתונים, כתיבה ביחידות אחסון וארגונם כדי שניתן יהיה לשלוף אותם ביעילות. כמו כן מבצעות מערכות אלה מספר תפקידים שהמשתמש אינו מכיר והם "שקופים" מבחינתו. לדוגמא: ניהול מאגרים (9ז1]0ט3), ניהול אינדקסים, חישובי כתובות ועוד. באופן עקרוני רוב המערכות לניהול נתונים מכילות שני מרכיבים עיקריים: א. שפה להגדרת נתונים (6א1.30808 תסטות!]6 וג -- סס) שבעזרתה מגדירים את הנתונים בצורה נוחה למשתמש. ב | שפה לטיפול בנתונים (80886ח1.3 חסגוג!טקוח8] בוג --‏ 11א) המאפשרת את ביצוע הפעולות השונות כגון שליפה, איחסון וכדומה. נציג כאן קטע של תוכנית קובול להדגמת שני מרכיבים אלה. נציין רק שקובול אינו מערכת לניהול נתונים כי אם שפת תכנות המשתמשת בשירותים של המערכת לניהול נתונים. ניהול הנתונים מבוצע על ידי התוכנה לניהול נתונים מחוץ לתוכנית הקובול. 9 אא 0 50 םזזת-צ.. ]וא דסם. 551 .1 דא 5500 15 אסזד 124 אס 5-- צ גוא סת ספדדואס 15 פאססמת 1.85 .6פא-צג וא 15 560 דגס עמ הגדרת נתונים .6םא-צג א 01 .(169)09ק ידוא 03 .(9)3 216 א 03 .9)8(9 16 טואא 03 ,אסזפוצוכ פאהטספ6סאץ 5 -צא וא דטפא1 אמקס ידטס-צג/ וא דנופדוס עאכ = = = טיפול בנתונים 50 א08תתטת סאם דג מוןה-צגווא סגמפת ד ואא0- טק .סמא-צג וא ואסחת דטס-צג. זוא פדוא אש ד0ס-צ א םז- ץצ 1וא 1055 כפי שניתן לראות מוזולקת התוכנית לשני קטעים: קטע להגדרת הנתונים וקטע לטיפול בהם. בקטע להגדרת נתונים מגדירים את מבנה הרשומה בעזרת שמות סימליים הניתנים הן לרשומה והן לשדות המרכיבים אותה. בקטע לטיפול בנתונים משתמשים בפקודות .211 כדי לקרוא ולאחסן את הנתונים ובפקודות קובול לטיפול ברשומות. כפי שניתן לראות מתוך התוכנית, השיטה בה מתבצעת הגישה לנתונים לשליפת הרשומה שקופה לחלוטין מבחינת המשתמש. פניתו לנתונים מתבצעת ברמה הסימלית בלבד. 20 בנוסף לבעיות האחסון ועדכון הנתונים, שהן בעיות חשובות מאד וידונן בהרחבה בספר, נרחיב במקצת את הדיון בבעיית שליפת המידע. שתי השאלות הבסיסיות בכל מערכת המאחסנת נתונים הן: - היכן הנתון שאנו מחפשים? -- היכן הנתון "הבא" העונה על קריטריונים מסוימים? להבהרת שאלות אלה נשתמש בדוגמא הלקוחה ממערכת ידנית לניהול ספריות. אחסון הספרים בספריה יכול להתבצע לפי מספר שיטות. לדוגמא: -- לפי מספר קטלוגי (בעל מבנה לוגי מסויים), -- לפי נושא, -- לפי שם ספר (אלפהדביתי), -- לפי סדר קבלה. על מנת לאתר את הספר בעת הצורך, יש להכיר את שיטת אחסון הספר מכיון שהיא קובעת את שיטת איתורו. נסקור עתה את התהליך המחשבתי של האיתור: א היכן הספר: לאיתור ספר בספריה יש להכיר את שיטת האחסון, מכיון שהיא קובעת את מקום הספר וגם את שיטת איתורו. בחירת שיטת אחסון הינה בעלת חשיבות רבה מאחר ובחירת שיטה לא נכונה יכולה להכביד מאד על השימוש בספריה. החלפת שיטת האחסון תחייב שינוי בשיטת איתור הספר. מקום אחסון הספר יהיה שונה אם נאחסן אותו לפי מספר קטלוגי או לפי סדר קבלה. ב. | מהו הספר הבא: ברגע שמאתרים ספר מסוים, הספר "הבא" נקבע גם הוא על-ידי שיטת האחסון. לדוגמא נניח ששיטת האחסון היא לפי נושא. כאשר מאתרים ספר מסוים בנושא "ארגון קבצים" הרי שהספר המאוחסן לידו יהיה גם הוא באותו נושא, אם כי יתכן שנכתב על-ידי מחבר שונה. שיטת האיחסון הפיזית של הספרים קובעת את הסדר הלוגי שלהם ועונה על השאלה "מהו הספר הבא". הבעיה מתעוררת כאשר קריטריון החיפוש או האיתור אינו זהה לקריטריון האחסון. כאשר רוצים לשלוף ספר של מחבר מסוים או לקבל את רשימת כל הספרים שחוברו על ידו, לא ניתן לעשות זאת אם שיטת אחסון הספרים אינה מאפשרת שליפת ספרים לפי קריטריונים אלה. מאחר והספרים מאוחסנים לפי נושאים, יתכן שכל הספרים של מחבר מסוים "מפוזרים" על פני כל הספריה ולכן יש לסרוק את כל הספרים בספריה בכדי לאתר את הספרים המבוקשים. על מנת להתגבר על בעיה זו בונים אינדקסים, הרשומים בדרך כלל בכרטסות, והם מאפשרים לבצע תרגום בין קריטריון החיפוש לבין קריטריון האחסון. לדוגמא נבנה אינדקס הממוין לפי שם סופר כדי שאפשר יהיה בעזרתו לאתר את כל הספרים של סופר מסויים, אף-על-פי שהספרים אינם מאוחסנים בשיטה זו. ניתן לומר שהמטרה היא לבצע הפרדה בין הסדר הפיסי שבו מאוחסנים הספרים לבין הסדר הלוגי שלהם. אפשרות אחת היא שימוש באינדקסים. 211 שיטה אחרת לביצוע הפרדה זו היא שימוש במצביעים (20101618). נדגים שימוש במצביעים מחיי היום יום ונסתכל על עמוד של עתון. רוב הכתבות בעמוד הראשון מפוצלות והמשכן מופיע בעמוד אחר כלשהו. מבחינה פיסית הכתחבה מפוצלת בשני מקומות. בכדי ליצור את הרצף הלוגי לקריאת הכתבה יש להשתמש במצביע "ההמשך בעמוד 21" המגשר בין הסדר הלוגי לסדר הפיסי של קטעי הכתבה. ]3 2 מושגי יסוד בניהול נתוניס ו בסעיף זה נבהיר את המושגים בהם נשתמש בהמשך ונגדיר אותם בצורה פורמלית. א. נתונים (2819): עובדות גולמיות בלתי מעובדות. הנתונים הם ייצוג המציאות כפי שהיא באה לידי ביטוי במחשב. הנתונים הם חומר הגלם בתהליך עיבוד הנתונים. ב, | מידע (ח0ו1881ז0/מ1): התוצר הסופי של תהליך עיבוד הנתונים הינו מידע. המידע מופק על-ידי סיווג ועיבוד הנתונים כדי שיוכלו לשמש לקבלת החלטות או לפתרון בעיות. ג. עיבוד נתונים (8ח/2700059 12818): תהליך ההופך נתונים למידע. העיבוד כולל סיווג, מיון, מיזוג, ביצוע חישובים, סיכומים וכדומה. נתונים תרשיס 1-6: תהליך עיבוד נתוניס ניתן להפעיל תהליכי עיבוד שונים על אותם נתונים לקבלת מידע שונה. לדוגמא, במערכת לניהול מלאי במחסן מנהלים כרטסת (או רשומות במחשב) המכילה את הכמות במלאי לכל אחד מהפריטים. מיון הנתונים האלה לפי מספר קטלוגי יאפשר הפקת דוח יתרות מלאי לתפעול שוטף של המחסן. מצד שני השוואת הנתונים האלה מול רמות מלאי מינימום במחסן יאפשר הפקת דוח המלצות לחידוש מלאי. 7 7777- מצב מלא? של כל פרל , 4 נתונים במחסן מיון לפי מספר קטלי דו"ח המלצות מידע דו''ח יתרות מלא? רַ תרשים 1-7: מידע שונה המופק מנתוניס זהיס השוואת מצב מלא?ל לרמות מלא? מינלי עיבוד 23 ד מערכות מידע ממוחשבות (15ה5516 מ10718)10ח1 1611260טקו 00): מערכות המנהלות ומעבדות את הנתונים בעזרת מחשב. מערכות המידע מכילות אוסף נתונים המאוחסנים ביחידות אחסון ואוסף של תוכניות מחשב המבצעות את העיבוד ומפיקות מידע. אחד המאפיינים החשובים של מערכת מידע ממוחשבת הוא זמן התגובה שלה. מבחינים בין שני סוגי מערכות: -- מערכות אצווה (8ת|2100688 ת2810): מערכות הצוברות את האירועים ומעבדות את כולם במכלול אחד, ברצף. צבירה אירוע עלות העיבוד במערכות מסוג זה נמוכה מאשר בשיטת עיבוד שנזכיר בהמשך. זמן התגובה לאירוע ארוך יחסית בגלל תהליך הצבירה. לדוגמא, צבירת תנועות ניפוק ממחסן ועיבודם פעם בשבוע יגרום לכך שנגלה רק כעבור שבוע שהפריט ירד מתחת לרמת מלאי מינימום. מסיבה זו למשל, עוברים במערכות ניהול מלאי ובעיקר במערכות בנקאיות לשיטות עיבוד אחרות, שבהן זמן התגובה קצר יותר. -- מערכות מקוונות (8ח(2:00653 6ח:!-חכ)): מערכות המגיבות בזמן קצר ביותר לכל אירוע. האירועים מוזנים למערכת העיבוד בזמן הווצרותם באמצעות מסופים ומערכת תקשורת. מערכות אלה הן יקרות בגלל התשתית הדרושה לרשת התקשורת ואחסון הנתונים (דיסקים). לדוגמא, במערכת בנקאית, משיכת כסף מהחשבון של הלקוח או הפקדה תגרום לעדכון מיידי של היתרה. מערכות אלה מורכבות יותר בגלל זמני התגובה הקצרים וריבוי המשתמשים הניגשים באותו זמן לנתונים. תרשים 1-9: מערכת מידע מקוונת 4 ה. | ניהול נתונים (1ח16ת486ח18 8: ייצוג וניהול הנתונים במחשב נעשה על-ידי מערכת תוכנה המהווה חלק ממערכת המידע הממוחשבת. ניהול הנתונים דן בנושאים הבאים: -- הגדרת נתונים, -- ייצוג נתונים ביחידות אחסון, -- אפשרויות גישה לנתונים למטרות איחזור ועיבוד. המערכת לניהול נתונים מכילה שני מודלים של נתונים: המודל הלוגי והמודל הפיסי. המודל הלוגי היא הצורה בה רואה המשתמש את הנתונים המאוחסנים במערכת המידע. המודל הפיסי היא הצורה בה מערכת המחשב מתיחסת לנתונים, כלומר צורת הייצוג הפנימי שלהם במחשב. המערכת לניהול נתונים מבצעת את התרגום בין המודל הלוגי למודל הפיסי. ברוב המערכות הקיימות, המודל הפיסי שקוף מנקודת מבט המשתמש אשר רואה לפניו את המודל הלוגי בלבד. ,= | מערבת לניהָול נתונים-. 2 תרשיס 1-10: תרגוס המבנה הלוגי למבנה הפיסי נציג את מושגי היסוד הקשורים לכל אחד משני המודלים. -- מבנים לוגיים (חסופוץוכ] 2818 166ח26) מסוופסו!סק//): מבנים אלה מטופלים על-ידי המשתמש במערכת המידע הממוחשבת. מבנים אלה קיימים רק מבחינה לוגית. צורת האחסון שלהם במחשב או ביחידת האחסון יכולה להיות שונה. הייצוג הפיסי של הנתונים אינו מעניין את המשתמש. קיימת היררכיה בהגדרת המבנים הלוגיים: מאגר נחונים קובץ וטומה - תרשיס 1-11: היררכית המבניס הלוגייס 25 א. תו (ז418016()): יחידת הנתונים הבסיסית. מקבילה לאות, ספרה או סימן מיוחד. לדוגמא, הצירוף "824/" מכיל 4 תווים מתוכם שתי אותיות ושתי ספרות. ב. שדה (116!6): אוסף תווים (אחד או יותר) בעלי משמעות לוגית. כל שדה הינו יחידת מידע. המשמעות מתקבלת רק בעקבות ההתיחסות לכל התווים המרכיבים את השדה. לשדה יש תכונות כגון גודל וסוג וכן ערך (8106/) המייצג את הנתון. לדוגמא, שדה המכיל מספר תעודת זהות מורכב מ-8 תווי ספרות המייצגים" את מספר הזהות של העובד. שדה המכיל את כתובת העובד מורכב מ-50 תווים אלפנומריים (המכילים אותיות וספרות). ג. | רשומה (0ז3060): אוסף של שדות בעלי קשר לוגי ביניהם. הרשומה היא יחידת המידע החשובה ביותר מבחינת המשתמש. גודל הרשומה, השדות המרכיבים אותה והמבנה הפנימי שלה תלויים ביישום. לדוגמא, ביישום משכורת מכילה הרשומה את הנתונים הרלוונטים לחישוב משכורת של עובד כלשהו אחד. ד. קובץ (536): אוסף רשומות השייכות לנושא מסוים. אוסף זה הוא יחידות מידע של פרטים באוכלוסיה כלשהי.. הקובץ מכיל רשומה אחת או יותר עבור כל יחידת המידע. תוכניות המחשב פונות לקבצים, שולפות מהם רשומות, מעדכנות שדות ברשומות. עדכון רשומות בקובץ משקף את השינויים שחלו באוכלוסיה המיוצגת בקובץ. לדוגמא, אוסף כל רשומות העובד מרכיב את קובץ העובדים במפעל, ואוסף רשומות יתרות החשבון בבנק מרכיב את קובץ חשבונות הבנק. ה. בסיס נתונים (8856 2818]): אוסף כל הנתונים המנוהלים במערכת המידע. אוסף זה מכונה לעיתים מאגר נתונים. קיימים מאגרי נתונים המורכבים מאוסף קבצים נפרדים, בהם הקשר בין הנתונים מוגדר על-ידי התוכניות המעבדות אותם. לעומתם קיימים מאגרי נתונים בהם מיוצגים הנתונים והקשרים ביניהם כשלימות אחת. דוגמא: קובץ חשבונות של לקוחות. ה 69 לקוח וחשבון קובץ שם שדה חשבונות תוכן שדה חו רשומה תרשים 1-12: תאור קובץ חשבונות בבנק 26 בדוגמא זו הקובץ מורכב מאוסף של כרטיטים, כל ג החשבון, סכום החשבון ופרטים נוספים. מבנה זה מופי המבנה הלוגי המקביל מופיע בתרשים 1-13. קובץ רשומה תרשים 1-13: מבנה לוגי של קובצץ חשבונות כפי שניתן לראות קיימת כאן היררכיה מסויימת בין השדות עצמם. לדוגמא, השדה "תאריך" מתחלק לשלשה תת-שדות: יום, חודש, שנה. הטיפול בקובץ מתבצע על-ידי המשתמש כאשר הוא רואה לפניו מבנה לוגי זה בעוד אשר המבנה הפיסי יכול להיות שונה לחלוטין. הוא תלוי ביחידת האיחסון ובהיבטים אחרים המשפיעים על יעילות העיבוד. המבנה הלוגי המתואר קיים למעשה רק במוחו של המשתמש. -- מבנים פיסיים (חסןפועוכ] 28)8] 166ח16ז2) 6מ1ת186/):: מבנים אלה מטופלים על-ידי המחשב ובדרך כלל הם "שקופים" מנקודת מבט המשתמש. א. סיבית (8%): סיפרה בינרית אשר יכולה לקבל את הערכים 0 או 1. זהו המבנה הבטיסי ביותר במחשב. ב. בית (16ץ8): אוסף של 8 סיביות המשמשות לייצוג תו או שתי ספרות. זוהי היחידה הבסיסית המיוצגת על-ידי כתובת בזכרון המחשב (במחשבי יבמ למשל). ג. | מילה (6זס/): המילה מורכבת ממספר בתים (במחשבי יבמ -- 4 בתים) ותלויה בסוג המחשב. הפנייה בזכרון מתבצעת לפי כתובת המילה במחשבים שבהם זוהי היחידה הבסיסית. במקרים אחרים יש למילה משמעות לוגית בלבד או שהיא מהווה יחידה בסיסית לעיבודים מתמטיים בלבד. ד גוש (2100%): אוסף של בתים או מילים המטופלים על-ידי המחשב בפעולת קלט/פלט אחת. הגוש מכיל את הנתונים המועברים בין הזכרון ליחידות האחסון. ה. קובץ (46): קבוצה של גושים השייכים לקובץ לוגי אחד. הקובץ מאוחסן ביחידת אחסון כלשהי (סרט מגנטי, דיסק מגנטי, תקליטון וכדומה). הגושים השייכים לקובץ לוגי אחד אינם חייבים להיות מאוחסנים בצורה רציפה דווקא. 27 28 תרשים 1-14: היררכית המבניס הפיסיים קובץ גוש מילה בית סיבית 3 סיכוס | בפרק זה הצגנו את מושגי היסוד במערכות לניהול נתונים. יצרני המחשבים, מוסדות המחקר ובתי תוכנה הקדישו מאמץ רב לשיפור ויעול ניהול הנתונים. המערכות לניהול נתונים משחררות את מנתח המערכות מבעיות ייצוג הנתונים הפיסי במחשב, ומאפשרות לו להתרכז בבנית היישום ובחירת מבנה הנתונים המתאים ביותר לפתרון בעית עיבוד הנתונים. כל מתקן מחשב משתמש במערכת כלשהי לניהול נתונים. מכאן נובעת החשיבות הרבה בהבנת עקרונות פעולתן והכרת מבני הנתונים שהן מציגות בפני המשתמש. 4 שאלות 'לטחיייייי 1. רשום אוסף של שדות נתונים שיש לדעתך לנהל במערך משכורת. ציין כיצד תארגן נתונים אלה ברשומות ובקבצים בהם תשתמש. 2. הסבר מהם הנתונים, העיבוד והמידע בתהליך חישוב משכורת באמצעות מחשב. 3 הסבר מהו ההבדל בין "שם הנתון" לבין ה"ערך" שהנתון מקבל בקובץ. הבא מספר דוגמאות. 4. אילו תכונות של המחשב גרמו לכך שהוא הפך להיות גורם רב חשיבות בהתפתחות החברה המודרנית ? התיחס לחומרה ותוכנה. 5 הבא דוגמא למבנה לוגי ולצורה בה ניתן לתרגם אותו למבנה פיסי. האם יתכן מבנה פיסי אחר הנותן את אותו מבנה לוגי? 6. תן דוגמא של מערכת מידע אשר חייבת לפעול בעיבוד מק וון למרות שידוע שעלות המשאבים בסוג זה של מערכות גבוהה יותר מאשר בעיבוד אצווה. 7 מהי חשיבות אי-התלות הפיסית במערכות מידע!? מדוע ה תפתח מושג זה? 10 ?₪6 2 ב ה 91 סס סא פרק שני יחידות לאחסון נתונים 1 מבוא אחסנה פנימית מבוא ליחידות אחסון חיצוניות סרט מגנטי דיסק מגנטי מאגרי קלט/ פלט שאלות נספח א': חישוב גודל גוש בסרט מגנטי נספח ב': חישוב זמן חיפוש בדיסק 92 02/02 9 92 92 42 א בפרק זה יוצגו אמצעי אחסון הנתונים העיקריים ויוסברו תכונותיהם ושיטות עבודתם. 31 1 מבוא מערכות המידע הממוחשבות מעבדות כמויות גדולות של נתונים. אחת הבעיות המרכזיות במערכות אלה היא אחסון הנתונים במחשב. אם ניתן היה לאחסן את כל הנתונים בזכרון הפנימי של המחשב לא היתה נוצרת בעית ניהול הנתונים. בגלל הכמויות העצומות של הנתונים והעלות הגבוהה לאיחסונם בזכרון, פותחו יחידות אחסון חיצוניות המאפשרות אחסון נתונים בעלות נמוכה יחסית. לכל יחידת אחסון כזאת יש יחס עלות/ביצוע מסוים וכן "גיאומטריה" משלה הקובעת את הצורה, המהירות ושיטת הגישה לנתונים. לחידות איחסון חיצוניות המחשב אחסנה פנימיה ('"זכרון'') תקליטוןן טס מגנטי תרשים 2-1: היררכיה של יחידות איחסון לביצועים של יחידת האחסון חשיבות רבה מאחר והם קובעים את מהירות הגישה לנתונים. השיפור בביצועים של יחידת האיחסון כרוך בהגדלת העלות לאיחסון יחידת מידע. באופן טבעי נוצרה היררכיה של יחידות איחסון, כאשר היחידה המהירה ביותר היא גם היקרה ביותר. מהלרות גישה לנתונים עלות תרשים 2-2: מהירות יחידת האיתסון כפונקציה של עלות היחידה 3 בגלל היחסים השונים של עלות/ביצוע משתמשים רוב המחשבים בכמות מוגבלת של אחסנה פנימית עבור התוכניות הפועלות וחלק מהנתונים הנדרשים לעיבוד באותו זמן. בנוסף קיים מספר רב של יחידות אחסון חיצוניות המשמשות לאיחסון ספריות התוכניות וכמויות גדולות של נתונים הנדרשים במערכת העיבוד. ככל שתדירות הפניה לנתונים גבוהה יותר נאחסן אותם ביחידות אחסון מהירות יותר. קיימת מגמה ברורה של ירידה במחירי האחסון הפנימי ולכן אנו עדים להופעת מערכות מחשב בעלי כושר אחסון פנימי הולך וגדל (לדוגמא מספר מיליוני בתים). הדבר מסייע לניהול הפעלת המערכת, להפעלת מספר רב יותר של תוכניות ומשתמשים במקביל אך לא מיועד לאחסון קבוע של נתונים אשר נעשה ביחידות האחסון החיצוניות. עלות איחסון סיבית (בסנטים) 012 0-12 שנה 181 13 תרשיס 2-3: הירידה בעלות אחסון בזכרון הפנימי לסיכום נערוך השוואה בין אחסנה פנימית לאיחסון חיצוני: עלות יקךר ביותר יקר פחות מאחסנה פנימית קיבולת מיליוני בתים מאות מיליוני בתים ליחידה אחת מייוניות שניה ופחות לאחסנה פנימית חצאי מוליכים, סרט מגנטי, דיסק מגנטי, טרנזיסטורים תקליטון מגנטי, חוף מגנטי 34 2 אחסנה פנימית (ץז0ות16א תן8]א ,5607886 |8מז16ת1) ו ה כל הנתונים המעובדים במחשב והתוכניות המבצעות את העיבוד באותה עת מאוחסנים באחסנה הפנימית של המחשב. יחידת האחסנה מורכבת ממספר רב של רכיבים אשר יכולים לאחסן ספרות בינאריות. כל יחידה נקראת תא זיכרון ([[06 = עזסות6ות). הטכנולוגיות המקובלות לבנית זכרונות היא שימוש במוליכים למחצה, טרנזיסטורים, בועות מגנטיות (ובעבר -- טבעות מגנטיות) המאפשרים אחסון כמות גדולה של נתונים בנפח קטן. אחסנה פנימית של המוחזשב הינה מעשרות אלפי תאי אחסנה (בתים או מילים) עד מיליוני תאים במחשבים הגדולים. מספר תאים בזכרון מרכיבים את היחידה הבסיסית בית (16ע8) או מילת המחשב (6ז0/0). המילה יכולה לאחסן הוראה של המחשב או נתונים כלשהם. לכל בית או מילת מחשב יש כתובת שבעזרתה ניתן לפנות אליה באחסנה הפנימית. אוגר כתובת כתובת יחידח בקרת זכרו אוגר נתונים כתוב זכרון - קרא תרשים 2-4: פעולת האחסנה הפנימית לקריאת תוכן מילת מחשב בזכרון, יש לשים את כתובתה באוגר הכתובת. יחידת בקרת הזכרון דואגת להעביר את תוכן המילה המבוקשת לאוגר הנתונים. לכתיבת מילה חדשה, יש לשים את כתובתה באוגר הכתובת ואת תוכנה באוגר הנתונים. מהירות הגישה לכל מילה בזכרון נמדדת במיליוניות שניה (ואף פחות) ואינה תלויה במיקום המילה בזכרון. כפי שנראה בהמשך, תכונה זו אינה קיימת ביחידות אחסון אחרות. 5 ייצוג נתונים בזכרון מחשבים פותחו בעיקר לטיפול במספרים, למרות שהיום רובם אינם עוסקים דוקְא במספרים. הסיפרה הבינרית הינה המבנה הבסיסי והיסודי היחידי המוכר על-ידי המחשב. מכיון שהוא יכול לזהות רק שני מצבים -- 0 או 1. לעבודה רגילה במחשב נדרשים כ-56 סימנים שונים שצריכים להיות מיוצגים במחשב: 0 ספרות, 26 אותיות וכ"20 סימנים מיוחדים. מכיון שאי אפשר לייצגם על ידי שני המצבים של 0 ו-17 דרושה שיטת ייצוג נרחבת יותר הקרויה 8622 ([18ת12661 000660 עְזַהח81). השיטה משתמשת בקבוצת סיביות לשם ייצוג כל אחד מהתוים. לייצוג 56 סימנים שונים דרושות 6 סיביות (64 = 25). רוב המחשבים משתמשים בקבוצות של 7 סיביות (128 = 2%) כדי לאפשר ייצוג סימנים נוספים (כגון סימנים גראפיים או תווי בקרה מיוחדים למערכות תקשורת). הסימנים המוזנים למחשב באמצעי הקלט השונים עוברים תרגום בעזרת טבלה לקוד :80. במערכות יבמ למשל משתמשים בצופן 286216 בן 8 סיביות לייצוג הנתונים בזכרון. הצופן קובע את משמעות כל אחד מהצירופים השונים שניתן ליצור בעזרת 8 סיביות. לדוגמא : תו צופן 586016 2 1110 ב 10 + 0כ0 קיימים מספר מבנים לאחסון נתונים מספריים. קיימות פקודות מיוחדות לטיפול בכל אחד מהמבנים ולביצוע הסבה ממבנה אחד למשנהו. 6 3 מבוא ליחידות אחסון חיצוניות ב יחידות האחסון החיצוניות (5%01826 עז1!8אט) משמשות כהרחבה לכושר האחסון של זכרון המחשב. נתאר את שיטת העבודה של מחשב עם יחידות אחסון חיצוניות. אוגר בקרה יחידת יחידת בקרה איחסון יחידת בקרה 6 % חיצונית י בקרה ו אוגר נתונים (ששששעשש אוגר נתונים תרשים 2-5: פעולת יחידת אחסון חיצונית אחסנה פנימית (''זכרון") באוגר הבקרה של יחידת האחסון החיצונית יש לשים את המידע על סוג הוראת קלט/פלט שיש לבצע ואת כתובת הנתונים. בזמן ביצוע ההוראה עוברים הנתונים אחד אחר השני לאוגר הנתונים, ומשם לזכרון או ליחידת אחסון. על כל הפעולות האלה מפקחת יחידת הבקרה המרכזית. בזמן ביצוע פעולת קלט/פלט ביחידות האחסון החיצוניות, היע"מ נמצא במצב של המתנה לגמר פעולת הקלט/פלט. מהירות העיבוד ביחידות האחסון, שהן מכניות בעקרון פעולחן, איטית בהרבה בהשוואה למהירות העיבוד של היע"מ ולכן יש בשיטת עבודה זו אלמנט רציני של בזבוז משאבים. בהמשך נעמוד על השיטות ליעול עבודת המחשב בתהליך קלט/פלט. ערוץ קלט/פלט ([6הח38) +טכ+ט1-02טקח1): במחשבים זעירים וקטנים מטפל היע"מ בפעולות עיבוד וגם מוקדשים למטרת קלט/פלט יחידות מיוחדות או אף מחשב מיוחד הנספח למחשב המרכזי. המחשב המרכזי מוקדש בעיקר לביצוע פעולות עיבוד הנתונים והמחשב הקטן (הנקרא גם ערוץ קלט/פלט), מטפל בכל נושא הקלט/פלט. במחשבים בינוניים וגדולים מותקנים מספר ערוצים או מחשבי קלט/פלט בכדי ליעל את תהליך זרי. ת הנתונים בין האחסנה הפנימית לבין יחידות האחסון החיצוניות המשרתות תוכניות רבות בעת ובעונה אחת. 37 8 יחידת בקרה תרשיס 2-6: פעולת מחשב עם ערוץ קלט/ פלט פעילות קלט/פלט יזומות על-ידי היע"מ בעזרת פקודות מיוחדות. הערוץ מתקדם כמו מחשב רגיל ופונה אל הזכרון המיכני, בו נמצאת תוכנית מחשב מיוחדת (ות8ז08ת? |שתהגג)) לביצוע תהליך קלט/פלט המבוקש על ידי תוכנית המשתמש. תוכנית הערוץ קובעת לערוץ איזה פעולת קלט/פלט יש לב- צע והכתובת בזכרון ממנה יש לקחת את הנתונים או אליה יש להעביר אותם. גם הערוץ וגם היע"מ פונים אל אותו זיכרון (פַחגז503 עזסות16א). לקבלת ההוראות ולקריאת וכתובת הנתונים בהתאם להוראות אלו. תוכנית הערוץ מתבצעת במקביל לעבודת היע"מ ולפיכך הם "מפריעים" זה לזה בעת גישה לזכרון. הם "חוטפים" זה מזה פרקי זמן (8ח/[5668 2/015)) לשת ביצוע העבודה. הערוץ משתמש בפקודות התערבות מיוחדות (‏ )קטחס!ח1 ) כדי להודיע ליע"מ על אירועים מיוחדים. לכל יחידת אחסון יש יחידת בקרה מיוחדת (01!6ז1מ20) 06וש6) המאפשרת העברת אינפורמצית בקרה אל יחידת האחסון וממנה, קובעת עדיפויות ומספקת לערוץ קודי מצב (415ח518 5/8105). כָאשר יחידת הבקרה מודיעה לערוץ שפעולת קלט/פלט הסתימה, מבצע הערוץ פעולת התערבות ומודיע ליע"מ שהפעולה המבוקשת הסתימה. הערוץ יכול להכיל מאגר (ז216) כמישק בין הזכרון לבין יחידת האחסון. המאגר מתאם בין סוגי האינפורמציה המטופלים בזכרון וביחידת האחסון (למשל בזכרון מטפלים במילת מחשב המכילה מספר בתים בעוד שיחידת האחסון מטפלת רק בבית בודד). קיימים מספר סוגי ערוצים, המסווגים בהתאם למהירויות העבודה שלהם. במחשבי יבמ מבחינים בין שלשה סוגי ערוצים: -- ערוץ 551.00:108 -- המיועד לטיפול ביחידות אחסון מהירות כגון דיסקים וסרטים מגנטיים. ערוץ זה יכול לטפל בו זמנית רק בפעולת העברה אחת. - ערוץ 08א101112/8א 875 -- המיועד לטיפול במספר יחידות קלט/ פלט איטיות כגון קורא כרטיסים, מדפסת, מסופים. -- ערוץ 08א2%]ק0171!א 2100% -- המשלב את מהירות העבודה של ערוץ | 58120108 עם אפשרות הטיפול במקביל במספר יחידות אחסון. 8 שזצם אסא6קודוטא מסופים שונים תרשיס 2-7: אירגון ערוצי קלט/ פלט במחשב יבמ 359 4 סרט מגנטי (1806 4806016]א) הסרט המגנטי מורכב מסרט פלסטי המצופה בחומר הקולט מיגנוט. הסרט הפלסטי כרוך על גבי גלילים בקוטר של כ-10 אינץ'. לרוחב הסרט יש מסגרות (1:781105) המכילות מספר קבוע של סיביות. הנפוצים ביותר הם 7 ו-8 סיביות למסגרת. בכל מסגרת ניתן למגנט אות אחת או שתי ספרות. למספר המסגרות לאינץ נקרא צפיפות המיגנוט (ת0ח] ז20 165ץ8 -- 821). צפיפות המגנוט המקובלת היא 800, 1600 ו62507 מסגרות לאינץ אחד. כלומר, באינץ אחד של אורך סרט אפשר לאחסן 800, 1600 או 6250 תוים, בהתאמה. ערוצל ‏ %= = - צדוההק מלגנוע ->- נתונים מסגרת תרשיס 2-8: מבנה הסרט המגנטי במסגרת אחת נמצא סיביות נתונים (8, כאשר יחידת המידע היא "בית") וסיבית אחת נוספת לצורך ביקורת תקינות (ביקורת זוגיות -- +81 /28116). הסרט המגנטי מורכב על גבי כונן סרטים (6טוזם 1806). הוא מתקדם לכיוון אחד בלבד ואין אפשרות לקרוא את הנתונים בכיוון השני. הסרט חייב לנוע במהירות קבועה מתחת לראש הקריאה/כתיבה. כונן סרטים ראש קריאה/כתיבה תרשים 2-9: מבנה סכימטי של כונן סרט מגנטי 20 ראש הקריאה/כתיבה סורק את המסגרות ומפענח את הצירופים הבינריים המופיעים בכל מסגרת ומעביר אותן אל זכרון המחשב לעיבוד. מאחר והסרט יכול להכיל מספר רב מאד של מסגרות, כמות הנתונים שניתן לאחסן בו היא גדולה ונמדדת בעשרות מיליוני תוים. מאחר ואין אפשרות להכניס את כל הנתונים שבסרט לזכרון המחשב, יש לחלק את הנתונים בסרט ליחידות קטנות יותר הנקראות גושים (510083) ולקרוא אותם לזיכרון ביחידות אלו. גם הכתיבה נעשית ביחידות של גושי נתונים ולא ברצף אחד. הגדרה: גוש הינו אוסף של רשומות המועברות אל הזיכרון וממנו בפעולת קלט/פלט אחת. מרווח תרשים 2-10: חלוקת נתונים בסרט מגנטי לגושיס הנתונים שנקראים לזיכרון עוברים תהליך עיבוד הנמשך זמן כלשהו. בפרק זמן זה יש לאפשר לכונן הסרטים לעצור ולהמתין לגמר העיבוד. מאחר והסרט חייב לנוע במהירות קבועה כדי שניתן יהיה לקרוא/לכתוב, הרי שיש להאיץ אותו למהירות הקריאה ולהאיט לקראת עצירה. בפרק זמן זה אי אפשר לקרוא או לכתוב בסרט. פרק זמן זה נמשך כ-10 מילישניות בסרט הנע במהירות של 5 אינץ לשניה. כדי להתגבר על בעיה זו, יש ליצור מרווח (ק28)) על הסרט שאינו כולל נתונים ותפקידו להפריד בין גוש לגוש. נמצאות הרשומות. למספר הרשומות בגוש (פחואססו8 בתוך הגוש ) חשיבות רבה מבחינת נצילות האחסון בסרט ויעילות העיבוד. מהירות 5 אזינץ לשגיה זמן סו תרשים 2-11: מהירות תנועת הסרט כפונקציה של הזמן נסמן ב-8 את גודל הגוש וב-% את גודל הרשומה: גודל גוש | מספר רשומות גודל רשומה לגוש 0 רו +1 לדוגמא: אם גודל רשומה הוא 100 בתים ומספר הרשומות לגוש הוא 10, נקבל גודל גוש של 1000 בתים. ככל שנבנה גושים קטנים יותר, נקבל מספר רב יותר של מרווחים ולכן ניצול גרוע יותר של שטח האחסון. מאידך ככל שגודל הגוש גדול יותר, נצילות שטח האיחסון גבוהה יותר אבל יהיה צורך במאגרים גדולים בזכרון לקליטת כל הגוש. ראה בנספח א' שיטה לחישוב גודל הגוש. קיימות מספר תבניות קבועות לרישום הגושים בסרט מגנטי. נציג כאן את העיקריות: 41 6סאות 6 -- רשומה לגוש. הרשומות באורך קבוע. ל + א > ן - תרשיס 2-12: תבנית רשומה באורך קבוע לגוש 2. 66א11 8100660 -- מספר רשומות באורך קבוע לגוש. = תרשים 2-13: מספר רשומות באורך קבוע לגוש 3 :]08080 66אס6ס|טחנ -- רשומה אחת לגוש. הרשומה באורך משתנה. מוסיפים לגוש הנתונים שדה לציון גודל הגוש (ופַח0.] 8100% -- 1) וגודל הרשומה (8[1ח16 6זס66 -- ,61). תרשים 2-14: תבנית עס רשומה משתנה לגוש. 4 47/8016 8100866 -- כל גוש מכיל מספר רשומות באורך משתנה. בנוסף לתבניות אלה קיימות תבניות נוספות: 66חת508, 60מ1206611. ת שו רק = ,81 ר מה רשומה 1 אדגם |+ה| אזגם | |:ה|)8 ל---77 גושו ה תרשים 2-15: תבנית עס מספר רשומות משתנות לגוש 42 | | | | | | מהירות העברת נתונים אחד המאפיינים החשובים ביותר של סרטים מגנטיים הוא מהירות העברת הנתונים בין הכונן לזכרון המחשב. מהירויות אלה יכולות לנוע בין עשרות אלפי תווים לשניה ועד ליותר. ממיליון תווים לשניה, בהתאם לציוד. (60מ5600 ]6 2706 -- 225). נסמן ב את מהירות ההעברה של כונן .סרטים. זמן קריאת גוש יהיה: גודל גוש מהירות העברה 8 ברש ד מאחר ובין גוש לגוש קיים זמן עצירה, יש להוסיף לכל גוש את זמן העצירה וההתנעה (6וחד 31/51/02 51/4). סה"כ זמן קריאת הגוש יהיה: 5 = 5/5 6 +2 דוגמא: סוג מספר | צפיפות | מהירות מהירות כונן ערוצי מיגנוט הסרט העברה מגנוט | ב-]82 | באינץ ב-75 8 לשניה (סיביות ו | לשניה)-. יבמ 3420 -----*= מודל 3 9 10 55 11000 יבמ 3420 ----->>- מודל 7 9 10 200 2.000 יבמ 3420 ----->=- מודל 8 9 0 200 10 חישוב קיבולת אחסון אחד הנתונים החשובים בסרט מגנטי הוא כמות הנתונים נטו (כלומר, בניכוי המרווחים שאינם ממוגנטים) שניתן לאחסן בו. מאחר וגודל המרווח בין הגושים הוא קבוע (בדרך כלל 0.6 אינץ) ניתן לחשב את מספר הגושים בסרט על פי הנוסחה הבאה: 5 צושים = אורך הסרט באינץ אורך הגוש באינץ + גודל המרווח באינץ הערה: מאחר ובדרך כלל אורך הסרט נתון ב'"רגל" (001]), יש לכפול אותו ב-12 לקבלת אורכו באינץ (61חו 12 = 00% 1). את אורך הגוש ניתן לחשב על סמך מסלר התווים לגוש ולפי צפיפות המיגנוט. מספר תווים בגוש אורך גוש באינץ = ך 1 צפיפות מיגנוט 3 -- נציב בנוסחה קודמת ונקבל את הנוסחה לחישוב מספר הגושים בסרט: סש אורך סרט באינ = מספר תווים לגוש השהלההה-ה--ד=7 + גודל המרווח באינץ צפיפות מיגנוט כמות הנתונים בסרט תהיה מכפלת מספר הגושים במספר התווים לגוש. ככל שהגוש גדול יותר עולה הכמות המנוצלת של הסרט. החל מגודל מסוים, הנצילות עולה באופן איטי ולכן לא כדאי להשתמש בגושים גדולים מאד. אמנם הנצילות תעלה, אבל שטח המאגרים יגדל בהרבה ותתעוררנה בעיות אחרות הקשורות בחלוקת הזכרון והקצאתו לשטחי תוכנית ומאגרים ויעילות ניצול הערוצים. חישוב גודל הגוש בסרט מגנטי אחד הפרמטרים החשובים בשימוש בסרטים מגנטים הוא גודל הגוש. גודל הגוש משפיע על: -- מספר הגושים בסרט ולכן על מספר פעולות הקלט/פלט הדרושות לקריאת הקובץ. ככל שהגושים גדולים יותר, מספר הגושים בקובץ קטן ולכן דרושות פחות פעולות קלט/פלט. -- ניצול שטח האחסון בסרט. ככל שהגושים גדולים יותר, ניצול הסרט מבחינת אחסון, טוב יותר מאחר ומספר המרווחים קטן יותר. -- שטח המאגרים הדרושים בזכרון. ככל שהגוש גדול יותר, שטח המאגר צריך להיות גדול יותר, ולכן נדרש שטח גדול יותר עבור התוכנית. קיימות מערכות לניהול קבצים המכתיבות את גודל הגוש למשתמש. גודל זה מבוסס על שיקולים של יעילות מבחינת הציוד וניצולו. במקרים אלה יש לנסות לבנות רשומות וגושים הקרובים ככל הניתן לגושים אלה. אם לא קיימת מגבלה מסוג זה, על המשתמש לבנות את הגושים על סמך שיקולים שלו. בנספח אי מוצג דיון מעמיק יותר בנושא יעילות העיבוד כפונקציה של גודל הגוש וניתנת שיטה לחישוב גודל הגושים. ₪1 1600 קיבולת במלליונל בתים 20 35 10 ו₪חם 800 25 20 תווים לגוש 1000 100 0 תרשים 2-5: קיבולת אחסון כפונקציה של גודל הגוש וצפיפות המיגנוט (2400 רגל, מרווח 0.6 אינץ) 4 סרית בצימ בנ בה סיכום הסרט המגנטי הינו אמצעי אחסון זול ונפוץ ביותר. שימושו העיקרי הוא במערכות העובדות באצווה (ת88%6) ולגיבוי קבצים הנמצאים בדיסקים מגנטיים. מהירות העברת הנתונים גבוהה ויכולה להגיע למיליון תוים לשניה, ויותר. קיבולת אחסון יכולה להגיע לכמה עשרות מיליוני תווים. אחסון הסרטים בחדר המחשב נוח בגלל נפחם הקטן יחסית. אמינותו מוגבלת בגלל השימוש בסרט פלסטי היכול להקרע או לקבל עיוות מפאת מתיחה פתאומית או בלאי שימוש. הסרט המגנטי מאפשר קריאה או כחיבה אבל לא את שניהם ביחד, בגלל אפשרות תנועת הסרט בכיוון אחד בלבד. כלומר, ניתן לקרוא או לכתוב אך לא לכתוב ולקרוא לסירוגין ואין אפשרות לקרוא ואח"כ לכתוב שוב באותו גוש. החסרון הגדול ביותר של סרטים מגנטים הוא שאין אפשרות לגישה ישירה לרשומות. זמן הגישה לרשומה נמצא באופן יחסי למיקום- הרשומה בסרט מכיון שהחיפוש של הרשומה הוא סדרתי. זמן הקריאה של סרט המכיל 30 מיליון תווים יכול להגיע ל-4 דקות, לכן אין אפשרות להשתמש בסרט כאשר יש צורך בזמני גישה קטנים. סרט מגנטע? ה כתובת תרשים 2-16: זמן הגישה כפונקציה של כתובת הרשומה הביצועים של הסרט המגנטי תלויים בפרמטרים הבאים: . -- צפיפות מגנוט, -- מהירות תנועה, -- גודל מרוות, -- זמן האטה/תאוצה, -- מהירות גלגול לאחור, -- אפשרות לקרוא או לכתוב בשני הכיוונים. מגדירים את מהירות ההעברה 5 5 דיסק מגנטי (86כ 18806016א) הדיסק המגנטי הינו יחידת אחסון בעלת תכונות פיסיות המאפשרות גישה ישירה לכל יחידת אינפורמציה בהתאם לכתובת. בגלל תכונה זו נהוג לקרוא להם יחידות אחסון בגישה ישירה (269106] 5107886 400058 1601 -- 5 ס) מאחר ואין צורך בביצוע סריקות לגישה לנתונים בדומה לסרט. מבחינת עקרון הפעולה, דומה הדיסק לתקליטי המוסיקה המנוגנים בבתינו. הנתונים נקראים או נכתבים תוך כדי סיבובי הדיסק. יחידת האחסון מורכבת משלשה מרכיבים עיקריים: -- משטחי מגנוט: משטחי המגנוט נמצאים משני צידי הדיסק ומשמשים לרישום הנתונים. יחידת דיסקים אחת (286% 218%]) מכילה מספר דיסקים השונה מיחידה ליחידה. לדוגמא, יחידת דיסקים 3330 של חברת יבמ מכילה 0 דיסקים ויחידה 3340 מכילה 6 דיסקים. שטח התקליט מחולק למסילות (1780%5) קונצנטריות. כל מסילה מכילה את אותה כמות הנתונים ללא תלות בקוטר שלה. לדוגמא דגם 3330 של חברת יבמ מכיל מעל 400 מסילות בדיסק. תרשים 2-17: חלוקת משטח המגנוט למסילות -- ראשי קריאה/כתיבה: לכל משטח מגנוט יש ראש קריאה/כתיבה המאפשר קריאה וכתיבה של הנתונים. כל ראשי הקריאה/כתיבה של כל משטחי המגנוט מחוברים למנגנון הזזה אחד ולכן נעים כולם יחד. תנועת הזזת הזרועות היא תנועה איטית יחסית (עשרות אלפיות שניה). כדי להתגבר על בעיה זו קיימות יחידות אחסון המשתמשות בראש .קריאה/כתיבה קבוע לכל מסילה ולכן אין צורך בביצוע ההזזות (לדוגמא, דגם 3380 של יבמ מכיל גם ראשי קריאה/כתיבה קבועים). בשיטה זו זמן הגישה לנתונים מהיר ביותר. החסרון של ראשים קבועים שלא ניתן לשלוף את הדיסק ולהחליפו באחר ולכן מחירו גבוה יחסית לדיסק עם מנגנון להזות זרועות. 46 ארי ראש קריאה/כתיבה משטח? מגנוט -*- מנגנון הזזת זרועות תרשים 2-18: יחידת דיסקיס עס מנגנון להזזת זרועות תרשיס 2-19: דיסק עס ראשיס קבועיס -- כונן הדיסק (6ווזכ] 218%): הכונן מכיל את תושבת יחידת הדיסקים, את המנגנון המסובב אותה במהירות סיבוב קבועה ואת מנגנון ראשי הקריאה/ כתיבה. אם הזרועות נעות, ניתן לשלוף את יחידת הדיסקים ולהחליפה ביחידה אחרת. היתרון של הדיסקים נובע מאפשרות הגישה הישירה והמהירה לנתונים ללא קשר למיקומם. יתרון נוסף הוא האפשרות להשתמש בהם לקלט ופלט לסירוגין בתהליך עיבוד אחד ולכתוב גושים לאחר קריאתם ועדכונם. (בסרט מגנטי ניתן להשתחמש לכתיבה או לקריאה אך לא לסירוגין). במערכות תקשורות מקוונות חייבים להשתמש בדיסק בגלל דרישות זמן התגובה המהיר שלהן. 217 שיטת רישום הנתונים במסילה הנתונים נרשמים במשטח הדיסק במסילות קונצנטריות (מסילות מעגליות עם מרכז אחד אך קטרים שונים). לכל מסילה יש נקודת התחלה המסומנת עליה (ז181%6 א66ח1). המסילה מכילה גושים שמספרם וגודלם נקבע על-ידי המתכנת או נקבע מראש על-ידי היצרן בהתאם לסוג הדיסק. סימון התחלה תרשים 2-20: מבנה מסילה וסימון התחלה מרווחים ו ו ו תהשיט 221 סימון התחלה בכל מסילה מופיע סימן התחלת המטילה ואחריה גוש מיוחד המתאר את המסילה (כתובתה ומצבה, זס)ק1ז2650] 1786%) ומשמש את מערכת ההפעלה ואת התוכנה לניהול הנתונים. בין הגושים קיימים מרווחים המשמשים לביצוע פונקציות בקרה של התוכנה. קיימים שני סוגי גושים -- גוש המכיל מפתח וגוש ללא מפתח. גדהס זאטס הדהס צם< זאעסס גוש גוש תרשים 2-22: תבנית הגוש בכל גוש ישנו שדה מונה (1חטסכ)) המשמש לאיתור הגוש. אם משתמשים בשיטות אירגון המאפשרות גישה לפי מפתח ניתן לשמור את המפתח (ע%6) בקטע מיוחד בגוש ליעול החיפוש אחר רשומות. כתובת רשומה בדיסק נקבעת עלדידי מספר משטח המגנוט, מספר מסילה, המספר הסודר של הגוש במסילה וזיהוי הרשומה או מפתח שלה. 38 את הנתונים בדיסק ניתן לרשום באופן סידרתי, גוש אחר גוש, מסילה אחר מסילה עד לגמר משטח מגנוט ראשון ולהמשיך למשטח מגנוט שני. שיטה זו מאד לא יעילה מאחר והיא מחייבת ביצוע הזזות זרוע רבות לקריאת הקובץ. ניתן לרשום את הנתונים בצורה שונה: גוש אחר גוש עד גמר המסילה, לעבור למסילה זהה במשטח מגנוט שני וכך הלאה. בשיטה זו ניתן לקרוא את הקובץ ללא הזזות זרוע רבות כפי שהיה במקרה הקודם. אוסף המסילות הנקראות/נכתבות ללא הזזת זרוע מהווה גליל (ז00מ2/11)). תרשים 2-23: רישוס נתוניס רציף במסילות משטח מגנוט כ) כל מסילות ! בכל משטחי המגנוט משטח מגנוט ר] תרשים 2-24: מבנה הגליל ביחידת דיסקיס אם הקובץ מכיל מספר רב של נתונים הם ירשמו במספר גלילים. במקרה זה 0 היה צורך בביצוע הזזות זרוע לקריאת הקובץ. בדיסקים של יבמ מקובלים הפרמטרים הבאים: 399 זמן גישה מהירות קיבולת ממוצצ העברה (במיליוני בתים) (במילי שניות) (באלפי בתים לשניה) כונן 3310 5 17 11 כונן 3340 0 או 35 25 15 כונן 3350 5 25 115008 כונן 3370 1 20 1000 פרמטרים אופיניים לדיסקים מגנטיים: יחידת דיסקים יחידת דיסקים קטנה גדולה זמן גישה במילישניות 20 00 מספר גלילים לתקליט 200 1400 מהירות העברה בתווים לשניה 2000 000 קיבולת במיליוני תווים 20-58 10 סוגי הגושים בדיסק הגוש הינר אוסף של רשומות לוגיות ומטופל על-ידי מערכת ההפעלה כיחידה אחת. ניתן לעבוד עם גושים המכילים רשומה לוגית אחת (0[00%60) או גושים המכילים מספר רשומות (8106%66). השימוש המקובל ביותר הוא עם מספר רשומות לגוש. השיטה מאפשרת: -- קריאה/כתיבה מהירה יותר מאחר ויש פחות פעולות קלט/פלט, - ניצול טוב יותר של יחידת האחסון מאחר ויש פחות מרווחים בין גושים, -- ניתן ליעל תהליכי חיפוש על-ידי איתור הרשומה האחרונה בגוש. השימוש ברשומה אחת לגוש פחות נפוץ. משתמשים בו בעיקר עבור רשומות גדולות או אם אין מידע על אורך הרשומה. להלן מספר תבניות לרישום נתונים בדיסק: 1. 66א100%טם!1 66א13 -- רשומה באורך קבוע לגוש. 7-5 גוש -------> תרשים 2-25 חלק המפתח וחלק הרשומה הם בעלי אורך קבוע, ואם המפתח קטן יותר תבוצע השלמה במרווחים. קיימת אפשרות לא לחזור על המפתח בתוך הרשומה. החיפוש מבוצע ע"י מערכת ההפעלה על פי המפתח. אם שיטת הארגון אינה כוללת מפתח אין צורך להשתמש בתת-גוש המכיל את המפתח. 0 | 2 666א1/ 8100%60: מספר רשומות באורך קבוע לגוש. ן | | |פ----נתונים -----6<-- מפתח -> גוש תרשים 2-26 היתרון של שיטה זו הוא שיש מונה אחד עבור קבוצה של רשומות לוגיות ולכן יש פחות מרווחים. בתת-גוש המפתח ניתן לשמור את המפתח של הרשומה הגבוהה ביותר בגוש ובצורה זו לפשט את תהליכי החיפוש. 3 818016 66א100פח(1: רשומה בעלת אורך משתנה לגוש. מ-----ושומה-------=]<---= 9" ->] ו תרשים 2-27 [ / ן 4. 871906 8106%60: מספר רשומות בעלות אורך משתנה לגוש. רשומות -=-=-6 0 גוש ב ב ן תרשים 2-28 | זמן גישה בדיסק | זמן הגישה בדיסק מורכב משלוש יחידות זמן: / - ומן חיפוש (11₪16 566%): הזמן הדרוש להזזת ראשי הקריאה/כתיבה | למסילה המבוקשת. ככל שמספר המסילות שיש לחלוף על פניהן גדול יותר, גם ן זמן החיפוש יהיה גדול יותר. ו ו 1 %- - זמן השהייה סיבובית (ץ26]8] [8ח018)10): הזמן העובר מהרגע בו הגיע ראש הקריאה/כתיבה למסילה המבוקשת ועד שהוא נמצא מעל הגוש המבוקש. בממוצע זמן זה שווה למחצית הזמן הדרוש להשלמת סיבוב מלא של הדיסק. זמני השהייה מקובלים הם בין 8 ל-10 מילישניות. - זמן העברת נתונים (6וח11 ז5)0ח1?8): הזמן הדרוש להעברת הגוש מכונן הדיסק לזכרון המחשב, ולהיפך. זמן זה תלוי בסוג הכונן בו משתמשים. מהירויות קריאה/כתיבה מקובלות הן בין 100 אלף בתים לשניה ועד כ-3 מיליון בתים לשניה. כפי שניתן לראות, מהירויות אלה גבוהות בדרך כלל ממהירויות ההעברה של סרטים מגנטים. מהירות ההעברה אינה תלויה במיקום המסילה על פני משטח המגנוט. במציאות משתמשים בנתוני היצרנים לחישוב זמן גישה ממוצע או בשיטות חישוב לא מדויקות להערכתם. זמן הגישה לנתונים יכול לנוע בין אלפיות שניה ועד עשיריות ויותר. כאשר נדרשות גישות אחדות (ראה את הסיבה לכך בהמשך) יכול הזמן הכולל להגיע לשניה אחת ויותר. קיימים מקרים בהם אומדן לא נכון של זמן הגישה יכול להוביל לתכנון לא נכון של מערכות תקשורת ולהתמוטטותן בגלל זמני תגובה בלתי מספיקים. ראה דיון נוסף על זמני גישה בנספח ב'. טיכום הדיסק המגנטי הינו אמצעי אחסון נפוץ מאד ושימושי בעיקר במערכות מקוונות בהן יש צורך בזמני גישה קצרים מאד. מהירות העברת הנתונים של הדיסקים גבוהה יחסית לסרטים מגנטים ויכולה להגיע לכמה מיליוני תווים לשניה. קיבולת האחסון נעה בין מספר עשרות מיליוני תווים ועד מיליארד תווים ביחידות החדשות. אמינות הדיסק המגנטי כאמצעי לאחסון נתונים גבוהה מאד יחסית לסרטים מגנטים מאחר והבלאי שלהם קטן מאד. הדיסק מאפשר גם קריאה וגם כתיבה באותו קובץ. היתרון הגדול של הדיסקים הוא זמני הגישה המהירים לרשומה. זמן ממוצע לגישה לרשומה הוא 25 מילישניות. חסרונו הגדול של הדיסק הוא מחירו הגבוה לאחסון יחידת מידע. המחיר הגבוה הביא לנסיונות פיתוח של יחידות הדומות בעקרון פעולתם לדיסק אבל זולות ממנו. התפתחות הטכנולוגיה מציעה מדי פעם דיסקים בעלי תכולה גדולה יותר במחיר נוח יותחר ועל ידי כך מאפשרת ניצול היתרונות הרבים בתחומים מגוונים יותר ולפיתוח יישומים חדשים המחייבים מערכות אחסון בגישה ישירה. במחלובים קטנים וזעירים מקובל השימוש בתקליטונים (218%5 עְקקסו) למטרת אחסון נתונים בגישה ישירה. עקרון פעולתם דומה לפעולת הדיסקים שהזכרנו קודם אך מהירותם וקיבולם שונים באופן משמעותי. התקליטון מהווה פשרה בין הדיסק המגנטי שמחירו אלפי דולרים לבין הסרט המגנטי שמחירו נמוך. התקליטון מסוגל לאחסן בין 250,000 ל-500,000 בתים. זמן גישה ממוצע הוא פחות משניה, מהירויות העברה מקובלות בין 25,000 ל-50,000 בתים לשניה. 2 י 6 מאגרי קלט/ פלט (פז6וטם 1/0) לעיבוד רשומה במחשב יש תחילה לקרוא אותה לתוך הזיכרון. בגמר העיבוד יש לכתוב אותה אל יחידת אחסון חיצונית. קיים הבדל ניכר בין מהירויות העבודה של היע"מ לבין מנגנוני הגישה ליחידות האחסון. בגלל הבדל זה על היע"מ לחכות לרשומה הבאה אם היא אינה נמצאת בזיכרון. במקום לקרוא רשומה בודדת לזכרון, ניחן לקרוא קבוצה של רשומות (גוש) לזיכרון, לשטח מיוחד הנקרא מאגר (1102ט8), ו"להכין" אותן עבור היע"מ. תוכנית שטח עבודה תרשים 2-29: עיבוד רשומה במחשב יע''מ פלט קלט תוכנית יְ שטח עבודה מאגר קלט/פלט יע''מ פלט א קלט תרשים 2-30: שימוש במאגר קלט/ פלט בשיטה זו, אין צורך בביצוע גישות ליחידת האחסון מיד עם גמר עיבוד הרשומה. ברגע שהתוכנית מבקשת את הרשומה הבאה, יש לבדוק תחילה אם הרשומה המבוקשת נמצאת במאגר. אם כן, כל מה שיש לעשות הוא להעביר אותה מתוך המאגר לשטח העבודה. אם הרשומה איננה במאגר, יש לבצע גישה ליחידת אחסון ולקרוא את הגוש הבא. שיטת ניהול הקלט דואגת לכך שתמיד יהיה בזיכרון גוש אחד נוסף, מראש, כדי למנוע עיכוב בעבודת היע"מ כאשר תדרש הרשומה העוקבת לעיבוד (תהליך דומה קיים בפלט, כפי שנראה בהמשך). לכל יחידת אחסון יש להקצות בזיכרון את המאגר שלה. ניהול המאגרים נמצא באחריות המערכת לניהול קבצים. 3 ב קרא גוש חדש לזיכרון תוכנית היישום קרא רשומה מערכת לניהול קבצים העבר רשומה ממאגר לשטח העבודה עבד רשומה תרשים 2-31: שיטת העברת רשומות ממאגר לשטח עבודה -- היישום התהליך מורכב יותר כאשר לאחר הקריאה מעדכנים את הרשומות וכותבים את הגוש שוב בדיסק. ניהול מאגר אחד לכל יחידת אחסון אינה מאפשרת הבאת הגוש הבא לזכרון כל עוד הגוש המעובד לא נכתב ביחידת האחסון. ניתן להתגבר על בעיה זו על ידי הקצאת שני מאגרים בזכרון לכל יחידת אחסון: -- מאגר קלט לתוכו נקרא את הגוש החדש וממנו נעביר את הרשומות לשטח העבודה בתוכנית. עם גמר עיבוד כל הרשומות יש להביא גוש חדש לתוך מאגר הקלט. מאגר הפלט אליו נעביר רשומות שעובדו וצריכות להכתב ליחידת האחסון. עם מילוי המאגר יועבר כל הגוש אל יחידת האחסון. 4 יע'ימ תוכנית שטח עבודה מאגר קלט מאגר פלט תרשים 2-32: עבודה עס מאגרי קלט/ פלט נפרדים קלט פלט שיטה זו מאפשרת חפיפה בין זמני העיבוד וזמני הקלט/פלט. ניתן להמשיך בעיבוד לפני שמאגר הפלט נכתב ליחידת האחסון. כפי שהוסבר, קיימים מחשבים בהם קיים מעבד המוקדש לעבודת קלט/פלט בלבד. קיימים מחשבים בהם ישנם מספר מעבדים כאלה. במערכות אלה, ניתן לקבל חפיפה אפילו בין זמני הקלט וומני הפלט. בזמן שמעבד אחד מביא גוש חדש, מעבד אחר כותב את הגוש הקודם אל יחידת האחסון. השיטה המוצגת בתרשים 2-32 אינה מאפשרת ליע"מ להמשיך את העיבוד, אפילו אם הגוש החדש כבר נמצא בזכרון מאחר ומאגר הפלט יכול לקבל את הרשומה המעובדת, רק לאחר שהמאגר הקודם כבר נכתב. נדגים את משמעות החפיפה בעבודה עם שני מאגרים. 8 2% מ ה קלט יי יי - מחזור עלבוד == תרשים 2-33: מחזור עיבוד ללא מאגרים תרשים 2-33 מציג את מחזור העיבוד ללא שימוש במאגרים. השטת המקווקו מסמן שהיחידה בטלה מעבודה ומחכה לסיום הפעולה של יחידה אתרת. לדוגמא, אין אפשרות לקרוא את הרשומה השניה, עד שרשומה ראשונה לא נכתבה. קרא קרא קרא קרא ]| א עבד עבד עבד עבד 0 [ן 9[ | = כתוב כתוב כתוב כתוב . תרשים 2-34: מחזור עיבוד עס מאגרי קלט ופלט תרשים 2-34 מציג את מחזור העיבוד עם מאגרי קלט/פלט. בזמן שקוראים לתוך מאגר הקלט את רשומה 3, ניתן לעבד את רשומה 2 ולכתוב את רשומה 1. התהליכים מתבצעים בחפיפה. נציין שלא תמיד קיימת חפיפה מלאה, מאחר וזמן העיבוד אינו מקביל בדיוק לזמן הקלט/פלט כפי שתואר בתרשים. 55 ליעול נוסף בתהליך העיבוד ניתן להגיע ע"י הקצאת שני מאגרי קלט/פלט לכל יחידת אחסון (8ַחוז119ט8 6!טטוסכ]). בזמן שקוראים לתוך מאגר קלט 1 ניתן לעבד את הרשומות הנמצאות במאגר קלט 2. עם גמר העיבוד מועברת הרשומה אל מאגר פלט 1. ברגע שמאגר פלט 1 מתמלא, מתחילים למלא את מאגר הפלט 2 ובמקביל כותבים את מאגר פלט 1 ליחידת האחסון. השימוש במאגרים נעשה לסירוגין ומאפשר איזון טוב יותר בין מהירויות העיבוד ומהירויות קלט/פלט כדי לקיים רצף עבודה של כל רכיבי המערכת וניצול טוב יותר שלהן. חן | / הבא גוש זהך העברת הבא למאגר 0 קלע ו ( הבא גוש הבא למאגר קלט 2 4 פעילות קלט/פלט פעילות עיבוד הרשומות תרשים 2-36: עיבוד חופף בין פעילות עיבוד וקלט/פלט סיכום לניהול המאגרים לקלט/פלט השפעה רבה מאד על ביצועי המחשב. הגדלת מספר המאגרים מאפשרת עיבודים חופפים בין היע"מ לבין מעבדי הקלט/פלט. הבעיה היא שריבוי מאגרים מביא לצריכת זיכרון גדולה, אך היא שקולה כנגד העלאת יעילות המערכת. כדי להתגבר על בעיות אלה, פותחו מערכות לניהול קבצים המפעילות אלגוריתמים מתוחכמים לניהול המאגרים. 56 7 שאלות 1. הסבר תפקידו של ערוץ קלט/פלט וכיצד הוא מבצע את תפקידו. האם ניתן לבנות מחשב ללא ערוץ קלט/פלט? מה תהיה צורת עבודתו? 2 הסיביות בזכרון המחשב מיצגות נתונים או פקודות. כיצד מבדיל היע"מ ביניהם? 3 אם גושים ורשומות יכולים להיות באורך משתנה, מה לגבי מאגרי הקלט/פלט? האם הם באורך משתנה? כיצד מחשבים את אורכם? 4. איזה סוג נתונים יאוחסנו בזכרון ואיזה ביחידות אחסון חיצוניות ? 5. לשם מה דרוש מאגר בין יחידת האחסון לזכרון המחשב ? 6. הסבר את המושגים הבאים: מרווח, גוש, מהירות העברה, צפיפות מגנוט לגבי סרטים ודיסקים. 7 קרא פירסום של יצרן המתיחס ליחידת אחסון של סרטים ודיסקים. הוצא מתוך הפירסום את כל הפרמטרים הרלוונטים. 8 חשב את מספר הכרטיסים (80 תווים) שניתן לאחסן בסרט מגנטי באורך 2400 רגל, עם מרווח של 0.6 אינץ, כאשר כותבים: -- רשומה אחת לגוש - 10 רשומות לגוש. חשב עבור צפיפות 800 ו16007 מסגרות לאינץ (871). 9. נתון סרט מגנטי באורך 2400 רגל, מרווח 0.6 אינץ, צפיפות 1600, מהירות תנועה 125 אינץ לשניה, זמן מרווח 4.8 מילישניות. הרשומות הן באורך של 200 בתים. חשב את הזמן הדרוש לקריאת קובץ המכיל 50,000 רשומות עבור 1, 5, 10 רשומות לגוש. 0. ככל שמספר הרשומות לגוש גדול יותר זמן קלט/פלט טוב יותר. מדוע לא לבנות גושים גדולים מאד? מה האילוצים לגודל גוש? 7 8 נספת א': חישוב גודל הגוש בסרט מגנטי קיימות שיטות שונות לחישוב גודל הגוש המיטבי. לדוגמא, נציג שתי שיטות הבנויות על השיקולים הבאים: -- יעילות העיבוד -- גודל הזכרון הפנוי. א. יעילות עיבוד המטרה היא בנית גוש בגודל שיאפשר עיבוד חופף בין היע"מ לבין ערוץ הקלט/פלט. נחפש את גודל הגוש שזמן עיבוד הרשומות שלו שווה לזמן העברת הגוש לזכרון. לשם הפשטות, נניח שקיים רק מאגר אחד בזכרון והוא משמש גם לקלט וגם לפלט. הקובץ מכיל רשומות באורך קבוע ‏ , גודל הגוש 8 ולכן מספר הרשומות בגוש 8 5 זמן העברת רשומה מכונן לזכרון הוא //, לכן זמן העברת הגוש לזכרון יהיה / א 5. לזמן זה יש להוסיף את מחצית זמן האטה/האצה של הכונן ואותו נסמן ב-ג%. הזמן הכולל יהיה: 5 * 0 נסמן ב"ק את זמן עיבוד הרשומה. מאחר ויש 5 רשומות בגוש, זמן עיבוד הגוש יהיה: פיל = 7 במערכת סידרתית רגילה שבה אין חפיפה בין היע"מ לבין הערוץ, זמן העיבוד הכולל של הגוש יהיה סכום זמן העברת הגוש לזכרון וזמן עיבודו. 7 - +7 במערכת עם חפיפה, העיבוד וההעברה יכולים להתבצע באותו זמן. אם כ קטן יותר מִַ1 ניתן לבצע את העיבוד במקביל להעברת גוש חדש אל הזיכרון. סה"כ זמן העיבוד יהיה הגדול מבין זמן העיבוד וזמן ההעברה. נסמן ב"( את שעור החפיפה. = 7 צ אם ]<< 1 -11<1-6 התהליך חסום על-ידי זמן העיבוד (0660ט80 (021). אם 18 =כ1 16 = התהליך מאוזן (006ח8818). אם 18 = **1> [] התהליך חסום על-ידי זמן העברת גוש (660ת800 1/0). 8 נחשב את גודל הגוש בתהליך מאוזן, המאפשר חפיפה מלאה. מספר הרשומות המומלץ לגוש: מאחר 17 8, 1 קבועים, ככל שזמן עיבוד הרשומה יגדל, יש להקטין את גודל הגוש לקבלת תהליך מאוזן ולהיפך. אם | שווה לזמן הדרוש להעברת רשומה מכונן לזכרון, גודל הגוש שואף לאינסוף. במציאות, חישוב גודל הגוש מורכב יותר מאחר וקיימים מספר מאגרי קלט/פלט, מתבצע עיבוד של מספר קבצים ומשתמשים בעיבוד מרובב (פהווחות גזקסזקו)|ט!א) שבו קיימת בכל מקרה חפיפה מסוימת בין העיבוד לפעולות קלט/פלט. ב. | גודל זיכרון פנוי השיטה הקודמת לא התחשבה בכמות הזכרון העומדת לרשותנו למאגרים. אם זמן עיבוד הרשומה קטן מאד, לשמירת תהליך מאוזן יש לבנות גושים גדולים מאד. גושים גדולים מחייבים הקצאת מאגרים גדולים בזיכרון. אם התוכנית מעבדת בו זמנית מספר קבצים, הבעיה מחריפה. נציג שיטה לחישוב גודל הגוש על פי שיקולי כמות זיכרון פנויה. גודל הגוש יחושב מתוך הנחה שהתוכנית מעבדת ח קבצים שונים ולרשות התוכנית עומד גודל זיכרון 5 (יש להדגיש שהנושא רלוונטי בעיקר במחשבים קטנים וזעירים בהם לא קיימת שיטת זיכרון בפועל -- 5101886 6081ז1), נשתמש בסימונים הבאים: א -- מספר הרשומות בקובץ 1, ₪ -- אורך רשומה בקובץ בתווים, בהנחה שהרשומות הן באורך קבוע, ₪ -- מספר הרשומות לגוש בקובץ 1, 5 -- שטח הזכרון הכולל הפנוי למאגרים. המטרה היא בנית מספר גושים מינימלי בכל הקבצים לקבלת ניצולת אחסון גבוהה. מאחר ובקובץ יש א! רשומות ומספר הרשומות לגוש הוא 5, מספר הגושים לקובץ יהיה ט/!.נדרוש שמספר הגושים לכל הקבצים יהיה מינימלי. ה 2 = הגו = קיים אילוץ ששטח המאגרים לא יעלה על 5. גודל המאגר הדרוש לכל קובץ הוא מכפלת מספר הרשומות בגוש בגודל הרשומה. ה 5 [ןט כ 1 ניתן לפתור בעית אופטימיזציה זו תוך שימוש בכופלי לגרנז'. לפי 5ז81)6 / מספר הרשומות האופטימלי בקובץ יהיה: 99 מאחר ומספר הרשומות לגוש חייב להיות מספר שלם, יש לעגל את התוצאה המתקבלת. העיגול גורם לסטיה מהאופטימום. דוגמא : נדגים שיטת חישוב הגוש. תוכנית מעבדת שלשה קבצים הנמצאים על סרטים מגנטים. קובץ 1: מכיל 100,000 רשומות באורך 1000 תווים קובץ 2: מכיל 10,000 רשומות באורך 500 תווים קובץ 3: מכיל 1,000 | רשומות באורך 80 תווים שטח זיכרון למאגרים 0 תווים. נשווה את מספרי הגושים, זמני העיבוד ושטח האיחסון עבור שלשה מקרים: -- רשומה אחת לגוש, -- חלוקה שווה של השטח לכל אחד מהקבצים, -- חישוב גודל הגוש האופטימלי על סמך הנוסחה. רשומה אחת לגוש: קובץ 1: מספר גושים = 100,000 | 1 = | קובץ 2: מספר גושים = 10,000 1 = ,ט קובץ 3: מספר גושים = 1,000 1 = ג סה"כ 111,000 גושים בשלשת הקבצים. חלוקה שווה: נקצה לכל אחד משלשת הקבצים 4000 תווים בזכרון. 0 = 3 = מספר גושים 4 = 8 /0 0 = > משפר גושים 8 = 2 / 0 = > מספר גושים 0 ב 0 04 סה"כ קיבלנו 26,270 גושים בשלשת הקבצים. 00 חישוב גודל גוש אופטימלי: נשתמש בנוסחה לחישוב גודל הגוש האופטימלי: . 3 9 = 80א1000/צ + 50א10.000 / + '1000א100.000 צ = 3 אצ 5 - 0 12000 = 7 = = מספר גושים 9590 7 ה חחח * 2519ך- ל ו 100000 > 00 120000 2 5 ₪ 59 = מספר גושים 29|[ 5007 9 בס 1000 2 0 0 204 39 5 339 = מספר גושים 9[ 19 93" הפתרון האופטימלי מכיל 13,062 גושים. מאחר ומספר הרשומות לגוש חייב להיות שלם נעגל את התוצאות: 5 = 4 = = במקרה זה מספר הגושים בשלשת הקבצים יהיה 13,946 שהוא גבוה מהאופטימום אבל עדיין נמוך בהרבה משני המקרים הקודמים. נסכם את התוצאות שהתקבלו בטבלה: חישוב חלוקה רשומה אורך מספר ה א יחומ מע את שוש ו ]| ₪ | אפר | 6 2,020 חן ל על סמך הנוסחאות שפיתחנו לחישוב קיבולת הסרט וזמן עיבוד, נחשב את שטח האחסון הכולל וזמן העיבוד הדרושים עבור כל אחת מהשיטות. לשם כך נשתמש בנתונים הבאים: סה"כ מספר ו צפיפות המיגנוט = 1,600 תווים לאינץ מהירות העברה = 40,000 תווים לשניה זמן האטה/האצה = 20 מילישניות גודל מרווח = 0.6 אינץ על סמך נוסחת הקיבולת של סרט ניתן לחשב את השטח הכולל הדרוש לאחסון הקובץ עבור כל אחד מהמקרים: מספר תווים לגוש צפיפות מגנוט שטח אחסון באינץ = מספר גושים ( + גודל מרווח ) 1 זמן עיבוד כל הקובץ יהיה זמן עיבוד הגוש א מספר הגושים מספר תווים לגוש ( זמן עיבוד = מספר גושים (מחצית זמן האטה : ן , [ הט מהירות העברה נניח שזמן עיבוד הרשומה בזכרון זנית. שטח אחסון 15 5 17 | 250 | 2 07 20 תוצאה: -- שטח האחסון הכולל בשיטת החישוב קטן מאשר בשיטות ההקצאה של רשומה לגוש ושיטת החלוקה השווה. -- זמן העיבוד הכולל בשיטת החישוב ובשיטת החלוקה השווה זהה כמעט ונמוך מאשר בשיטת ההקצאה של רשומה לגוש. 02 9 נספת ב': חישוב זמן חיפוש בדיסק מבין שלשת המרכיבים של זמן הגישה לנתונים בדיסק זמן החיפוש הוא הגדול ביותר. בנספח זה נרחיב את הדיון על זמני חיפוש. הגדררה: זמן חיפוש הוא הזמן הדרוש למיקום ראשי קריאה/כתיבה במקום הדרוש לקריאה או לכתיבה. זמן החיפוש תלוי במסילה בה נמצא ראש הקריאה/כתיבה ובמסילה אליה עליו להגיע. ככל שהמרחק ביניהן גדול יותר, זמן החיפוש יהיה גדול יותר. זמן במילישניות 0 5 0ו 0 מספר מסילות שיש לחלוף על פניהן 200 00 00ו 0 ו תרשים 2-37: זמני חיפוש עבור דיסק 2314 של יבמ כפי שניתן לראות מתרשים 2-37 לא קיים יחס לינארי פשוט בין מספר המסילות שיש לחלוף על פניהן לבין הזמן הדרוש לביצוע תנועה זו. 9 מרחקי תנועה אפשריים (מס. מסילות) 199 99 9 ב ימיגה .| שמאלה 200 גליל התחלתי תרשים 2-38: מספר הגלילים שיש לחלוף כפונקציה של מקוס מנוחת הזרוע 3 חישוב מרחק חיפוש ממוצע: נניח שקובץ מכיל צ! גלילים. החיפוש מתבצע בין גליל המקור (המקום בו נח הראש) וגליל היעד (הגליל אליו יש להניע את הראש). גליל המקור יכול להיות כל אחד מָ"וּ הגלילים (1,... ,2 ,1 = 1). גליל היעד יכול להיות כל אחד מֶן הגלילים (א- 2 = 6. המרחק בין גליל מקור 1 לגליל יעד ( יחיה |(-1|. נחשב את סכום המרחקים מכל גליל לכל גליל ונחלק במספר המרחקים האפשריים לשם קבלת מרחק החיפוש הממוצע. סכום המרחקים האפשריים: 1 א א א ל*פ-6 5 9 5 6-27 א 5 -3ן 1 בן - 11 א 4 + -6-9 50 -(1952- ₪6 5 2 =ן 1ן 9-9 טיא . א א (+אס (א) א 5 וכו אה קיימים (1 - א)א צירופים בין גליל התחלתי לגליל יעד. נחלק את סכום המרחקים האפשריים במספר הצירופים: א = [+א | (1-א) 1יא) א א וצ (1--א) א3 קיבלנו שהמרחק הממוצע שהזרוע עוברת הוא כשליש ממספר הגלילים שהקובץ תופס בדיסק. המסקנה היא שאומדן טוב לזמן חיפוש ממוצע יהיה הזמן הדרוש כדי לחלוף על שליש מהגלילים שהקובץ תופס. נציין שחישוב זה נכון עבור הסתברות גישה זהה לכל אחד מהגלילים. חישוב זמן חיפוש ממוצע: ניתן לחשב את זמן החיפוש הממוצע בצורה מדויקת יותר אט הסתברות הגישה לגליל זהה עבור כל הגלילים. אם הקובץ תופס ! גלילים, חיפוש שמאלה של 8 גלילים (1,... ,2 ,1 = %) אפשרי אם הזרוע נמצאת בגליל 1 + * ואילו חיפוש ימינה של.8 גלילים אפשרי אם הזרוע נמצאת בגליל -א-!. לדוגמא, חיפוש שמאלה של שני גלילים, 2 = %, אפשרי אם הזרוע נמצאת בגליל 3 = 1+ א. חיפוש ימינה של שני גלילים אפשרי אם הזרוע נמצאת בגליל 198 (בהנחה שקיימים 200 גלילים במשטח המגנוט). מאחר וקיימים סה"כ (1-א)א צירופים אפשריים בין גליל המקור לגליל יעד וקיימת הסתברות שווה לכל צירוף נקבל: הסתברות גישה 1 (1-א) א לגליל 4 התוחלת של המרחקים שנחלוף תהיה : ד 5 + שרע = 5 א - :א 002 0-2 0-2 2-ל %% למלנה שמאלה 1 = %-1 הוא תוחלת המרחק שיש לעבור אם הזרוע נמצאת בגליל מקור1. לחישוב זמן החיפוש הממוצע, יש להכפיל את המרחק בזמן הדרוש לעבור את הגלילים. נציין שההנחה של הסתברות גישה זהה לכל גליל אינה מתקיימת בדרך כלל במציאות. התרכזות הפעילות סביב גלילים מסוימים יכולה לשפר את זמן הגישה. ניתן גם להשתמש בנוסחה מקורבת של זמן החיפוש. נוסחה זו תלויה בכונן וניתנת ע"י היצרן. המיבנה הכללי שלה 5%+ 8= 1 כאשר 8 ו-5 קבועים כלשהם ו-% מספר הגלילים שיש לחלוף, מאחר ובממוצע 3/= א נקבל קירוב לזמן חיפוש 1/3 + 8= ך. 65 פרק שלישי תכנון רשומות 1 מבוא איפיון רשומות 4/2 3 מפתחות 4 קביעת השדות המרכיביס את הרשומה 45 26 אירוע -- תכנון רשומות שאלות בפרק זה נציג את השיקולים השונים בתכנון רשומות ויוסברו המאפיינים השונים שלהן. 07 1 מבוא יחידת המידע החשובה ביותר בעיבוד נתונים היא הרשומה. כל פעולות הקלט/פלט של תוכנית המחשב מתיחסות לרשומה. תכנון טוב של הרשומה הוא הבסיס להפעלה טובה של מערכת מידע ממוחשבת. שיטות הארגון המתקדמות ה לאיתורה המהיר ביחידת האחסון. בפרק זה נסקור משתמשות במפתח הרשומ ולים אחדים את המאפינים השונים של הרשומות והמפתחות שלהן ונציג שיק המנחים את מנתח המערכות בקביעת מבנה הרשומה. 2 איפיוןו רשומות ה הגדרה: רשומה הינה אוסף של שדות בעלי משמעות לוגית. השדות מכילים את יחידות המידע הבסיסיות של פרט מסויים באוכלוסיה. לפיכך, הרשומה היא אוסף הנתונים של פרט כלשהו מזוהה באוכלוסיית הקובץ. התכונה החשובה ביותר של הרשומה והשדות המרכיבים אותה, מנקודת מבט המערכת לניהול קבצים, היא האורך שלהם. איפיון רשומות סוגי רשומות סוגי שדות אורך משתנה אורך קבוע תרשים 3-1: איפיון רשומות אורך משתנה סוגי שדות מבחינים בין שדות בעלי אורך קבוע ושדות בעלי אורך משתנה. שדות בעלי אורך קבוע: שדות אלה מורכבים ממספר קבוע של תווים. לדוגמא, מספר קטלוגי המכיל 9 תווים נומריים. בכל הרשומות נמצא 9 ספרות בשדה המספר הקטלוגי. הטיפול בסוג זה של שדות הינו פשוט יחסית. >99 שדות בעלי אורך משתנה: שדות אלה מורכבים ממספר משתנה של תווים. דוגמא כתובת או שם משפחה. קיימות כתובות בעלות 15 תווים ואחרות בעלות 40 תווים. טווח השינוי יכול להיות שונה ממקרה למקרה. קיימות מספר שיטות לטיפול בשדות בעלי אורך משתנה: א. | יישור (פַחוע/ו51ט): בשיטה זו השדות בעלי האורך המשתנה מיוצגים במחשב כשדות בעלי אורך קבוע. גודל השדה בעל האורך הקבוע יהיה בגודל המירבי שהשדה המשתנה יכול לקבל. הנתונים מועברים לשדה באורך קבוע תוך יישור השדה לאחד הכיוונים (ימין או שמאל) והשלמת התווים הנותרים לערך מוסכם מראש. היישור מתבצע בהתאם לסוג הנתונים: -- נתונים מספריים -- יישור ימינה והשלמת תווים מובילים באפסים, -- נתונים אלפבתיים -- יישור שמאלה באנגלית ויישור ימינה בעברית, והשלמת התווים הסופיים בתווי רווח (50806 ,218% ). דוגמא: שדה שם העובד הוא שדה אנגלית, בעל אורך משתנה. נבנה אותו באורך 30 תווים וניישר את הנתונים לשמאל. שם עובד ארוך יותר יקוצץ. אורך שדה 160801 616ות -- . --- ט---4>- 2ךוש0אתם.1 =+---- ₪-----> %ג0ם ]>- 0 == -[ תרשים 3-2: שדה באורך קבוע עס תוכן באורך משתנה כפי שניתן לראות יש בשיטה זו בזבוז בשטח אחסון, אבל מאידך היא פשוטה מאד מאחר והטיפול הוא בשדות בעלי אורך קבוע. ב מונה אורך השדה (+חטס;) ואַת16 1616): אם השדה משתנה באורכו בצורה קיצונית שיטת היישור היא בזבזנית מאד. ניתן לפתור בעיה זו עלדידי הוספת שדה אחד נוסף המכיל את אורך השדה. נשתמש שוב בדוגמא של שדה אלפביתי באנגלית. 2דועסא=5. א פעםם 6851 611.0 | תרשים 3-3: שימוש במונה אורך שדה מונה אורך השדה 6 120 הטיפול בשדות אלה מורכב יותר. יש לפענח תחילה את תוכן שדה המונה ורק אחר כך לטפל בשדה הנתון עצמו. אם הרשומה מכילה מספר שדות בעלי אורך משתנה מקובל לרכז יחדיו את כל שדות המונה. 2דוטסאת = דאפסאוצ שצםם והש ₪11 תרשים 3-4: מספר שדות מונה אורך השימוש בשדות בעלי אורך משתנה גורם לרשומה כולה להיות בעלת אורך משתנה ולכן הטיפול בה מורכב יותר. יש לזכור ששדה המונה עצמו תופס מקום ומחווסף לאורך הנתונים שבגוף הרשומה. ג. | סימון שדות: ניתן להשתמש בסימן מיוחד המפריד בין שדות בעלי אורך משתנה. סימן מיוחד זה אינו יכול להופיע בתוכן השדות. הטיפול ברשומות מסוג זה מסורבל יותר מאחר ויש לבצע סריקה של כל השדות ולחפש את הסימן המיוחד המפריד ביניהם. % 82405 ואט % דאפס6אוצ תרשים 3-5: סימון מיוחד בין שדות בעלי אורך משתנה סוגי רשומות מבחינים בין רשומות באורך קבוע ורשומות באורך משתנה. רשומות באורך קבוע: אם כל השדות המרכיבים את הרשומה הם בעלי אורך קבוע גם הרשומה תהיה בעלת אורך קבוע. אורך רשומה 818ַח6! 66010 -- ,31 שם משפחה תעודת זהות ₪ - ו ה ב 5 תרשים 3-6: רשומה בעלת אורך קבוע אורך הרשומה כולה מחושב כסכום כל השדות המרכיבים אותה: ה תפ =עת ם -- מספר שדות ברשומה 1ן 71 דוגמא ליישום סוג זה של רשומות בקובול: 8ואקצטס סת 5" 53 415 6087 כ אסססא 0םא-וא]1סצס 15 פאסספא הדגכ .6מא-אצסס ‏ |0 , (9)8 16 2 03 א 03 -(15)א 210 זַדג תק 05 .(30)< 16 1151241 05 רשומות באורך משתנה: כאשר חלק מהשדות המרכיבים את הרשומה הם בעלי אורך משתנה או קיימים כמה סוגי רשומות באותו קובץ נקבל רשומות באורך משתנה. קיימות מספר שיטות לניהול רשומות באורך משתנה: א מונה אורך רשומה ()מטס?) 1ת8ח16 566010): בשיטה זו מוסיפים לרשומה שדה אחד נוסף המציין את אורך הרשומה. שדה זה הוא חלק מהרשומה ותוכנו באחריות המשתמש. יש להגדיר את אורך הרשומה המינימלי והמקסימלי כדי שהמערכת לניהול קבצים תוכל להקצות את המאגרים הדרושים. שדה המונה חייב להמצא בכל הרשומות באותו מקום. מונה אורך הרשומה - -/ 6 חסוז 051 +60 חז8ַח16 -- 1.0 \ וזמָח1.6 +ה 60 1.0081 -- .1.01 הזח | זסס6 |בווחזוא -- ה צוא הח 1 3600 |3הואגו -- האוא | =ש| בו | ו + + מס < האא הת תרשיס 3-7: רשומות באורך משתנה עס שדה מונה אורך המערכת לניהול קבצים "יודעת" את אורך הרשומה מתוך ידיעת הפרמטרים 1.02 ,.1.021 ופענוח תוכן שדה המונה. ₪ פע 5 100 70 10 5א600%741 פשאסספת ₪ אס סאזסאפקפק .6פא-א 5 כאססתת דהפ %6. [|0 (8)א 6זק 1-דגכ 03 .09 03 ,(2)90 210 2 03 הפרמטרים של רשומה זו יהיו: 9 = 07 2 = 205, 10 = תא]א, 100 = או 2 שיטה זו מאפשרת ניהול שדות בעלי אורך משתנה, כפי שמודגם בתרשים 3-8. אורך רשומה מונה | מונה / | וו | 0 אאא | --->- האוא תרשיס 3-8: דוגמא לשימוש בשדות משתנים בדוגמא המופיעה בתרשים 3-8, הרשומה מכילה שני שדות בעלי אורך משתנה. לכל אחד משדות אלה יש שדה מונה אורך. בנוסף יש לרשומה שדה מונה אורך רשומה. המתכנת צריך לחשב את אורך הרשומה על-ידי סיכום התוכן של שדות מונה השדות והחלק הקבוע של הדשומה. נשים לב ששדות המונה מופיעים בכל הרשומות באותם מקומות ולכן הם כלולים ב-א צזן/א. שיטה זו מאפשרת טיפול במספר סוגי רשומות שונות במסגרת אותו הקובץ. נציג לדוגמא קובץ שבו קיימים שני סוגי רשומות: -- רשומת סטודנט המכילה פרטים אישיים ואורכה 300 בתים. -- רשומת ציונים המכילה את ציוני הבחינות שהוא עבר ואורכה 25 בתים. כדי לזהות את שני סוגי הרשומות נוסיף לכל רשומה שדה נוסף הנקרא "סוג רשומה". 0% מפתח או . אורך סוג מספר אורך סוג קוד מספר 7 |-01.>-|------ | ק0ן אאא המא תרשיס 3-9: שני סוגי רשומות באותו קוב המפתח של הרשומות בתרשים 3-9 הוא באורך ?1.6. לקריאת רשומת פרטים אישיים נעביר את מספר הזהות וסוג רשומה 4 למפתח. אם רוצים לקרוא את רשומת הציונים נעביר מספר זהות, קוד הקורס וסוג רשומה 8. זו דוגמא לשיטה שבה שתי רשומות זרות ובעלות מבנה שונה לחלוטין מופיעות באותו קובץ. 3 ב. רשומה עם נגררות (ז1141!6): לעיתים קבוצת נתונים שיש לנהל בקובץ היא בעלת מספר משתנה של מופעים. לדוגמא, במערכת לניהול מלאי פריט כלשהו יכול להופיע במספר מחסנים. בכל מחסן יש לרשום את הכמות במלאי ותאריך הכניסה למחסן. דוגמא נוספת, ברשומת עובד יש לנהל מידע על הילדים של העובד. לכל ילד יש לרשום את השם, תאריך לידה, מין ועוד. מאחר ויתכנו עובדים ללא ילדים ואילו לאחרים יש מספר ילדים שונה אין זה נוח לנהל את הנתונים האלו בשדות בעלי אורך קבוע. נוח מאד לרשום נתונים במבנה זה בצורת ניגררות בעלות אורך קבוע אבל במספר משתנה של מופעים. -+-------ח מופעלם ₪ + נגררות הנמ אנרל = ד ו בוה 9 הסווופ0ק +00 ז6!ופזד -- ק6ך הופַח16 הס ז6|ו8זד -- 1שד הופַת16 ז6|ופזד -- .1 הוקַח6] 1168061 -- .111 תרשיס 3-10: רשומה עס נגררות התוכן של שדה מונה הנגררות מכיל את מספר הנגררות המופיעות ברשומה. המערכת לניהול קבצים תחשב את אורך הרשומה על פי פרמטרים אלה. לקביעת גודל המאגר הדרוש על המתכנת לציין את מספר הנגררות המינימלי והמקסימלי. דוגמא: יש לנהל את הציונים של הסטודנט כמו בדוגמא הקודמת. מספר הציונים המקסימלי הוא 30 (מספר המקצועות שנבחן בהם). , תאריך | קוד מונה שם מספר ציון | קורס | קורס נגררות | ?1777 |סטודנט | זהות -*---ד --->] *------₪ ---->] תרשיס 3-11: דוגמא -- ניהול רשומות ציוניס לסטודנט ו שוות.-דאתסטזפ כפק 58 440 10 80 185 607 כ אססטא סמת-דאתכטד 15 2 א00ס5א גדגס .סמת-דאתסטד8 -|0 . (9)8 16ק זז 03 . (30)< 16 ]א 03 . (2)40 216 דטצסדא 03 . 99 0זק דםתםתסא-פאסא 03 7 0 ד םסא 03 דםתפפסוא-פאסא אס סאזפאפקפס . (9)3 6זק 5 05 . (9)66 16 סד 05 (9)3 10 אעז2ד 05 הפרמטרים של רשומה זו יהיו: 79 = 10, 10=2, 81= עת, 2 = 80,711 = מאוא, 440= ה אא. מד+ ו נגררום] + (צן 2 האוא מקסימלי הבעיה בשיטת הנגררות היא שאם הנגררות ארוכות או כאשר יש מספר גדול מאד של נגררות אפשריות הרשומות יכולות להיות ארוכות מאד והטיפול בהן באחסון ובעיבוד אינו נות. ג. | סימון סוף רשומה: בדומה לשיטה שהוצגה לסימון שדות בעלי אורך משתנה, ניתן להשתמש בסימון מיוחד גם לציון סוף הרשומה (1878/-60070). סימן מיוחד תרשים 3-12: רשומות עס סימון סוף רשומה הסימן שנבחר לסמן את סוף הרשומה אינו יכול להופיע בתוכן הרשומה. לאיתור אורך הרשומה, סורקת המערכת לניהול קבצים את כל הרשומה ומחפשת את הסימן המיוחד. שיטה זו אינה מומלצת מאחר והיא יקרה מאד מבחינת צריכת זמן העיבוד של היע"מ. 5 ן ן ן 3 מפתחות (ע66 6ז6660) הגדרה: המפתח הינו שדה, תת-שדה או קבוצה של שדות המזהים בצורה חד משמעית את הרשומה. מבחינים בין שני סוגי מפתחות: ‏ -- מפתח סדר (ע%6 ז0169): משמש לקביעת מיקום הרשומה בקובץ. מקובל לקרוא לו מפתח ראשי. בארגון סידרתי מיקום הרשומה אינו נקבע לפי מפתח (אלא אם כן ממיינים את הקובץ תחילה) לכן נהוג לומר שזהו ארגון ללא מפתח. בשאר שיטות הארגון המשתמשות ביחידות אחסון בגישה ישירה, המפתח משמש לקביעת מיקום הרשומה בקובץ. -- מפתח חיפוש (ע%6 ה0ז598): משמש לאיתור הרשומה בקובץ. אם הוא שונה ממפתח הסדר, נוהגים לקרוא לו מפתח משני. לכל קובץ בגישה ישירה יש מפתח סדר אחד ומפתח חיפוש אחד או יותר. דוגמא: קובץ עובדים שבו השדות ברשומה הם מספר זהות, שם עובד, מספר מחלקה. מפתח משנ? מפתח ראשל -] ו משה הרו ודו ובר תרשים 3-13 : מבנה קובץ עובדיס השדה המזהה כל רשומה בקובץ בצורה חד"משמעית יהיה תעודת זהות. נבחר בו כמפתח סדר ומפתח חיפוש. ניתן גם לבקש מידע על כל העובדים השייכים למחלקה מסוימת. במקרה זה יש להגדיר את מספר המחלקה כמפתח חיפוש. החיפוש של רשומות לפי מפתח שאינו מפתח הסדר יוסבר בפרק על אינדקסים משניים ומבנים משורשרים, נוהגים להבחין בשני מצבים שהערכים של המפתח יכולים לקבל: מפתת יחודי (ץ%6 ףוח )): המפתח מזהה בצורה חד-משמעית רשומה אחת בלבד. בדוגמא הקודמת תעודת הזהות מזהה בצורה חד-משמעית רשומה בקובץ. לכל עובד יש מספר תעודת זהות שונה ולכן הערך שיופיע ברשומה יהיה שונה. מפתח הסדר חייב להיות יחודי ברוב שיטות הארגון המשתמשות ביחידות אחסון בגישה ישירה (אינדקס סידרתי וארגון ישיר). 76 א מפתח כפול (ע%6 0416ו1קטכ]): המפתח אינו מזהה בצורה חד-משמעית רשומה אחת אלא קבוצה של רשומות. בדוגמא קודמת, המחלקה הינו מפתח מסןְג זה. מאחר ומספר עובדים שייכים לאותה מחלקה ירשם מפתח זה בשדה המחלקה של כל רשומות העובדים באותה מחלקה. קביעת המפתחות של הרשומה הינם פונקציה של היישום ואפשרויות הגישה לנתונים שיש להעמיד לרשות המשתמש. בכל אופן, אין לבנות מפתחות משניים רבים מדי מאחר והטיפול בהם הינו יקר מבחינת משאבי המחשב. יש להגדיר מפתח כמפתח משני רק כאשר ברור שיש לגשת לרשומות בסדר שונה מאשר קובע מפתח החפוש של הרשומות. לפעמים רוצים לחסוך במקום ברשומה ואז ניתן להשתמש בטבלאות עזר חיצוניות. לדוגמא אם ברשומה מופיע מספר מחלקה אין צורך שנחזיק בתוך הרשומה גם את שם המחלקה. ניתן לשמור טבלה חיצונית המבצעת תרגום בין מספר המחלקה לשם המחלקה. אם נרצה לגשת לרשומה לפי שם המחלקה יש לגשת תחילה לטבלה, לבצע תרגום למספר מחלקה ולגשת לקובץ. זוהי דוגמא לחיפוש רשומה לפי שדה שאינו נמצא ברשומה ולכן נקרא לו מפתח חיצוני. שיטה זו מחייבת גישה נוספת לטבלה אבל מאידך מפשטת את תהליך העדכון. שינוי שם מחלקה למשל, מתבצע במקום אחד בלבד ואינו מחייב עדכון כל רשומות הקוב שבו מופיע מספר המחלקה. 7 זו 4 קביעת השדות המרכיביס את הרשומה 0 3 0 4 הרשומה מייצגת פרט כלשהו באוכלוסיה שעליו אוספים נתונים. לדוגמא במערכת לניהול מלאי, רשומות המלאי יכילו פרטים רלוונטיים בנושאי המלאי: מספר קטלוגי, תאור פריט, יחידת מידה, כמות. השדות המרכיבים את הרשומה נקבעים על פי מטרת המערכת ושיקולי יעילות. נשתמש בדוגמא לתכנון רשומה לניהול עובדים במפעל. הרשומה תכיל את הפרטים הבאים: פרטים אישיים, כתובת, נתוני השכלה, נסיון מקצועי, קורסים. אם כעבור זמן מה נתבקש לשלוף את רשומת העובד הגר בבית הגדול ביותר, לא נוכל לעשות זאת בעזרת המערכת הממוחשבת מכיון שפרט זה אינו מופיע בנתוני הכתובת. כאשר הפרטים הדרושים לקבלת המידע אינם מופיעים ברשומה אי אפשר לקבל מידע זה. במקרה שלפנינו הנתון על גודל הבית (מספר דירות למשל) לא הוגדר מראש בין הנתונים הנדרשים. בגלל השוני בתכלית המערכות, יתכן מצב שבו שתי מערכות לניהול עובדים בשני מפעלים יכילו שדות שונים, אם מפעל אחד עוסק בייצור חומר רדיואקטיבי יש לשער שנמצא ברשומה פרטים אודות בריאות העובדים והבדיקות הרפואיות שלהם. במפעל העוסק בייצור בגדים יש לשער שהנושאים הבריאותיים לא יבואו לידי ביטוי באותה מידה ברשומה. סגמנטציה של רשומות עד עכשיו התיחסנו לרשומות כאל אוסף של שדות בעלי משמעות לוגית. לא הכרנו מצב של רמת ביניים בין הרשומה לבין השדה. ברמה זו ניתן להגדיר את אוסף השדות המתיחסים לנושא מסוים בתוך הרשומה. אוסף שדות זה מהווה חלק של הרשומה הלוגית שבה דנו קודם. נשתמש ברשומות העובד מהדוגמא הקודמת: -- פרטים אישיים כוללים: מספר זהות, שם, כתובת, טלפון; -- פרטים דמוגרפיים: שנת לידה, ארץ לידה, שנת עליה, מין; -- נתוני השכלה: סוג השכלה, מספר שנים, תעודה; -- נתוני קורסים: קוד הקורס, תאריך הקורס, מוסד, ציון. עד כה הנחנו שאת כל הפרטים האלה השייכים לפרט אחד באוכלוסיה מחזיקים בתוך אותה רשומה במבנה אשר מקובל לכנות אותו רשומה שטוחה (66010 |ה!-). קורסים השכלה |. פרטים פרטים 1 דמוגרפיים| אישיים תרשיס 3-14: רשומת עובד "שטוחה" 78 ₪ שיטה זו יוצרת שתי בעיות: -- רשומות ארוכות מאד. כל תוכנית מקבלת את כל הרשומה גם אם רוב הנתונים אינם דרושים לה. לדוגמא, תוכנית המפיקה דוח על התפלגות העובדים לפי גיל אינה זקוקה לפרטים על השכלת העובד או הקורסים שהשתתף בהם. הרשומות הארוכות גורמות ליצירת גושים גדולים ולבזבוז בהעברת הנתונים בין יחידות האחסון לזיכרון המחשב. ---‏ טיפול לא נוח בנתונים בעלי מספר משתנה של מופעים. לדוגמא, ניתן לשמור ברשומה מספר מוגבל של קורסים ונתוני השכלה בגלל שיקולים של מבנה הרשומה (אורך קבוע למשל) או גודל הגוש. פתרון לבעיות אלה נמצא על-ידי סגמנטציה של הרשומות. הגדרה : סגמנט הינו אוסף שדות הקשורים בקשר לוגי ודרושים כיחידה אחת למטרות עיבוד הנתונים. הסגמנט הינו חלק של הרשומה הלוגית. רשומה תרשים 3-15: חלוקה היררכית של הרשומה ניתן להגדיר את הרשומה כאוסף של סגמנטים בעלי קשר לוגי ביניהם. הסגמנט מזכיר את מבנה הנגררות. רוב המערכות לניהול קבצים יודעות לטפל רק בסוג אחד של נגררות ולכן פותחו מערכות תוכנה אשר יודעות לטפל במספר כלשהו של סוגי נגררות עם מספר רב של מופעים. פרטים אישיים קורסים 1 השכלה ו פרטים דמוגרפיים תרשיס 3-16: מבנה היררכי של רשומת עובד 19 הפרטים המזהים ברשומת העובד שבתרשים 3-23 נמצאים בסגמנט השורש והם מזהים את כל הרשומה. כל שאר הסגמנטים מופיעים מבחינה היררכית מתחת לסגמנט השורש. סגמנט הפרטים הדמוגרפיים מופיע פעם אחת בלבד. סגמנט ההשכלה מופיע מספר פעמים, סגמנט אחד עבור כל רמת השכלה. הסגמנט של הקורסים יופיע גם כן מספר פעמים בהתאם למספר הקורסים שהעובד השתתף בהם. ייצוג היררכי זה הינו ייצוג טבעי יותר של הנתונים והוא עונה על שתי הבעיות שהועלו קודם. למרות שמבחינה לוגית האורך הכולל של הרשומה זהה בשתי השיטות הרי שמבחינה פיסית הנתונים לא חייבים להופיע זה ליד זה. ניתן לפזר את הסגמנטים השונים ביחידת האיחסון ובלבד שנבנה מנגנון שיקשר את כל הסגמנטים הדרושים יחדיו למבנה של רשומה. כל סגמנט כולל את השדות הדרושים בלבד, ולכן כל הסגמנטים מאותו סוג הם בעלי אורך שווה. הסגמנטציה מאפשרת להציג לכל תוכנית רק את אותם חלקים (סגמנטים) מתוך הרשומה שדרושים לה. שתי תוכניות שונות יכולות "לראות" מבנים שונים: האחת אשר מפיקה דוח התפלגות העובדים לפי ארץ מוצא והשניה המפיקה דוח על הקורסים בהם השתתף כל עובד. פרטים אישיים פרטים דמוגרפיים פרטים אישיים תכנית א: התפלגות לפי ארץ מוצא תכנית ב : קורסים לפי עובד תרשים 3-17: הצגת חלק מהסגמנטים לתוכניות יישוס שונות 0 "3. בתרשים 3-17 כל תוכנית רואה מבנה לוגי הדרוש לה ואינה מטפלת בנתונים שאינם רלוונטים עבורה. בעיה שניה של מספר מופעים מוגבל של אינפורמציה בתוך הרשומה, נפתרת בשיטה זו מאחר ואין צורך לאחסן את כל הסגמנטים בצורה רציפה. כל סגמנט חדש יכתב במקום הפנוי ויקושר בצורה כלשהי (שנראה בהמשך) לרשומה שהוא שייך לה. נבחן דוגמא נוספת: הצערת מחיר תרשים 3-18: מבנה היררכי של רשומת פריט ברשומת פריט שבתרשים 3-18 מספר המופעים של הסגמנטים עשוי להשתנות מרשומה לרשומה ולעיתים אפילו בצורה קיצונית. קיימים פריטים אשר נמצאים ב-30 מחסנים ואחרים נמצאים במחסן אחד בלבד. מספר המופעים של הסגמנטים הוא פונקציה המשתנה עם הזמן. ברגע נתון הפריט יכול להמצא ב-20 מחסנים וזמן מה אחר כך רק ב-10 מחסנים. שיטת הייצוג ההיררכית נותנת שלשה ממדים לרשומה לעומת מימד אחד בשיטה הקודמת. רוחב -- ניתן לחלק את הרשומה למספר רב של סגמנטים, עומק -- לסגמנט יכולים להיות סגמנטים אחרים (כלומר קיימים קשרים של אב-בן כאשר הבן יכול להיות "אב" לסגמנטים אחרים), עובי -- מספר המופעים של כל סגמנט הוא בלתי מוגבל. הפיכת המודל הלוגי של ייצוג רשומה בסגמנטים למודל פיסי לייצוג הרשומה על יחידות האחסון יכולה להיעשות בכמה שיטות. מאחר והרשומה מפוצלת לחלקים, כאשר כל חלק עשוי להופיע מספר בלתי מוגבל של פעמים לא ניתן ברוב המקרים לכתוב את הרשומה ביחידת האחסון כרצף אחד של תווים. קישור הסגמנטים הדרושים בעזרת מצביעים (5ז16ח201) יידון בפרק הדן במבנה נתונים משורשרים. קיימות מערכות לניהול נתונים המשתמשות במודל ההיררכי לייצוג הנתונים, לדוגמא 21/1 של יבמ. ניתן לקשר בין הסגמנטים הדרושים גם ללא מצביעים. במקרה זה יש לחזור על מפתח הרשומה בכל אחד מהסגמנטים. בשיטה זו מקבלים כפילות מסוימת 41 של נתונים על חשבון גמישות במבנה הנתונים. נדגים זאת בעזרת הדוגמא של קובץ עובדים. נשתמש בקובץ המאפשר רשומות באורך משתנה. נקבע תחילה את המפתחות וסוג הרשומה של כל אחד מהסגמנטים: סגמנט פרטים אישיים | -- 4 -- מספר זהות; סגמנט פרטים דמוגרפיים -- 8 -- מספר זהות; סגמנט השכלה - 6 -- מספר זהות, קוד השכלה, תאריך; סגמנט קורסים -‏ -- מספר זהות, קוד קורס, תאריך קורס. מאחר וסגמנטים 6 וזכ עשויים להופיע מספר רב של פעמים בקובץ יש להוסיף למפתח הרשומה שדות נוספים אשר הו בצורה חד"משמעית כל אחד מהמופיעים. בסגמנט הקורס אפשר להוסיף את קוד הקורס ותאריך תחילת הקורס כדי לאפשר זיהוי חד-משמעי של סגמנטים השייכים לאותו קורס אשר התקיים בתאריכים שונים או סגמנטים של קורסים שונים שהתקיימו באותו תאריך. בדוגמא שלפנינו הקשר בין סגמנט השורש (פרטים אישיים) לבין כל שאר הסגמנטים מבוצע באמצעות מספר הזהות. נתון זה יחזור על עצמו בכל הסגמנטים השייכים לאותה רשומה. מאחר וניתן להשתמש בקובץ אחד ברשומות באורך משתנה, כל הרשומות יכולות להופיע פיסית באותו הקובץ כאשר כל אחת מהן באורך המיוחד לה. לכל אחת מהן יש להוסיף שדה אחד נוסף -- אורך הרשומה. בהמשך נציג את הסגמנטים כרשומות פיסיות ונשתמש במונח "רשומה" לציון יחידת נתונים בעלת קשר לוגי מבלי להתחשב בתפקידים או במשמעותם בתוך הרשומה הלוגית של הפרט באוכלוסיה. טלפון אורך מספר רשומה זהות שנת ארץ |אורך 7 ןג חספר מטפהתל עליה לידה 5 שומה / זהות סוג תאריך מספר אורך חאריך ]קור סְ תעודה סיום שניס ושומה התחלה |השכלה "7" | | ₪2 ו 4% | | "7" | | ₪2 ו | | מפתח תרשים 3-19: דוגמא לסגמנטציה בעזרת רשומות באורך משתנה שימוש במפתחות חלקיים ומפתחות משניים יאפשר שליפה של כל רשומה לפי כל חתך רצוי. דוגמא מפורטת לכך תובא בפרק הדן בארגון נתונים עם אינדקסים משניים. 2 5 אירוע -- תכנון רשומות מטרת אירוע זה להציג את האלטרנטיבות השונות העומדות בפני מתכנן הרשומות תוך הדגשת היתרונות והחסרונות של כל אחת מהן. משימה: יש לתכנן את מבנה הרשומה של מערכת לניהול ציוני בחינה של סטודנטים. על המערכת לנהל מספר פרטים אישיים לכל סטודנט ואת רשימת כל הקורסים בהם נבחן והציונים שהושגו בקורסים אלה. אפשרות א': נחשב מראש את המספר המקסימלי של בחינות שסטודנט עשוי לגשת בתקופת לימודיו ונשתמש ברשומה באורך קבוע בהתאם לכך. | בחינה בחינה פרטים אלשיים תרשיס 3-20: רשומה באורך קבוע עס מספר מקסימלי של בחינות | יתרונות: -- רשומות באורך קבוע. | חסרונות: -- בזבוז גדול של שטח האחסון מאחר ויש לשער שאצל רוב ן הסטודנטים נמצא פחות בחינות מהמקסימום האפשרי. -- רשומה ארוכה מאד. המערכת לניהול קבצים תצטרך לבנות מאגרים גדולים בזכרון ולהשתמש בשטחי אחסון גדולים ביחידות ן האחסון החיצוניות. | אפשרות ב': נחשב את המספר הממוצע של בחינות שסטודנט יכול לגשת | ונשאיר מקום בהתאם. לסטודנט הניגש למספר רב יותר של בחינות תיפתח | רשומת-המשך עם סימון מיוחד. בחינה בחינה 5 לשלר סימון וח 1 פרטים אישיים 5 תרשים 3-21: רשומה באורך קבוע עס מספר ממוצע של בחינות יתרונות: -- רשומות באורך קבוע. הרשומות קצרות יותר מאשר באפשרות א'. חסרונות: -- בזבוז בשטח האחסון מאחר ויהיו סטודנטים עם פחות בחינות | מהממוצע. עם זאת, הבזבוז יהיה קטן יותר מאשר באפשרות א'. | -- תוכניות היישום מורכבות יותר. התוכניות צריכות לטפל ברשומות המשך על כל הכרוך בכך. 3 אפשרות ג': נשתמש ברשומות באורך משתנה. לכל בחינה שהסטודנט ניגש נפתח נגררת חדשה. המספר המקסימלי של הנגררות יהיה מספר הבחינות הממוצע (ניתן גם לבנות רשומות עם נגררות כמספר הבחינות המקסימלי אבל הן תהינה ארוכות מאד). אם יש סטודנט עם יותר בחינות מהממוצע תפתח לו רשומת המשך. בחינה בחינה מונה כ כשלר וח 05 1 בחלנרת פרטים אישיים ]>-₪ |‏ [7*-- ₪ --==>] תרשים 3-22: רשומה של נגררות יתרונות: -- ניצול טוב יותר של שטח האחפסון. חסרונות: --- שימוש ברשומות באורך משתנה. -- סיבוך תוכניות היישום בגלל הצורך לטפל ברשומות המשך. אפשרות ד': יבנו שני סוגי רשומות. סוג אחד לניהול הפרטים האישיים וסוג שני לניהול הבחינות. כדי לקבל מפתח חד-משמעי יכלול המפתח של כל רשומה גם את תאריך הבחינה וקוד הקורס. שיפ [ ושי | אורך | סוג. | תאריך | קוד זהות = מפתת << תרשים 3-23: שני סוגי רשומות בקובץ אחד יתרונות: -- אין מגבלה למספר הבחינות שסטודנט יכול לגשת. -- ניצול יעיל יחסית של שטח האחסון. -- רשומות קצרות יחסית ולכן דרושים גם מאגרים קטנים. חסרונות: --- כפילות מסוימת של נתונים. שדה תעודת זהות חוזר על עצמו בשני סוגי הרשומות. -- מספר גישות רב יחסית לקבלת כל הבחינות של סטודנט מאחר והן מפוזרות ברשומות שונות. -- סיבוך מסוים בתוכניות היישום. התוכניות צריכות לטפל בשני סוגי רשומות. לביטול בחינות סטודנט למשל, התוכנית צריכה לבצע חיפוש אחר כל רשומות הסטודנט. קיימות אפשרויות נוספות המשלבות כמה מהאפשרויות שהוצגו ולמעשה אין כל בלל ומגבלה בענין זה. מנתח המערכות צריך להחליט על השיטה הטובה ביותר עבור היישום שהוא מתכנן, לשקול את היתרונות והחסרונות של השיטה בה בחר, ולבחון את האפשרויות של מערכת התוכנה לשרת בחירה זו. 4 הנחייה כללית לבחירת שיטת ארגון הרשומות היא להשתדל לבחור את השיטה הנוחה ביותר מבחינה לוגית ולא לנסות לנצל בצורה יעילה במיוחד את משאבי המחשב. זמן האחזקה הדרוש ליישום מתוחכם במיוחד יבטל כליל את כל היתרונות של ניצול טוב יותר לכאורה של משאבי המחשב. 5 6 שאלות 1. מדוע יש צורך ברשומות באורך משתנה? 2 הסבר כיצד רשומות ושדות באורך משתנה משפיעים על העיבוד. 3 קובץ המכיל 2000 רשומות באורך מקסימלי של 300 תווים, מעובד פעם בחודש. האם תכנה רשומות באורך קבוע או משתנה? האם תשובתך תשתנה אילו הקובץ הכיל 20,000 רשומות באורך מקסימלי של 1000 תווים ואורך מינימלי 100 תווים? 4. מהן לדעתך התכונות הנדרשות ממפתח הקובץ? מהם השיקולים לקביעת שדה המפתח ? 5 עליך לתכנן מערכת מידע המנהלת את רישום הביקורים של חברי קופת-חולים במרפאות. תכנן את הרשומות ואת המפתחות שיש לנהל לדעתך. ציין מספר אלטרנטיבות והצג את היתרונות והחסרונות של כל שיטה. 6 פרק רביעי שיטת ארגון סדרתי (16)100 06688/ [118ח56016) 1 מבוא 2 עדכון קובצ סדרתי 3 שיטות חיפוש בקובצ טדרתי 4 סיכוס בפרק זה נציג את שיטת הארגון הבסיסית והפשוטה מבין כל שיטות ארגון הנתונים. 7 1 מבוא שיטת הארגון הסדרתי היא שיטת ארגון הנתונים הבסיסית והפשוטה ביותר. בשיטה זו מאורגנות הרשומות בסדר פיסי הזהה לארגונן הלוגי. הרשומות מסודרות בקובץ אחת אחרי השניה בהתאם לסדר רישומן בקובץ. על מנת לְסדך את הרשומות בסדר לוגי שונה כלשהו יש למיין את הרשומות תחילה בהתאם לסדר הדרוש. הקבצים הסדרתיים ניתנים ליישום בכל אמצעי האחסון הקיימים (סרטים מגנטים ודיסקים) להבדיל מהשיטות שיוצגו בהמשך וניתנות ליישום בדיסקים בלבד. בזמן עיבוד הקובץ הסדרתי, הגישה לרשומות מתבצעת לפי סדר הופעתן בקובץ. אין אפשרות לְדְלג לפנים או לאחור וכל רשומה מעובדת בתורה. אין אפשרות להוסיף רשומות חדשות, לבטל רשומות קיימות או לעדכן רשומות קיימות. לביצוע פעולות העדכון יש להעתיק את כל הקובץ (קובץ האב) לקובץ חדש (קובץ בן) אשר יכיל את כל השינויים. כדי לבצע את העדכון, יש למיין את קובץ התנועות לפי הסדר שבו ממוין קובץ האב. העדכון מתבצע בזכרון המחשב והרשומה המעודכנת מועתקת לקובץ הבן. השימוש בקבצים בארגון סדרתי קיים במערכות אצווה. קובץ אב קובץ בן (מכיל את השינולים) תרשים 4-1: מהלך עדכון קובץ ל דרתי >59 2 עדכון קובצ סדרתי על מנת לעדכן קובץ סדרתי וממוין לפי מפתח כלשהו, יש למיין תחילה את התנועות לפי אותו מפתח על מנת שנוכל לבצע את העדכון של הקובץ במעבר אחד של התנועות. מאחר והעדכון לא משנה את רשומת האב, אין צורך במקרה של תקלה לשחזר את קובץ האב. יש להריץ פעם נוספת. את התוכנית ולבנות קובץ-בן חדש. כפי שנראה בהמשך, בשיטות הארגון האחרות העדכון משנה את קובץ האב ולכן במקרה של תקלה יש לשחזר את הקובץ תחילה, לפני שחוזרים על העדכון. 00 קרא רשומות אב בצע השוואות מפתחות תנועה > אב תנועה< אב תנועה=א ב עדכן רשומת אב העבר אב לבן כתוב רשומת בן 0 תרשיס 4-2: תרשים זרימה לעדכון קובצ ס דרתי העבר אב לבן 1 אב כתוב רשומת בן קרא רשומת אב נציג בצורה גרפית את תהליך העדכון של קובץ סדרתי. בקובץ התנועות מופיעים כל סוגי העדכון כמו פתיחת רשומות חדשות, שינוי ברשומות קיימות וביטול רשומות קיימות. בדוגמא נשתמש בקובץ מלאי וקובץ תנועות מלאי. כאשר המספר הקטלוגי ברשומה בקובץ האב שווה למספר הקטלוגי ברשומה בקובץ התנועות יש להוסיף את הכמות שברשומת התנועה לכמות שברשומת קובץ האב. סוג פתיחה פתיחה מספר מספר כמות קטלוגל כמות קטלוג? קובץ קובץ אב תנועות וב תוכנית עדכון תנועות קובץ בן שגויות * אי אפשר לעדכן פרטיס ברשומה שאינה קימת בקובץ אב תרשים 4-3: דוגמא לעדכון קובץ סדרתי בשיטת אב-בן שיטת העבודה בקובץ הסדרתי היא כזאת שאין כמעט חשיבות למספר רשומות התנועה מאחר ובכל מקרה מטפלים בכל רשומות האב, גם אם אין להן רשומות מקבילות בקובץ התנועות. חוסר רגישות השיטה למספר רשומות התנועה היא ההופכת את השיטה ליעילה כאשר יש לעבד את כל הקובץ (ביישום של משכורת, למשל) או את רובו (כאשר יש עדכון לרוב הרשומות). 1 הגדרת קובץ טדרתי בקובול 0 קובץ סדרתי מוגדר בקובול במשפט 1.0027 8. 2 אא סד 45510 11.5 -צא.1]א 7ד0ם.551 דא 550 15 א10ד124א0304 5 -צ א ]וא ט- סמא-צג וא 15 56052 אדהכ שמא 0 (9)9 16 וד ס-15וא 03 920 16 אא 03 9 10 דטוא א 03 העיבוד של הקובץ מתבצע בעזרת פקודות 85/2 של קובץ האב ופקודות ידו או לקובץ הבן. אסופצזס פאטספססאת 5 -צג ]וא דטספאז אמקס דטס-צ4ג 1וא הזת טס סא 47 115ה-צגזוא סגאפת 50 ואאסת חמק ד זא 08 סק .ס6תם-צג וא ואסאת הזס-צג. זוא פדןאש דטס-צ .זוא 5 זז-צג ]וא 601055 02 3 שיטות חיפוש בקובצ סדרתי תהליכי עיבוד הנתונים דורשים לעיתים איתור רשומה בקובץ לשם עדכון או לשם עיבוד אחר. תהליך זה יבוצע בקובץ סדרתי כאשר מספר הרשומות המבוקשות קטן מאד בהשוואה לגודל הקובץ. שיטת החיפוש הפשוטה ביותר תהיה על ידי סריקת הקובץ מתחילתו, ער לאיתור ברשומה המבוקשת (לפי מפתח או לפי זיהוי אחר). הסריקה נעשית על ידי השוואה של מפתח כל רשומה ורשומה בקובץ אל המפתח המבוקש. אם הקובץ מכיל א רשומות, יש לבצע בממוצע 2/א1 השוואות. הזמן הדרוש לקריאת רשומה הוא //% כלומר גודל הרשומה מחולק במהירות העברת הנתונים. זמן הסריקה הממוצע יהיה: זמן הסריקה המקסימלי יהיה: חיפוש לפי גושים (569101 8100%) כאשר הרשומות ממוינות לפי מפתח אין צורך לסרוק את כל הרשומות בגוש. ניתן לבצע השוואה של מפתח הרשומה האחרונה בגוש למפתח הרשומה הדרושה. אם המפתח הדרוש גדול יותר נקרא גוש נוסף ונחזור על ההשוואה. אם המפתח הדרוש קטן יותר, יש לסרוק את כל הגוש לאיתור הרשומה המבוקשת. חיפוש בינרי ([0ז568 עְז8ח21) כאשר הקובץ ממוין ונמצא על דיסק, קיימת אפשרות להשתמש בשיטת החיפוש הבינרי לאיתור הרשומה. שיטה זו מצמצמת בצורה ניכרת את מספר הגישות שיש לבצע וכתוצאה -- את זמן איתור הרשומה. החיפוש הבינרי הינו שיטת החיפוש המהירה ביותר לאיתור רשומות בקובץ סדרתי. תהליך החיפוש הבינרי הינו רצף של השוואות של מפתח רשומות למפתח המבוקש. ההשוואה הראשונה בשיטה זו מתבצעת באמצע הקובץ. אם המפתח של הרשומה האמצעית גדול מהמפתח הדרוש תתבצע ההשוואה הבאה במחצית הראשונה של הקובץ. אם המפתח של הרשומה האמצעית נמוך מהמפתח המבוקש תבוצע ההשוואה במחצית השנייה של הקובץ. בהתאם להשוואה מחליטים איזה חצי מהקובץ לחצות שוב ולהתקדם להשוואה הבאה. מאחר וכל פעם חוצים לשניים את מספר הרשומות שנותרו, מספר ההשוואות 8 שנצטרך לבצע בשיטה זו יהיה: | תק0[ = 8 = ם = 2% 3 כלומר, מספר ההשוואות הדרוש יהיה יחסי ל108 של מספר הרשומות בקובץ. אם ח אינו חזקה מלאה של 2 יש לבצע 1 + [חנ08!] השוואות כאשר [08,4ס!] היא המספר השלם הגדול העוקב. לדוגמא: אם הקובץ מכיל 10,000 רשומות יש לבצע 14 השוואות (1 + 108,10,000) לאיתור הרשומה לעומת 5,000 השוואות אשר דרושות בחיפוש ליניארי רגיל. מאחר והקובץ עצמו מאוחסן בגושים ניתן ליעל את השיטה. במקום לחצות לשנים את מספר הרשומות נחצה לשניים את מספר הגושים. בהתאם למפתח הראשון והאחרון בגוש נחליט לאיזה כיוון להמשיך את החיפוש. בצורה זו מספר הגישות לדיסק יהיה יחסי ל-נ8ס! של מספר הגושים ולא של מספר הרשומות. עבור קבצים גדולים זהו הבדל משמעותי ביותר. מאחר ובכל גוש יש %/8 רשומות הרי שבכל הקובץ יש 8/אח גושים. זמן הגישה לגוש אחד מורכב מזמן החיפוש 5, זמן ההשהיה הסיבובית ז, וזמן העברת הגוש אל הזכרון /. זמן החיפוש הכולל בקובץ סדרתי בשיטת החיפוש הבינרי ילהיה: 8 (7+ז+5) () סוד השואה שלישית ]| השוואה ראשונה ח א = רשומה ח בקובץ | השוואה שנלה תרשים 4-4: השוואות בחיפוש בינרי 4 נציג כאן את תרשים הזרימה לביצוע חיפוש בינרי לפי גושים: מפתח דרוש = לשא < +.חי%- ביהי%-א8000 קרא גוש לזכרון לא רשומה נמצאה רשומה לא נמצאת תרשים 4-5: תרשים זרימה לחיפוש בינרי 5 / | | | ו 4 סיכוס לשיטת הארגון הסדרתי יתרונות וחסרונות. יתרונות מבנה נתונים פשוט ביותר. איתור הרשומות מתבצע על-ידי קריאת הרשומה הבאה. : כאשר שיעור הפעילות גבוה, הפשטות של שיטת איתור הרשומות הופך את השיטה לכדאית. העדכון אינו הורס את תוכן רשומות האב. קל להתאושש מתקלות בארגון זה. ניתן להשתמש גם בסרטים וגם בדיסקים לאיחסון הקובץ. חסרונות 66 יש לעבד תמיד את כל הקובץ ללא קשר לשיעור הפעילות. יש למיין תחילה את רשומות התנועות לפני העדכון. עדכון הקובץ מסתיים רק לאחר עדכון הרשומה האחרונה כאשר פועלים בסרטים מגנטיים. עדכון בדיסק אפשר להפסיק ולהמשיך מחדש. אין אפשרות לגשת לרשומה באופן ישיר (בסרטים דרוש חיפוש עוקב ובדיסקים אפשרי חיפוש בינרי). פרק חמישי | אוגון אינדקס סדרתי (16)000 400655 [1184ח6טף56 א06ה1) | 5.1 מבוא 5 איחזור רשומה ו באמצעות אינדקטס 5 ארגון אינדקס סדרתי -- |א54ז 5 ארגון אינדקס סדרתי -- ]584% 5 סיכוס 5 שאלות 5 נספח -- חישוב מספר רמות אינדקט בפרק זה נציג שיטה לארגון נתונים המשלבת את התכונות הסדרתיות של ו הקובץ וגישה ישירה. 97 [8 7-2 1 מבוא בעית איחזור המידע הינה אחת הבעיות המרכזיות במערכות מידע ממוחשבות. ארגון הקבצים הסדרתי מאפשר איחזור רשומות רק לפי הסדר הפיסי שלהן בקובץ ולא לפי מפתח לוגי של הרשומה. פיתוח יחידות איחסון המאפשרות | | גישה ישירה הביא לפיתוח מקביל של שיטות ארגון נתונים המסתמכות על | = הגישה הישירה ומאפשרות איחזור רשומות באופן יעיל. כל השיטות לאיחזור | | נתונים על סמך מפתח לוגי מופעלות רק ביחידות איחסון אלה. קיימות מספר שיטות לאיחזור רשומות לפי מפתח. בפרק זה נסקור את השיטות השונות המשתמשות באינדקסים. 2 איחזור רשומה פאמצעות אינדקס האינדקס הינו טבלה בעזרתה מתבצע תהליך תרגום בין המפתח של הרשומה לבין כתובתה ביחידת האחסון. האינדקס הוא אמצעי המאפשר גישה מהירה לרשומה בקובץ מבלי שיהיה צורך בסריקת כל הקובץ. המפתח של הרשומה יכול להיות שדה כלשהו ברשומה המזהה את הרשומה ומאפשר את איחזורה. האינדקס ממוין לפי המפתח. כתובת | מפתת נתונים אינדקס תרשים 5-1: תרגוס מפתח לכתובת בעזרת אינדקס דוגמא לאיחזור רשומת מלאי לפי מפתח: ן א 0ד '"'2845[* פצסא צספא פנז1גצאז ם'זזת-צה ]וא סגפת | ייסאזסת דסא כתסס6מאיי צג 1עקפזס | .סאעס=-דסא סד 00 99 התוכנית מעבירה את תוכן המפתח של הרשומה המבוקשת לשדה המפתח. המערכת לניהול קבצים מבצעת את סריקת האינדקסים לאיתור כתובת הרשומה ולאחר מכן מאתרת את הרשומה בקובץ. כאשר פעולת הקריאה (א5) אינה מצליחה לאתר את הרשומה (צ₪ א 41.12 /א1) היא מודיעה על כך. קיימים שני סוגי אינדקסים: אינדקס ממצה ואינדקס סלקטיבי. אינדקס ממצה (א86ח1 5116ט8 חא ) אינדקס ממצה מכיל רשומת אינדקס אחת עבור כל רשומת נתונים. לדוגמא נשתמש בקובץ נתונים הנמצא בדיסק ואיננו ממוין לפי מפתח. על מנת לגשת לרשומות בקובץ בצורה מהירה נבנה אינדקס הממוין לפי השדה הדרוש, רשומת האינדקס תכיל את ערך המפתח ואת כתובת הרשומה בדיסק. לאיתור רשומה נסרוק את האינדקס (מאחר והוא ממוין נוכל לסרוק אותו בשיטה בינרית). רשומת האינדקס המכילה את המפתח המבוקש מכילה גם את הכתובת הפיסית של הרשומה בדיסק. קריאת הרשומה תבוצע בגישה ישירה. מקובל להשתמש באינדקס ממצה כאשר המפתח הדרוש אינו מפתח הסדר. נראה שימוש בסוג זה של אינדקסים בפרק הדן באינדקסים משניים. כתובת מפתח נתונים אינדקס תרשיס 5-2: אינדקס ממצה כאשר מספר הרשומות בקובץ הוא גדול, גם מספר רשומות האינדקס יהיה גדול. על מנת ליעל את תהליך החיפוש ניתן לבנות מספר רמות נוספות של אינדקס. 100 תהליך החיפוש אחר רשומה יבוצע בצורה הבאה: בכל אחת מרמות האינדקס יש לסרוק את הרשומות עד לאיתור מפתח הגדול מהמפתח הדרוש. יש לגשת לרמה הבאה באינדקס בהתאם למצביע של רשומת האינדקס הקודמת, אינדקס רביעי 4 0 ת אינדקס שנל כ = אינדקס ראשל / |=--- וניה ]7-7 אונדקטיה ------->] תרשים 5-3: אינדקס ממצה עם מספר רמות לדוגמא נחפש רשומה עם מפתח 700. תהליך החיפוש יהיה: -- חיפוש ברמת אינדקס ,1. האינדקס הזה מצביע על אינדקס ,1. -- חיפוש באינדקס ,1. המפתח 900 גדול מ-700 ולכן נשתמש במצביע המופיע ברשומה הקודמת המפנה אותנו לקטע מתוך האינדקס ,1. -- חיפוש סדרתי באינדקס ,1 החל מרשומת אינדקס עם מפתח 600. לאחר השוואה אחת מגיעים לרשומה עם מפתח 700. ברשומה זו יש מצביע לרשומת הנתונים. השיפור בזמן החיפוש נובע מכך שבשיטה זו דרושות 6 השוואות לעומת 12 הדרושות לאיתור הרשומה עם אינדקט ממצה ברמה אחת בלבד. נציין שהשיפור הוא על חשבון מקום איחסון נוסף הדרוש לאינדקטים הנוספים וצריכת יע"מ גבוהה יותר לניהולם. אינדקס סלקטיבי (א66ח1 6ש:561601) אינדקס סלקטיבי מכיל רשומת אינדקס אחת עבור קבוצת רשומות נתונים. בדרך כלל האינדקס מכיל רשומת אינדקס אחת עבור כל גוש. בשיטה זאת יש 11 למיין תחילה את הרשומות בקובץ. האינדקס מכיל את המפתח של הרשומה בעלת הערך הגבוה ביותר (או הנמוך ביותר) הדרוש לאיתור הרשומה בגוש. תונן מפתח גוש ן כתובת מפתח גוש 2 אינדקס גוש 3 נתונים תרשים 5-4: מבנה אינדקס סלקטיבי איתור רשומה בקובץ יתבצע בצורה הבאה: -- קריאת רשומות אינדקס עד אשר המפתח באינדקס גדול או שווה למפתח הרשומה הדרושה. -- גישה לגוש אשר כתובתו מופיעה ברשומת האינדקס וקריאתו לזכרון. -- חיפוש סדרתי בתוך הגוש עד לאיתור הרשומה הדרושה. אם הרשומה איננה בגוש, יש להודיע לתוכנית שהרשומה אינה נמצאת בקובץ. בדוגמא פשוטה זו יש לבצע שתי גישות לדיסק עבור כל פעולת איתור: אחת לקריאת האינדקס ואחת לקריאת גוש נתונים. החיפוש בתוך הגוש נעשה בזכרון ואינו כרוך בפעולת קריאה פיסית. מאחר והנתונים עצמם ממוינים לפי מפתח החיפוש נהוג לקרוא לשעל זו ארגון אינדקס סדרתי. ניתן להשתמש באינדקס הסלקטיבי גם בצורה נוספת. במקום לבנות רשומת אינדקס אחת עבור כל גוש של נתונים נבנה רשומת אינדקס אחת המכילה חלוקה כלשהי של הנתונים אשר אינה חייבת להיות החלוקה הפיסית של הנתונים (בגושים למשל) כפי שראינו קודם. אם המפתח 2 שני חלקים למשל, אות וסיפרה, ואם קובץ הנתונים ממוין, נוכל לבנות אינדקס המכיל רשומה אחת עבור כל אות המתחילה את המפתח. בתרשים 5-5 רשומת האינדקס מצביעה על הרשומה הראשונה המתחילה באות המתאימה. לדוגמא, רשומת האינדקס המכילה את האות 8 מצביעה על הרשומה הראשונה שהמפתח שלה מתחיל באות 8. ברגע שמגיעים לרשומת הנתונים מתחיל תהליך של חיפוש אחר הרשומה הדרושה. לשיטה זו של בנית אינדקס מקובל לקרוא אסח1 |4פוכ] מאחר ובונים את האינדקס ומטפלים במפתחות והלקוהם בצורה עשרונית. אם לקובץ יש 6 חלוקות מטלה. מספר החיפושים וח שיש לבצע יהיה בקירוב: ‏ .1..1.+ ן = 2 6 12 מספר הגישות הכולל הוא סכום גישה אחת לאינדקס ועוד כמחצית הרשומות המתאימות לחלוקה מסוימת. לדוגמא, אם בקובץ יש 100,000 רשומות המחולקות ל-20 מחלקות שונות באופן אחיד מספר הגישות הממוצע לאיתור רשומה יהיה: 100 ,/ 1 = שר קפ 1 = ות אם החיפוש של הרשומה היה מתבצע באופן סידרתי רגיל צריך היה לבצע 0 השוואות בממוצע. דוגמא: כתובת מפתה התחלה חלקי(לקבוצה) אינדקס 2 נתונים תרשים 5-5: אינדקס לפי האות הראשונה של המפתח נחשב את גודל הגוש האופטימלי עבור רמת אינדקס אחת בלבד. אם הקובץ מכיל ח רשומות וגודל הגוש 8, מספר רשומות האינדקס יהיה 8/ת= . מספר החיפושים הכולל שיש לבצע בממוצע הוא כמחצית מספר רשומות האינדקס וכמחצית הרשומות בגוש הנתונים. : 8 ת 1 -4+-י--ש מספר חיפושים 2 ל 5 ( ( 13 נגזור את הביטוי לשם מציאת מספר הרשומות בגוש הנתונים האופטימלי: 1 ב 5 ור ת = ?8 תצ > 8 תרשיס 5-6: חישוב גודל גוש אופטימלי המסקנה היא שמספר החיפושים יהיה מינימלי כאשר הגוש יכיל ח / רשומות, כלומר כאשר מספר הרשומות בגוש יהיה שורש רבועי של מספר הרשומות בקובץ הנתונים. אם מספר רשומות האינדקס גדול כתוצאה ממספר רב של רשומות נתונים, ניתן לבנות מספר רמות אינדקס (א66ח1 [1.646 16קוז!ט)/א). לדוגמא נציג תהליך איתור רשומה בקובץ עם שתי רמות אינדקס. נניח שמחפשים רשומה עם מפתח לוגי 722: -- קרא גוש מאינדקס רמה עליונה לזכרון (גוש ,1). -- חפש בגוש עד למציאת מפתח ראשון הגדול ממפתח החיפוש. התוצאה היא מפתח 970. רשומה זו מצביעה על גוש אינדקס ;1. -- קרא גוש אינדקס ,1 לזכרון. -- חפש בגוש עד למציאת מפתח ראשון הגדול ממפתח החיפוש. התוצאה היא מפתח 800. רשומה זו מצביעה על גוש נתונים.,.8. -- קרא גוש נתונים ,8 לזכרון. -- חפש בגוש עד למציאת רשומה עם המפתח הדרוש. אם נמצא -- העבר את הרשומה לעיבוד. אם לא -- יש להודיע לתוכנית שהרשומה לא נמצאה. 14 2 2 צְ וד 3 44 5 ץְ ן 92 . רמה2----4] -רמה ו 6 | אינדקסים ו תרשים 5-7: אינדקס סלקטיבי במספר רמות למספר רמות האינדקס חשיבות רבה בקביעת זמן הגישה לרשומה בקובץ אינדקס סדרתי. מספר הגישות הוא יחסי למספר רמות האינדקס. לדוגמא, עבור שלש רמות אינדקס יש לבצע שלש גישות לדיסק, שתי גישות לאינדקס וגישה אחת לגוש הנתונים. לשם יעול תהליך החיפוש מחזיקים בזכרון את האינדקס ברמה העליונה, מאחר והוא קטן יחסית. ההעברה לזכרון המחשב נעשית על ידי התוכנה לניהול קבצים לאחר פתיחת הקובץ. גודל הגוש האופטימלי, כאשר יש .1 רמות אינדקס וכאשר ח הוא מספר הרשומות ]8% בנספח לפרק זה ניתנת השיטה לחישוב מספר רמות האינדקס כאשר נתון: מספר הרשומות בקובץ (ח), גודל הגוש (8), גודל הרשומה (), גודל המפתח () וגודל הכתובת של הגוש (): בקובץ: בככל שגודל הגוש של האינדקס גדול יותר, מספר רמות האינדקס קטן. 15 נשתמש בדוגמא : נתון קובץ עם 100 מיליון רשומות. גודל הגוש הוא 5000 תווים. אורך המפתח של הרשומה 44 תווים. אורך הכתובת 6 בתים. אורך הרשומה 500 תווים. מספר רמות האינדקס הדרושות: 9 0% ₪ יש ור 70 000 5 0 אינדקס תואם חומרה (א66ח1 27160160) 816/ו11810) קיימת אפשרות לתכנן את האינדקס תוך התבססות על מבנה החומרה, כלומר מבנה הדיסק המכיל את הקובץ. לאינדקס זה יהיו שתי רמות -- רמת הגליל ורמת המסילה. -- אינדקס הגלילים (א06ח1 ז06ח:61) אשר מכיל את המפתח הגבוה ביותר של רשומה הנמצאת באותו גליל, ואת הכתובת הפיסית של הגליל. -- אינדקס המסילות (א66ח1 1780%) נמצא במסלול הראשון של כל גליל וכולל את אינדקס המסילות של אותו גליל בלבד. עבור כל מסילה השייכת לגליל תהיה "כניסה" באינדקס אשר תכיל את המפתח הגבוה ביותר של | רשומה באותה מסילה ואת הכתובת הפיסית שלה. אינדקס גלילים תרשים 5-8: אינדקס תואס חומרה גליל בדרך כלל אינדקס כזה נוטה להיות בעל פחות רמות אינדקס מאשר אינדקס תואם תוכנה (א66ת] 160ח276)-8:6/וו]50). הבעיה היא שהשיטה פחות גמישה ותלויה בסוג הדיסק עליו מאוחסן הקובץ. העברת הקובץ לדיסק בעל מבנה אחר תגרום לשינוי האינדקסים השונים. על מנת ליעל את החיפוש באינדקס הגלילים ניתן להוסיף רמה נוספת של אינדקס, אינדקס ראשי (א66ח1 זט)8%/) המכיל את המפתח הגבוה ביותר הנמצא בקבוצת גלילים. מאחר ואינדקס הגלילים עצמו יכול להיות גדול הוא ירשם במספר גושים פיסיים. האינדקס הראשי יכול במקרה זה להצביע על 16 הרשומה הגבוהה ביותר בכל גוש של אינדקס הגלילים כדי שאפשר יהיה לגשת באופן ישיר לגוש המכיל את הפרטים המבוקשים. דוגמא לאינדקס תואם חומרה מופיע בתרשים 5-9. אינדקס ראשי מסדפגוא אפסאו אינדקס גלילים אפסאו מפסאווצס אינדקס מסילות אפסאו אסהאד בגליל ח 100 10 0 אינדקס מסילות | אפסאו החד בגליל 1+ח 1600 | 0 | 160 | 1650 | 166 | 00 תרשים 5-9: דוגמא לאינדקס תואס חומרה מיקום אינדקס הגלילים נבחן עתה את המקום שרצוי לבחור בו לשמירת אינדקס הגלילים. בדרך כלל האינדקס הראשי מוחזק באופן קבוע בזכרון ולכן מיקומו על פני הדיסק חסר חשיבות מאחר וניגשים אליו רק פעם אחת. המיקום של אינדקס הגלילים הוא חשוב מאחר וכל גישה לקובץ עוברת דרכו. לאחר שמתבצע חיפוש בחוך אינדקס הגלילים יש להזיז את הזרוע לפנים או לאחור כדי להגיע לגליל הרצוי לשם חיפוש באינדקס המסילות. אם יודעים את ההסתברות |? לגשת לנתון הנמצא בגליל | המקום האופטימלי של אינדקט הגלילים יהיה בגליל של מרכז הכובד של ההתפלגות. 17 כלומר, השטח שמשמאל ל-%0 שווה לשטח שמימין ל-,%. אם נמקם את אינדקס הגלילים בגליל %0, אורך הדרך שצריך יהיה לעשות בממוצע עד לגליל המתאים תהיה מינימלית. בדרך כלל בתחילת השימוש בקובץ ההסתברויות אינן ידועות, ולכן מקובל למקם את האינדקס בגליל האמצעי של הקובץ. במשך פעילות הקובץ ניתן לוב אחר האט ו הגישות ולשפר את הביצועים על-ידי הזזת מיקום האינדקס. גליל % המכיל את אינדקס הגלילים מרכז הכובד תרשים 5-10: מיקוס אינדקס הגליליס בדיסק |08 וצצ קדו והאי 3 ארגון אינדקס סדרתי (ת128110ת2758) 5600091 66א66מ1 -- 1 4 15) 0 מטרת שיטת הארגון האינדקס סדרתי היא לאפשר גישה סדרתית לקובץ ביעילות גבוהה וגישה מהירה לחלק מהרשומות בעזרת אוסף אינדקסים. השיטה מאפשרת הוספה, עדכון, ביטול רשומות מבלי שיהיה צורך בהעתקת הקובץ כמו בשיטה הסדרתית. בשיטת ארגון זו מוחזקות הרשומות בסדר לוגי שאינו זהה בהכרח לסדר הפיסי שלהן בדיסק. מבנה קובץ אינדקס סדרתי הקובץ מורכב משלשה שטחים שונים: -- איזור הנתונים שבו מאוחסנות הרשומות בצורה ממוינת, -- איזור אינדקסים שבו מאוחסנות רשומות האינדקס, -- איזור גלישה שבו מאוחסנות רשומות שאין להן מקום באיזור הנתונים אף-על-פי שהן שייכות לו בהתאם לסדר המיון שלהן. - גלישה -->]-*- נתונים -->-]------- אינדקסים ----->] תרשים 5-11: מבנה קובץ אינדקס סדרתי 109 110 איזור הנתונים מכיל את הרשומות בסדר עוקב בהתאם למפתח הרשומה. בזמן בניית הקובץ, נטענות כל הרשומות על ידי מערכת התוכנה לניהול קבצים בסדר עוקב והיא בונה גם את האינדקסים השונים תוך כדי תהליך הטעינה. לאחר בנית הקובץ, אין כל רשומה באיזור הגלישה. רשומות "גולשות" לאיזור זה במהלך עדכון הקובץ, כפי שנראה בהמשך. לבנית הקובץ משתמשת המערכת לניהול קבצים במספר נתונים כגון: אורך הרשומה, אורך המפתח ומיקומו ברשומה, מבנה הרשומה (קבוע או משתנה), גודל הגוש ועוד.לרוב מערכות התוכנה יש תוכנית שירות (ע12111:8) מיוחדת בעזרתה ניתן לבנות קובץ 15/1 מתוך קובץ סדרתי. שמ 9 תוכנית שירות פרמטרלם תרשים 5-12: בנית קוב 1אא5! בעזרת תוכנית שירות בתוך תוכנית קובול משתמשים במשפט 551.56 להגדרת קובץ אינדקס סדרתי ולהגדרת המפתח של הרשומה. אא 10 א45510 15]ת-צ ]וא 551507 ספאפפאז 5 אסזד24]אג סהס ;ו 85] צםא 50080 וצ וא סץ ספדדוואס 15 500 .1.4851 6מא-צג וא 15 5605 דגס 0 צהא |0 .אא 16 0 03 (9)9 ₪16 1-ו 03 9 10 אא 03 9 16 דטוא גא 03 קובץ סדרת? שיטות פניה לקובץ אינדקס סדרתי קיימות שלש שיטות פניה שונות לקובץ אינדקס סדרתי: -- סדרתית ([118ת5600₪6) -- אקראית (ות00ח88) -- דינמית (6וחזהתץכ) פניה סדרתית מאפשרת את קריאת הקובץ מתחילתו ועד סופו בדומה לקובץ סדרתי רגיל. המערכת לניהול קבצים פונה רק לגושים של הנתונים ולא פונה אל האינדקסים, מאחר וכל גושי הנתונים משורשרים ביניהם. המשתמש מודיע למערכת במשפט 551.207 על כך שברצונו לפנות לקובץ באופן סדרתי ולא לפי אינדקסים. אא סד א45510 115ת-צ ג 1]א 551.07 ספאפפצז 15 א10ד124אג אס א 15 צסא סא סספת הצהרת שיטת | .55007141 15 כ 0וא 406555 הפניה הסדרתית בתוך התוכנית הקריאה היא רציפה כמו בקובץ סדרתי כלשהו והמשתמש מקבל את הרשומות בסדר לוגי עוקב. בסיום הקובץ עוברת וזתוכנית לקטע 07 .,אסזפזצזכ פאַספ5סְסאע2 .שןזז-צג ]וא דנסקא] אפקס כאם ד4 115ע-צג זוא פגפת .50 אא0ת סק .ץצ ]וא 61055 11 וממ הווח פניה אקראית מאפשרת גישה מהירה לרשומה כלשהי בתוך הקובץ. על המשתמש להגדיר את המפתח הדרוש ומערכת ניהול הקבצים מבצעת את הסריקות באינדקסים לאיתור הרשומה. יש לציין במשפט 1-)551.5 שהפנייה לקובץ היא אקראית. אא סד א48510 11.5-צג.1וא 551007 ספאפפא 15 אסזד24]א4 סא 1 15 צסא 50080 הצהרת פנייה אקראית לקובץ ‏ .]אסכ אגא 18 פס סא 4005585 .אסז15צזס פאשכפ6סאע ש1ז-צג !וא ס-1 אמפס 1 סך ''12347* פצסוא קריאת הרשומה צםא סנגא צאו פ1זןת-צג וא כ גפ סאטסט-דסא סד 00 עדכון ידואא א-אטאכן ואאסת תסק כתיבת הרשומה במקומה צתא 4110 צאן 6םא-צ/1וא מ דותשפת לאחר העדכון .1 ]את סק יצ א 61055 בדוגמא זו התוכנית פונה בגישה ישירה לרשומה כלשהי, מבצעת בה עדכון של כמות המלאי וכותבת אותה חזרה אל הקובץ באותו מקום. אם הרשומה לא נמצאת בקובץ מקבלת התוכנית הודעה על כך מהמערכת לניהול קבצים ופונה לקטע כ אא(001=-01אז. אם יש תקלה בעת כתיבת הרשומה המעודכנת עוברת התוכנית לקטע .41 ]א 8 810 4. 112 במערכות לניהול קבצים של יבמ על מנת לגשת לרשומה בצורה אקראית יש להגדיר שדה בשטח העבודה ולהעביר אליו את המפתח של הרשומה המבוקשת. שדה זה משמש כארגומנט החיפוש. ץג ז]א-כ-15-3310 סד 45510 1.5 -צג זוא 551.67 ספאפפא 15 א24110זא אס 1 185 צטא כ6080פת הצהרת שימוש בשדה צטא-אסא 15 צםא 1גאזאסא מפתח נוסף לגישה אקראית = = = 6 -צג וא פ; כפג סאד 008 51 1 אצ א 15 5605 דכ .סמא-צג ]זוא |[0 .א 16 סד וטס 03 | (909 16 0-ו 03 | == 88 ן ,אסזז556 408 6-5108אןאא סע הגדרת שדה ארגומגט החיפוש .(9)9 10ק צםא-]ואסא 77 .א0סז8]צזס פא כםססא2 .מ1זק-צג וא 1-0 אמקס העברת המפתח לשדה צשא-]אסא 10 "123476* מצסוא קריאה לפי מפתת צםא פנזנג צא 5 11ת-צג.1וא כ54א .סאנזסת-דסא סד 00 .ץצ א 1055 3 פניה דינמית מאפשרת שימוש בפניה אקראית וסדרתית באותה תוכנית. צורת פניה זו שימושית מאד כאשר יש לגשת לרשומה מסוימת בקובץ ולהתחיל לקרוא אותו באופן סדרתי מנקודה זו. בצורה זו ניתן לחסוך את הסריקה הסדרתית של הקובץ עד לרשומת ההתחלה. בהוראת 5851.00-1 יש להכריז על שיטת העיבוד של הקובץ. בדוגמא זו מתבצעת גישה לרשומה עם מפתח נתון וקריאה סדרתית של כל הקובץ מנקודה זו. אא 10 א5510 115 - צג ]וא 51.07 ספאפפא 15 א10ד24זאג 0סס 1 אא 85 צםא כפאססטת הצהרה של שיטת הפנייה | .110א ג אצק 15 5ססוא 40606595 לקובץ .אסזפצזק פאטכפססאע . -צ וא דנז א] אמפס 1 10 "98765י* מץס!א קריאה של רשומה צםא פ11אצאז ם11ז-צה ]וא כ גשה לפי מפתח .סאע0סת-דסא סד 00 קריאה רצופה סאם 47 115-צג וא כאפת של רשומות .505 |ואאסת סק .צ וא 01055 שימוש במפתח חלקי האינדקסים הממוינים לפי מפתח מאפשרים איתור רשומות בקובץ לפי מפתח חלקי בלבד (ע%6 66ח00) או 6 זסן9]א). המפתח החלקי חייב להיות החלק ה"מוביל" של המפתח. בדוגמה של מפתח המורכב מהאותיות 862 יכול המפתח להיות , 4.8 או 80 4. הצירוף 86 לא יכול להיות מפתח חיפוש לאיתור רשומה. השימוש במפתח חלקי מאפשר גמישות רבה בתכנון הגישות לקובץ. נניח שיש לנו קובץ פרויקטים לפי מחלקות. המפתח בנוי ממספר מחלקה ומספר פרויקט. כדי לקבל את רשימת כל הפרויקטים המנוהלים במחלקה מסוימת נוכל לאתר בקובץ את מספר המחלקה בלבד ואחר כך להתחיל לקרוא באופן סדרתי את כל הרשומות. פעולת האיתור לפי מפתח חלקי אינה מעבירה את הרשומה לשטח הרשומה ולכן יש לבצע מיד אחר כך פעולת קריאה. 114 0 אתר רשומה ראשונה לפי מפתח חלק? אין מחלקה כזאת עבד רשומה תרשיס 5-13: תרשים זרימה לשימוש במפתח חלקי צצ'סך א 15 ד את 551007 סמאפסא 15 אסוד124א4 6אס שדה המפתת ץצםשא-ם זזה 5 צםא כא0סספא הצהרת שיטת הגישה ואג אצ 15 5ססוא 40205585 שןןם-דסםסתץ סת ספדדוואס 15 ת605פא 1851 ךס 18 5608 דגס סמם-ךםנסתק |[0 מפתח הרשומה מורכב משני חלקים: צםא-ם זז 03 מחלקה .9 סז [אפאדתקפס 05 מספר הפרויקט .(965 סז אעא-זסא? 05 (30) א 10 דם-ד0160אץ 03 .אסזפזצוסם פאטסש6סאץ .0 דט א] אמק 15 דאםדתתקפכ 0ד82 פצסוא איתור רשומה צם א- 11 5פם.ז דסא צם > ם,זזק. ד50 0 ד ד ראשונה .פאעסת-01א0ד 00 צפא פנזזג צאז קריאת רשומה צפא פז1 צא] פ11-ד0ט[!0ת פגסת ראשונה ..41 אא [אהסתפק .1009 קד א 0 א סק קריאה סדרתית של הקובץ סאפ ד4 01501-115א2 סגאפם עד סופו אא אטק בדיקת תנאי 2 = דאם]אדת קפסכ קז 7 ניהול מיקום הרשומה בקובץ בקובץ הנמצא בדיסק ניתן לבצע גישה סדרתית וגישה ישירה באחת מהשיטות שהוזכרו. על מנת לאפשר ביצוע פקודות קריאה סדרתיות לאחר ביצוע פקודות קריאה אקראיות פועלת המערכת באמצעות מציין מקום (ז6)הו0ק 6006 -- 62) המכיל את כתובת הרשומה הבאה אחרי הרשומה שכבר נקראה. רשומה זו תוצג למשתמש אשר מתחיל בקריאה סדרתית. למציין-מקום אין כל משמעות בעיבוד אקראי. תוכנו נקבע עייי פקודות א00₪, 01 ./51, ₪542 בלבד, ושאר הפקודות אינן משנות את תוכנו. לדוגמא נניח שהקובץ מכיל 0 רשומות עם מפתחות מ-1 ועד 30. הפקודה בתוכנית תוכן מציין-מקום הערות וי 0 ו ב --₪ְ7ְ77-7-- ... דטקאן 05% רשומה ראשונה בקובץ "העבר 10 למפתח'י 10 5737 סגמפת 1 הרשומה העשירית מועברת לתוכנית דאפא כפגאפת 12 הרשומה האחד-עשרה מועברת לתוכנית שדאצ 12 "העבר 28 למפתחיי ְ 5 28 סשאפת 29 רשומה 28 מועברת לתוכנית דאטא סאפ סוף קובץ רשומה 29 מועברת לתוכנית דאפא 5545 התוכנית ב-סאא-ד4 116 אחזקת קובץ אינדקס סדרתי עד עתה ראינו כיצד בנית האינדקס מאפשרת גישה מהירה לרשומות בקובץ מבלי לאבד את היתרונות שבאפשרות עבודה סדרתית. עתה נסביר כיצד מבוצעת אחזקת הקובץ, כלומר הטיפול בהוספות, שינויים. וביטולים של רשומות. בעיות אחזקת הקובץ מתעוררות בגלל הצורך לשמור על התכונה הסדרתית של הקובץ גם לאחר ביצוע עדכונים. הוספת רשומה חדשה למשל, צריכה להתבצע בגוש מסוים במקומה הסידורי כדי שהקובץ ישאר ממוין. הבעיה היא שלא תמיד יש מקום בגוש להוספת הרשומה החדשה. בהמשך נציג שתי שיטות עיקריות לאחזקת קובץ אינדקס סדרתי: -- שטתי גלישה, -- פיצול דינמי של גושים. שטח גלישת (4768 ש0חז6טכ0)) 7 בשיטה זו בונים שטחי גלישה מיוחדים לרשומות שאין להן מקום בגוש ומשתמשים במצביעים כדי לשמור על הסדר הלוגי של הקובץ. כדי להוסיף רשומה חדשה מאתרים את המקום בגוש שבו הרשומה צריכה להיות מאוחסנת בהתאם למפתח שלה. מאחר והגוש מלא ברשומות, יש לפנות מקום לכתיבת הרשומה החדשה. פינוי המקום מתבצע על"ידי הזזת כל הרשומות עם מפתת גדול מהמפתח של הרשומה החדשה במקום אחד. ההזזה גורמת ל'"גלישה" של הרשומה האחרונה בגוש. רשומה זו מועברת לשטח אחסון אחר אשר נקרא שטח גלישה. לפני העדכון | סלו 11 10 120 |=-[| 9 | רשומה חדשה לאחר העדכון 170 | רשומה גולשת תרשים 5-14: דוגמא לגלישת רשומה מגוש הנתוניס המשתמש אינו מרגיש בגלישה והמערכת לניהול קבצים אינה מודיעה לו שישנה גלישה. המערכת מטפלת בגלישות באופן עצמאי ונושא זה "שקוף" לחלוטין מבחינת המשתמש. קיימות מספר שיטות לניהול שטחי גלישה: -- גלישה במסגרת המסילה, -- גלישה במסגרת הגליל, -- שטח גלישה בלתי תלוי במסילה או בגליל, -- שיטה משולבת. 17 גלישה במסגרת המסילה: בשיטה זו מגדירים בכל מסילה גוש נוסף אחד או יותר ומשאירים אותם ריקים בזמן טעינת הקובץ. רשומה שגולשת מאחד הגושים במסילה מועברת אל שטח הגלישה באותה המסילה. שיטה זו אינה גמישה מאחר והיא מאפשרת מספר מצומצם יחסית יש רשומות גולשות ולכן גידול הקובץ מוגבל למדי. אם ידוע מראש שמספר הרשומות החדשות הינו קטן יחסית ניתן להשתמש בשיטה זו. חסרון נוסף הוא בכך שהגלישה אינה מתפלגת באופן אחיד על פני הקובץ ולכן יתכנו מסילות שבהן ינוצל כל שטח הגלישה, או אף יחסר שטח גלישה, בעוד שבמסילות אחרות לא תהיה גלישה כלל. גלישה במסגרת הגליל: בכל גליל מגדירים מסילה אחת או יותר למטרת גלישה ומשאירים אותן ריקות בזמן טעינת הקובץ. רשומה גולשת מועברת אל מסילת הגלישה (1786% 6-80₪ע02)). תרשים 5-15: מסילות גלישה כדי לפנות לרשומה הנמצאת במסלול גלישה אין צורך לבצע הזזת זרוע. הגדרת מספר גדול מדי של מסלולי גלישה יכולה לְגרום לבזבוז רב של מקום איחסון. כמו"כן, הבעיה היא שפיזור הרשומות הגולשות אינו אחיד, כלומר קיימים גלילים בהם יש מספר מועט של רשומות גולשות בעוד שגלילים אחרים איז מקום לרשומות גולשות מפאת פיזור בלתי אחיד שלהן על פני הקובץ. שטח גלישה בלתי תלוי (168 שס1ז6ש2) 1ת066ת6ק06ם1): בשיטה זו שה פיה 04 בקי לא ל מגדירים שטח גלישה אחד משותף לכל הקובץ. אין חשיבות מאיזה גוש או מסילה מגיעה הרשומה הגולשת. הבעיה בשיטה זו היא שגישה לרשומה / -ל---- גליל 1 גליל 2 גללשה// /=-- = / / : | גליל 3 תרשים 5-16: שטח גלישה משותף שטח 158 גולשת מחיבת הזזת זרוע ולכן הביצועים שלה גרועים יותר כאשר יש מספר רב של גלישות. לעומת זאת, שיטה זו גמישה יותר, מאחר ואינה תלויה בפיזור הרשומות הגולשות לפי הצילינדרים או הגושים. מאחר וכל הרשומות גולשות לשטח משותף יש לדאוג ששטח זה יהיה מספיק גדול לקליטת כל הרשומות הללו. שיטה משולבת (סז6ש2) 66ח01וח60): שיטה זו מהווה שילוב בין שתי שיטות קודמות, הגלישה בגליל ושטח גלישה בלתי תלוי. מגדירים מסלול אחד או יותר לגלישה במסגרת הגליל כדי למנוע הזזות תכופות של הזרוע. כאשר אין יותר מקום בגליל מסוים, מועברות הרשומות הגולשות לשטח גלישה משותף. תרשים 5-17: גלישה בשיטה משולבת שרשור רשומות גולשות בקובץ אינדקס סדרתי | מבחינה לוגית הקוב חייב להמשיך להיות ממוין לפי המפתח גם כאשר יש בו מצב של גלישה. כדי לקיים זאת יש צורך לשרשר את הרשומות הגולשות בצורה שתאפשר לסרוק את. הקובץ בסדר עוקב. השרשור מתבצע על-ידי שימוש במצביעים הקושרים רשומה אל הרשומה הבאה מבחינה לוגית. דוגמא לשרשור רשומות בשטח גלישה משותף ניתן בתרשים 5-18. 1 -- אינדקס כ -- שטח הנתונים 0 -- שטח גלישה משותף תרשים 5-18/1 מציג את מצב הקובץ לאחר טעינתו הראשונית. תרשים 2 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 45. נשים לב לכך שבאינדקס לא חל שינוי מאחר והרשומה בעלת המפתח הגדול ביותר היא עדיין 0. מגוש ,2 נוצר מצביע לגוש הגלישה ,2) המציין קיום רשומה גולשת. תרשים 3 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 10. המצביע לגלישה בגוש ,₪ מורה עכשיו על הרשומה השניה בשטח הגלישה מאחר וכל הרשומות השיכות לגוש צריכות להיות ממוינות. הרשומה עם מפתח 45 הנמצאת בשטח הגלישה מצביעה על הרשומה עם מפתח 80, שהיא האחרונה בשרשרת של גוש ,2, תֶרשים 5-18/4 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 480. לרשומה זו המפתח הגדול ביותר בגוש ;₪ ולכן מתבצע 1:9 כ 4 שינוי מתאים גם באינדקס. הרשומה עם מפתח 47 מתווספת בשטח הגלישה ומקושרת אל הרשומות 45 ו807 שבשטח זה -- תרשים 5-18/5. 1 מצב הקובץ בתחילת העיבוד: נתונים שטח גלישה ₪ | גוש | אינדקס 9 5 - 2. לאחר הוספת רשומה עם מפתח 45: נתונים 3 לאחר הוספת רשומה עם מפתח 10: נתונים אינדקס 4 | לאחר הוספת רשומה עם מפתח 480: נתונים אינדקס 5. לאחר הוספת רשומה עם מפתח 47: נתונים אינדקס מביע ‏ מפהה] | | | 5 תרשים 5-18: שרשור רשומות בשטח גלישה משותף 120 שיטה זו לניהול גלישות מיושמת במערכות יבמ בשיטת ]א ./15. בשיטת 15/1 האינדקס מכיל שני סוגי מצביעים בכל רשומה: מצביע רגיל ([4וחזסצ1) -- מכיל את המפתח והכתובת לרשומה הגבוהה ביותר הנמצאת באותה מסילה. מצביע גלישה (6:10₪ש2)) -- מכיל את המפתח והכתובת לרשומה הגבוהה ביותר השייכת לאותהמסילה אך נמצאת בשטח גלישה. בנוסף קיים מצביע למקום הפנוי הבא בשטח הגלישה. בזמן טעינת הקובץ שני המצביעים זהים, מאחר ואין גלישה לאף גוש. נשתמש בדוגמא המפורטת בתרשים 5-19. תרשים 5-19/1 מציג את המצב ההתחלתי של הקובץ לאחר טעינתו הראשונית. קובץ הנתונים תופס שתי מסילות. מסילה שלישית מיועדת לקליטת רשומות גולשות. כל כתובת בשטח נתונים מורכבת ממספר המסילה והמספר הסדורי בתוך המסילה. לדוגמא הכתובת של רשומה 810 יהיה 23 (מסילה 2, מקום 3). במצב ההתחלתי, האינדקס מצביע על התחלת המסילה ומכיל את המפתח הגבוה ביותר במסילה. תרשים 5-19/2 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 49. הרשומה החדשה גורמת לגלישת רשומה 10.. הרשומה הגולשת תועבר לכתובת 1 (בהתאם לתוכן מצביע המקום הפנוי הבא בשטח הגלישה). האינדקס הרגיל יעודכן מאחר והמפתח הגבוה ביותר במסילה הוא 49. באינדקס הגלישה יש לעדכן את תוכן המצביע כך שיצביע על הכתובת של רשומה 410. תרשים 5-19/3 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 17., הרשומה החדשה מתווספת ישירות לשטח הגלישה לכתובת 32 (בהתאם לתוכן מצביע המקום הפנוי הבא בשטח הגלישה). הרשומות בשטח הגלישה משורשרות ביניהן כך שישמר המיון של הרשומות. אינדקס הגלישה מעודכן מאחר והמפתת הגבוה ביותר בגלישה הוא 417. המצביע ממשיך להצביע לרשומה 410 מאחר והיא הראשונה מבחינה לוגית בשטח הגלישה. תרשים 5-19/4 מציג את מצב הקובץ לאחר הוספת רשומה עם מפתח 43. הרשומה החדשה גורמת לגלישת רשומה 89. רשומה זו מועברת לכתובת המתאימה בשטח הגלישה ומשורשרת עם שאר הרשומות הגולשות לשמירת סדר המיון. האינדקס הרגיל מתעדכן מאחר והמפתח הגבוה ביותר במסילה הוא עתה 8. אינדקס הגלישה מתעדכן מאחר והרשומה הראשונה, מבחינה לוגית, הוא 49. עד כאן תיארנו את הטיפול בהוספת רשומות חדשות. כאשר מבטלים רשומות קיימות בקובץ רוב המערכות המשתמשות בשטחי גלישה רק מסמנות את הרשומות המבוטלות אבל אינן משחררות את המקום שהן תופסות. המקום שלהן משתחרר רק כאשר רשומה מבוטלת גולשת מהגוש או בזמן ביצוע ארגון מחדש של הקובץ. 11 | | 12 אינדקס מסילות 1 כ מכ ו. מצב הקובץ בתחילת העיבוד: 0 0וג 2 ווה מקום הבא בשטח גלישה אינדקס מסילות 2. לאחר הוספת רשומה עם מפתת ה בר 3. לאחר הוספת רשומה עם מפתת מצביע רגיל ב מ מקום הבא בשטח גלישה אינדקט מסילות 4. לאחר הוספת רשומה עם מפתח מצביע גלישה מצביע רגיל מ א 55| גשטוגליטה | תרשים 5-19: עדכון קוב 1541 של יבמ חפש רשומה עם מפתח א מצא כניסה ראשונה מפתח > א מצאנו את הרשומה המבוקשת התקדם לרשומה הבאה בגוש רשומה לא נמצאת בקובץ מצאנו את הרשומה המבוקשת התקדם לרשומה הבאה בעזרת המצביע >< מפתח תרשיס 5-20: תרשים זרימה לחיפוש רשומה בקובץ 54 עס גלישות 13 ארגון מחדש של קובץ אינדקס סדרתי לאחר זמן פעילות מסוים, חלק גדול מהקובץ יכול להמצא בשטחי הגלישה לא לפי סדר המפתחות אלא בצורה משורשרת. במקרים אלה הגישה לרשומה מאד לא יעילה בגלל הצורך בהזזת זרועות רב מאד לקריאת מספר רב של רשומות בודדות. הביטולים גורמים גם הם לניצול לא טוב של שטחים, ולמעשה לבזבוז. אם נטמן ב-6 את עלות חיפוש הרשומה, ניווכח שעלות החיפוש הולכת וגדלה ככל שמשך פעילות הקובץ ארוך יותר. עלות חיפוש זמן פעילות תרשים 5-21: עלות חיפוש כפונקציה של זמן פעילות קוב 154 המשתמש יכול לגלות את העליה בעלות החיפוש מתוך סטטיסטיקות המנוהלות על-ידי המערכת לניהול קבצים, כגון -- שיעור התפוסה בשטח הגלישה, מספר הפניות לרשומות בשטחי גלישה, ומספר הרשומות המבוטלות בקובץ. על המשחמש לארגן מחדש את הקובץ על-ידי טעינה מחדש (1.086) בעזרת תוכנית שירות. לאחר הארגון מחדש של הקובץ מתקבל מצב התחלתי ופונקציית עלות החיפוש תהיה שונה מבמקרה הקודם. תרשים 5-22 מציג את הגידול בעלות חיפוש רשומה כפונקציה של זמן הפעילות. ככל שמשך הפעילות גדול יותר, מספר הרשומות בשטחי גלישה יהיה גדול יותר ולכן עלות חיפוש רשומה תגדל. בנקודת זמן ,1 מתבצע ארגון מחדש של הקובץ ולכן עלות חיפוש רשומה יורדת. עלות חלפוש זמן פעילות ‏ ₪ 11 תרשים 5-22 : עלות חיפוש לאחר ביצוע ארגון מחדש 124 לש פיצול דינמי של גושים שיטת הפיצול הדינמי של גושים (8ח1ו)11ק5 8106% 6ווחהחץכ]) פותחה כדי להתגבר על בעית הירידה בביצועים בשיטת 15.1 (כלומר, משך זמן ארוך יותר לגישה לרשומה) כפונקציה של משך פעילות הקובץ. בשיטה זו אין שטחי גלישה והקובץ מורכב משני שטחים: -- איזור נתונים המורכב מגושים המכילים את הרשומות. להבדיל מהשיטה הקודמת, המשתמש יכול להגדיר בזמן טעינת הקובץ אחוז מסוים משטח הגוש כשטח ריק (8ח(2800). שטח זה ישמש לקליטת רשומות חדשות בתוך הגוש המקורי ללא צורך בביצוע פעולות נוספות. קיימות מערכות המקצות את כל איזור הנתונים בעת טעינת הקובץ כדי לקבל מספר רב ככל האפשר של גושים קרובים אחד לשני (א801 ח0ו)411064/). לעומתן, קיימות מערכות המקצות גושים בהתאם לצורך ומוסיפות גושים תוך כדי גידול הקובץ. -- איזור אינדקסים -- מורכב מגושים של אינדקסים. גם בגושים אלה ניתן להגדיר אחוז מסוים משטח הגוש כשטח ריק בזמן טעינת הקובץ. אחזקת הקובץ = קיימים שני מצבים בזמן הוספת רשומה חדשה: 1. יש מקום פנוי בגוש -- במקרה זה הרשומה החדשה תתווסף בגוש המקורי במקום הלוגי המתאים לה ויתבצע עדכון של מצביע בתוך הגוש המורה להתחלת השטח הפנוי. הוספת רשומה במצב זה יכולה לגרום לעדכון המפתח הגבוה ביותר בגוש אבל לא לעדכון הכתובת, מאחר והגוש החדש נכחב חזרה במקום הגוש הקודם (שים לב שאנו פועלים במתקן אחסנה המאפשר זאת -- דיסק מגנטי). מצביע השטח הפנול חדשה לפני העדכון ה ו תרשים 5-23: הוספת רשומה חדשה לגוש 2 אין מקום בגוש לקליטת הרשומה החדשה, ואז מתבצע פיצול של הגוש. חצי ממספר הרשומות נשארות בגוש המקורי וחצי ממספר הרשומות מועתקות לגוש ריק חדש. הגוש החדש אינו חייב להיות שכן לגוש המקורי, מאחר והסדר הלוגי של הגושים נשמר באינדקסים. בתוך הגוש הרשומות ממוינות תמיד. 15 מצביע השטח הפנוי לפני העדכון רשומה חדשה / / - ו תרשים 5-24: פיצול גוש לשני גושים בעת עדכון בתרשים 5-25 ניתנת דוגמא המתארת את הצורה שבה מתעדכנים האינדקסים בעקבות פיצול גושים. תרשים 5-25: הוספת רשומה עס מפתח 260 ופיצול אינדקסיס 156 על מנת לאפשר קריאה סדרתית של הקובץ ללא צורך בפניות לאינדקסים ניתן לשרשר ביניהם את כל הגושים לפי הסדר הלוגי שלהם כפי שמתואר בתרשים 5-26. גישה סידרתית גישה ישירה תרשיס 5-26: שרשור סדרתי של גושיס בקובץ אינדקס סדרתי 17 4 ארגון אינדקס סדרתי (161000/ 400688/ 5107886 [008זו/ -- 1 5/) 2 וא%5 היא שיטה מתקדמת לארגון נתונים במערכות יבמ המשתמשות במערכות הפעלה עם זיכרון בפועל (886ז510 111041/). ב-1א 5/4 מבחינים בשני סוגי קבצים בהתאם לסדר הרשומות: - קובץ עם רשומות ממינות (!56 2818 066ת860₪06 6 -- 5). בסוג זה הרשומות ממוינות בהתאם למפתח כלשהו, ו-1א 5/4 מנהל עבורו אינדקס בדומה לשיטת ארגון אינדקס סדרתי. -- קובץ עם רשומות לא ממוינות (561 818 560060060 ץזותם -- 5). בסוג זה הרשומות נרשמות בקובץ בהתאם לסדר הגעתן ללא כל התיחסות לתוכן הרשומות או למפתח כלשהו. עבור סוג זה אין !54 מנהל אינדקס כלשהו. על שיטת הגישה לרשומות אלו נעמוד בהמשך. שיטת אחסון רשומות ב-1א /%5 51 מאחסן את כל הרשומות בדיסק בשטח בעל אורך קבוע. זהו שטח הקרוי גוש הפיקוח ([167%8ח1 01ז1חס;)). הוא נבדל מהגוש הפיסי אותו הכרנו עד כאן בכך שזהו מבנה לוגי. לכן גוש פיקוח אחד יכול להיות כלול במספר גושים פיסיים, אם כי בדרך כלל יש להשתדל לקבוע את גודלו בגודל זהה לגוש הפיסי. גודל גוש הפיקוח נמצא בשליטת המשתמש וניתן לקביעה לפני בנית הקובץ. קיימת גם אפשרות ש-/.%5 יחשב את גודל הגוש בעת טעינת הקובץ. נתוני ] רשומה | רשומה | בשומה בקרה תרשיס 5-27: מבנה גוש הפיקות הרשומות הפיסיות נרשמות בתחילת גוש הפיקוח ואילו בסופו נרשמים נתוני בקרה הנמצאים בשימוש 1א./5/ בלבד. נתונים אלו מכילים שדה אחד (1610 הסוווחו]6 6606 -- "%00) עבור כל רשומה בגוש הפיקוח אשר מורכב מאורך הרשומה ונקודת ההתחלה שלה בגוש. קיימת אפשרות לפרוס רשומה פיסית אחת על פני יותר מגוש פיקוח אחד אם הרשומה הפיסית ארוכה מאד. 18 תרשים 5-28: שדות בקרה בגוש הפיקות קטע 3 קטע 2 קטע ו של הרשומה של הרשומה של הרשומה תרשים 5-29: פריסת רשומה לוגית במספר גושי פיקות אוסף של גושי פיקוח קרוי תחום פיקוח (68זג/ 01ז1ת00)). מספר הגושים המרכיבים את תחום הפיקוח הינו קבוע ונקבע על-ידי המשחמש או על-ידי א5/. בדרך כלל השאיפה היא שתחום הפיקוח יהיה גליל אחד. רשומה 3 | רשומה 2 | רשומה 1 תחום רשומה 5 רשומה 4 פיקוח רשומה 6 ה 5 ב 1 ה פ ב 1 ה פ ב 1 תרשים 5-30: מבנה תחוס פיקוח ב-]54%/ |29 פיזור שטח חופשי ]א משתמש בשיטת הפיצול הדינמי של הגושים לטיפול בעדכונים. על מנת למנוע את הצורך בפיצול הגוש מיד עם הוספת הרשומה הראשונה לגוש, משתמש 5.1 בשיטה של פיזור שטח ריק (חסוזטפוזווכ] 66-50806-) בתוך הגוש ובתוך תחום הפיקוח. המשתמש יכול להגדיר מראש מהו אחוז שטח הגוש או תחום הפיקוח שיש להשאיר ריק בזמן בניית הקובץ. התוצאה היא שהשטח המוקדש לגלישות בשיטת 1א.154, פוזר כאן בתוך הגושים השונים כבר בשלב בניית הקובץ. כדי לנהל את השטח הריק בתוך הגוש משתמש | .5 בשדה בקרה הקרוי שסן6 (₪60 חסוווחו)6כ |גטזסוהן |סזוה0)) המתאר את גודל השטח הריק בגוש ואת נקודת התחלתו. // יי" 7 [סהסר]סהסרן כ סד ₪ תחום פיקוח סן+] סד תרשיס 5-31: פיזור שטח חופשי בגוש חלק מהגושים המרכיבים את תחום הפיקוח נשארים ריקים בזמן בניית הקובץ. כאשר מתבצע פיצול של גוש, נלקח גוש ריק מתוך תחום הפיקוח. לאחר שנוצלו כל הגושים בתחום הפיקוח, מבצע 1א.54/ הקצאה אוטומטית של תחום פיקוח חדש. שיטות הגישה לרשומה -1א./5/ הפניה לרשומות ב-1א.5/ אינה מתבצעת על פי תכונות פיזיות כגון מספר הגליל ומספר המסילה (כמו ב-1א./15) אלא על פי היסט (1ח10ת01806וכ) הרשומה, בבתים, מתחילת הקובץ. הכתובת היחסית של הרשומה קרויה 88/4 (007688// 2766 6ש6]801). הכתובת היחסית של הרשומות אינה משתנה בעקבות העברת הקובץ לדיסק אחר או למקום אחר באותו הדיסק. 1-00 0 8= ₪84 0 = 04 0= הפה אורך 0 = גהנה 0 = בה תרשים 5-32: הכתובת היחסית של רשומות ב-1א54 כאשר מגדירים קובץ 8525 בונה 51 באופן אוטומטי אינדקס המאפשר גישה מהירה לרשומות. האינדקס עצמו מורכב מרשומות אינדקס המסודרות במספר רמות. הרמה התחתונה נקראת )56 5606806 והיא מכילה רשומה אחת עבור כל תחום פיקוח בקובץ. הרשומה מכילה מספר שדות (כמספר הגושים בתחום הפיקוח) ובהם ערך המפתח הגבוה ביותר בכל אחד מהגושים בתחום הפיקוח. 1א.%5 מתיחס אל האינדקס כאל קובץ נפרד מקובץ הנתונים. תיאור סכימטי של מערך האינדקסים ותחום הפיקוח ניתן בתרשים 5-33. אפסאו ז56 1006 זספ תחום יקו אזאם פיקוח 6 תרשים 5-33: מבנה קובץ 505 11 הו ב רשומות האינדקס ברמה הנמוכה ביותר משורשרות ביניהן כדי לאפשר סריקה סדרתית של הקובץ ללא פניות לכל רמות האינדקס. בדרך כלל רשומת האינדקס הזאת נמצאת במסילה הראשונה של תחום הפיקוח והיא מוחזקת מספר פעמים להקטנת זמן ההשהיה הסיבובית. האינדקסים ברמות הגבוהות יותר מצביעים על רשומות באינדקס בהתאם למפתח הגבוה ביותר. תרשים 5-34/1 מציג את תוכן האינדקסים בקובץ 5 1 מבנה קובץ 1א.54 במצב התחלתי: /////// תרשיס 5-34: עדכון קוב 505א-וא54ץשל יבמ 132 כאשר מוסיפים רשומות חדשות לקובץ, 1א.5/ מנסה להכניס אותן לשטח הריק בתוך הגוש בהתאם למפתח. תרשים 5-34/2 מציג דוגמא להוספת רשומה במצב זה. כאשר אין מקום בתוך הגוש להוספת הרשומה החדשה, מתבצע פיצול של הגוש. חלק מהרשומות מועברות לגוש חדש וחלקן נשאר בגוש המקורי. וא 5 מעדכן באופן אוטומטי את האינדקסים בהתאם. לאחר הפיצול שוב יש שטח פנוי בשני הגושים כך שהוספת רשומה חדשה לאחד מהגושים לא תביא בהכרח לפיצול נוסף. תרשים 5-35: פיצול גוש מקורי לשני גושים כאשר מגדירים קובץ מסוג ₪525 אין !א .5 בונה כל אינדקס. לאחר כתיבת רשומה חדשה, 1א./8/ מחזיר למשתמש את הכתובת היחסית של הרשומה (88/4) כדי שינהל בעצמו את הכתובות בשיטת אינדקס כלשהי אשר הוא קובע. האינדקסים מאפשרים את הגישה לרשומה מאוחר יותר. שיטה זו דומה לשיטת הארגון הסדרתי אם אין צורך לגשת לרשומות לפי מפתח. [א5 גם מאפשר למשתמש לכתוב את הרשומות לכתובות הנקבעות על ידו מראש ובכך מאפשר גישה ישירה לרשומות. 13 5 סיכום יתרונות: אפשרות לעיבוד סדרתי ואקראי כאחד. ניצול טוב של שטח האיחסון מאחר ובדרך כלל לא מתבצעת הקצאה מראש של שטח האחסון. המערכת לניהול קבצים מספקת מספר שירותים, כגון: תוכניות שירות לבנית קובץ אינדקס סדרתי, סטטיסטיקות על מספר רמות האינדקס, ניצול שטחי גלישה. חסרונות: 134 ב-1א/15 יש שטחי גלישה מיוחדים המהווים בזבוז שטחי אחסון מאחר ולא תמיד הם מנוצלים במלואם. במשך הזמן יש ירידה בביצועים בגלל פיזור רשומות בשטחי גלישה וצורך בארגון מחדש. ב-1א.5/ זמן הוספת רשומה גדול יותר בגלל הצורך בפיצול גוש נתונים ו/או פיצול גוש אינדקסים. בשתי השיטות הגישה לרשומה מחייבת סריקת אינדקסים אשר משפיעה על זמן התגובה ועל משך העיבוד. האינדקסים תופסים שטחי אחסון נוספים לשטחי הנתונים. 6 שאלות 1. הסבר את ההבדלים בין !א .15 ל-)א./5). 2 קובץ מכיל רשומות באורך 500 בתים. גודל הגוש 3000 בתים, גודל המפתח 30 בתים, גודל שדה הכתובת 4 בתים, בקובץ 500,000 רשומות. חשב את מספר המות האינדקס הדרושות. הסבר כיצד משתמשים בגושים להקטנת גודל האינדקס. הסבר את מושג המפתח החלקי. כיצד ניתן להשתמש בו. הבא מספר | דוגמאות לשימוש במפתח חלקי. | 5. מדוע יש צורך בארגון מחדש של קובץ 1א/15 ? מדוע דרוש ארגון | מחדש בקובץ 5/4.1/? | 6. קובץ מכיל גושים באורך 3000 בתים עם רשומות באורך 1000 בתים. | הראה את המבנה הסכימטי של קובץ אינדקס סדרתי המכיל את ו הרשומות עם המפתחות הבאים. 8 ,112 ,104 ,90 ,80 ,20 ,17 ,10 0 ,404 ,301 ,201 ,198 ,191 ,180 ,175 ,170 ,160 ,150 הצג את מבנה האינדקס ושטחי הגלישה לאחר הוספת הרשומות הבאות: 5, 21 ,604, 8 7 קובץ 1א .15 נמצא בדיסק בעל הנתונים הבאים: -- 200 מסילות, 10 משטחי מגנוט (ראשי קריאה כתיבה), -- זמן חיפוש ממוצע -- 30 מילישניות, -- השהייה סיבובית -- 8 מילישניות, -- מהירות העברה -- 0.8 מיליון בתים לשניה. גודל הקובץ -- 50,000 רשומות, 50 רשומות למסילה. חשב: -- מספר הגלילים הדרוש לאחזקת הקובץ, -- זמן הגישה הממוצע לרשומה. 15 7 נספת -- חישוב מספר רמות אינדקס נתון קובץ שבו גודל גוש הוא 8 בתים (או מילים) וגודל הרשומה הוא 8. לפיכך יהיו בכל גוש 8/8 רשומות. אם בקובץ יש מ רשומות, נקבל שמספר רשומות האינדקס הדרושות יהיה: - = 0 = מספר רשומות אינדקס רשומת אינדקס מכילה את המפתח שגודלו % וכתובת לגוש המתאים, שגודלה ? ולכן האורך של רשומת אינדקס יהיה ? + %. נניח שגודל הגוש של האינדקס גם הוא 8 (תנאי לא הכרחי, יתכן גודל גוש שונה) לכן מספר רשומות האינדקס שניתן להכניס לגוש האינדקס יהיה 8 א+ץ נסמן ב-1 את מספר רמות האינדקס. בכל רמת אינדקס ניתן להצביע על 8 . גושים, שבכל אחד מהם ניתן שוב להצביע על גושים וכך * + ? הלאה. = מספר רשומות בגוש אינדקס 5-2 8 כ ה- 0 מאחר ומספר הרמות חייב להיות מספר שלם יש לקחת את המספר השלם הגדול הקרוב ביותר ל-/1. 156 פרק שישי ארגון נתונים לגישה ישירה (16100/ 400688/ +60ז1כ) 1 מבוא 2 יחוש ישיר 3 יחוס לפי טבלה 4 יחוס על ידי חישוב 5 שיטות לחישוב כתובות 6 גישה ישירה ב-.60801 7 טיפול בגלישות 8 טעינת קובץ לגישה ישירה 9 סיכוס 0 נספת -- הפיכת כתובת יחסית לכתובת מוחלטת ביחוס ישיר בפרק זה נציג את שיטות הארגון המאפשרות גישה ישירה לרשומה ללא צורך בסריקת אינדקסים. 137 1 מבוא בפרק הקודם הצגנו את השיטה המשתמשת באינדקסים לאיחזור רשומות. הקיום של יחידות האיחסון לגישה ישירה הובילה באופן טבעי לנסיונות לארגן את הנתונים בצורה שתמנע את הצורך בסריקת אינדקסים ותאפשר גישה ישירה לרשומה המבוקשת. הארגון לגישה ישירה (16)(06 400055 21:601]) הינו שיטה לארגון נתונים בה קיים קשר, ידוע וקבוע מראש, בין המפתח של הרשומה לבין הכתובת הפיסית שלה בקובץ. שיטה זו מאפשרת גישה מהירה מאד לרשומות לצרכי שאילתות ועדכונים בהתאם למפתח המבוקש. לתהליך הפיכת המפתח לכתובת פיסית נקרא תרגום (ה180/0תז5]0ה18 00-0676585 66-7). קיימות מספר שיטות לביצוע התרגום של המפתח לכתובת פיסית: -- יחוס ישיר (8ח40016551 601ז1כ ) -- יחוס לפי טבלה (קט0%ס.1 18916) -- יחוס על-ידי חישוב (8ח40016551/ 28|0018166)) כתובת : שיטת מפתחת פיסית תרגום לוג? "ושיך" מפתח לוגי תרשים 6-1: קשר ישיר בין מפתח למיקוס הרשומה בקוב 139 2 יחוס ישיר בשיטה זו מתאימים את הכתובת הפיסית בצורה חד-ערכית למפתח, כלומר הכתובת שווה למפתח. רשומה בעלת מפתח % נמצאת בקובץ בכתובת א. זוהי כמובן כתובת יחסית להתחלת הקובץ ועל המערכת לניהול קבצים לתרגם כתובת יחסית זו לכתובת מוחלטת בדיסק. המפתחות יכולים להיות רק מספרים שלימים חיוביים. אם המפתח הוא אלפא-ביתי יש לבצע תרגום לערך מספרי כלשהו. לדוגמא, אם מספר העובד הוא 191 הרשומה שלו תימצא במקום היחסי 1 בקובץ. בשיטה זו ניהול מיקום הרשומות בקובץ הינו באחריות המשתמש. ראה בנספח כיצד ניתן להפוך כתובת יחסית לכתובת מוחלטת. ] ו מפתח לוגי 0 אלגוריתם ההופך קובץ בו הרשומות את המפתח לכתובת סדורות לפי המפתח | מוחלטת בדיסק תרשיס 6-2: יחוס ישיר של מפתח לכתובת פיסית היתרון של השיטה הזאת הוא היחט הפשוט יחסית בין המפתח לכתובת ולכן היא מאפשרת גישה מהירה מאד לרשומה המבוקשתח. בשיטה זו אין צורך לנהל שטחי גלישה מאחר ולכל רשומה שמור מראש מקום בקובץ. העובדה שיש לשמור לכל רשומה מקום מראש היא גם החסרון הגדול של השיטה. אם טווח הערכים שהמפתח יכול לקבל הוא גדול מאד ומספר הרשומות בקובץ הוא קטן, נקבל נצילות גרועה מאד של שטח האיחסון. לדוגמא, אם נשתמש במספר קטלוגי בן 9 תווים כמפתח הרי שטווח הערכים שלו הוא בין 0 ל-1-10% כלומר 10% ערכים שונים. אם יש בקובץ 0 רשומות בלבד, הנצילות תהיה: 5 ט 6% > 18י2 100 נצילות זו נמוכה מאד, ולכן יש להשתמש במקרה זה בשיטת ייחוס שונה. לסיכום שיטת היחוס הישיר נציין את היתרונות והחסרונות שלה. 100 יתרונות : שיטה יעילה מאד אם טווח המפתחות הוא קטן יחסית וצפיפות הרשומות גדולה. גישה מיידית לרשומה לפי קשר פשוט בין המפתח לכתובת הפיסית. ניתן לעבד את הקובץ גם באופן סדרתי מאחר והוא ממוין לפי המפתחות (יש להבחין בין מקומות תפוסים למקומות ריקים). עדכון הקובץ פשוט ביותר. לכל רשומה בקובץ יש מקום מוקצה מראש. חסרונות: -- נצילות נמוכה מאד של שטח האחסון כאשר טווח המפתחות גדול יחסית למספר הרשומות האפשריות בקובץ. בדרך כלל זהו המקרה השכיח. -- השיטה מתאימה לרשומות באורך קבוע בלבד. 3 יחוס לפי טבלה בשיטת הייחוס לפי טבלה נרשמות הרשומות בקובץ לפי סדר הקליטה. כלומר, רשומה חדשה תרשם בסוף הקובץ. לאחר כתיבת הרשומה בקובץ, מחזירה המערכת לניהול קבצים את הכתובת של הרשומה למשתמש. ניהול הכתובות לשם גישה לרשומות הינו באחריות המשתמש ולשם כך הוא בונה טבלה המבצעת את התרגום בין המפתח הלוגי לבין הכתובת הפיטית. בכדי לגשת לרשומה, יש לסרוק תחילה את הטבלה למציאת הכתובת. שיטת הגישה באמצעות טבלה מהירה מאד מאחר והכתובת מאפשרת גישה מיידית לרשומה. מהירות הגישה לרשומה נקבעת על פי זמן חיפוש בטבלה המכילה מספר כניסות כמספר הרשומות בקובץ. אם מספר הרשומות רב, יש צורך לנהל אינדקסים לטבלה כדי ליעל את החיפוש. בעיית הגישה לקובץ הועברה לגישה לטבלה. שיטה זו שימושית מאד כאשר יש לגשת לקובץ עם מספר רב של מפתחות בשיטות של אינדקס משני (ראה פירוט בפרק הבא). במקרה זה תנוהל הטבלה באופן אוטומטי על-ידי המערכת לניהול קבצים האחראית לניהול האינדקס המשני. בדרך כלל רוב המערכות אינן משחררות שטח שהתפנה בעקבות ביטול רשומות. שטח זה מתפנה רק עם ארגון מחדש של הקובץ. טבלת תרגום מפתח לוג? 4 תרשים 6-3: תרגוס מפתח לכתובת בעזרת טבלה 112 64 יחוס על-ידי חישוב השיטה הנפוצה ביותר לתרגום המפתח לכתובת היא היחוס על ידי חישוב. השיטה מבוססת על הפעלת תהליך חישובי כלשהו המבצע את צימצום חטווח של הערכים שהמפתח יכול לקבל. בדוגמא שהבאנו ביחוס ישיר ראינו שטווח הערכים האפשריים הוא 10% בעוד שמספר הרשומות בקובץ הוא 200,000 בלבד. אם נבצע צימצום הטווח, לא נצטרך להקצות מראש מקום ל-10% רשומות ולכן נקבל ניצול טוב יותר של שטח האיחסון. לתהליך החישובי המבצע את צמצום הטווח קוראים 8תות185] או קחוותסשתגת, והוא מתבצע בעזרת אלגוריתם כלשהו. מציאת פונקציה מתמטית שתבצע התאמה חד-חד-ערכית בין שני הטווחים היא בלתי אפשריח, ומכאן נובע החסרון של השיטה, התהליך החישובי יכול להתאים לכל מפתח כתובת פיסית או להתאים למספר מפתחות כתובת אחת, למשל את כתובת הגוש. הבעיה היא שהתהליך החישובי יכול להתאים למספר מפתחות את אותה הכתובת (פוזומסתץ5) וכאשר מספר המפתחות האלה גדול ממספר הרשומות בגוש תתקבל גלישה. השיטה מטפלת בארגון הנתונים הגולשים מגושים ומסילות. כתוצאה מהגלישה נקבל ירידה בביצועים, כלומר זמן גישה ארוך יותר, מכיון שיש לבצע גישות נוספות לשם שליפת רשומות גולשות. מפתחות לוגלים הפיכת מספר גוש לכתובת הגוש תרשיס 6-4: תרגוס מפתח לכתובת בתהליך חישובי על האלגוריתם לפזר בצורה אחידה, עד כמה שניתן, את הרשומות בשטח האיחסון. ככל שפיזור הרשומות בקובץ יהיה טוב יותר נקבל מספר גלישות קטן יותר. אך נושא זה אינו בשליטת המשתמש והוא מותנה באופי הנתונים בלבד. מספר הרשומות הגולשות בלבד אינו מדד מספיק לבדיקת טיב הפיזור. מדד נוסף הינו מספר הגישות הכולל לשליפת כל הרשומות בקובץ. 13 פותןתסתץ5 9% מפתחות 0 לוגלים תרשים 6-5: דוגמא לקבלת כתובות זהות למפתחות שונות נשתמש בדוגמא כדי להמחיש את הנושא. על סידרה של 5 מפתחות שונים מפעילים שני תהליכי תרגום שונים לקבלת הכתובות: +0 100 "תהליך א' ,"' "תהליך נ' " תרשים 6-6: פיזור גלישות בשתי שיטות חישוב שונות בשתי השיטות קיבלנו 2 רשומות גולשות. בתהליך א' ל-3 רשומות ניתן לגשת בגישה אחת ולשתי רשומות נוספות יש צורך בשתי גישות. כלומר, מספר גישות בקובץ יהיה 7 = 2%2 + 1 א 3. בתהליך ב' ל-3 רשומות ניתן לגשת בגישה אחת. לרשומה אחת יש צורך בשתי גישות ולאחת יש צורך בשלש גישות. לכן מספר הגישות הכולל יהיה 8 = 13 + 2א1 + 1א3. המסקנה היא ששיטה א' עדיפה. 14 קיימים מספר גורמים המשפיעים על פיזור הרשומות בקובץ וטיב התרגום של התהליך החישובי. א קיבולת הגוש. ככל שגדלה קיבולת הגוש, מספר הרשומות הנכנסות לגוש אחד גדל ולכן הסתברות הגלישה קטנה יותר. ב שיעור הדחיסה של הקובץ (ע11ח26 פַחו2809) הוא היחס בין מספר הרשומות המשוער בקובץ למספר הרשומות האפשריות בקובץ. אם מספר הרשומות המשוער בקוב? הוא 60,000 והוקצה מקום ל-100,000 רשומות נאמר ששיעור הדחיסות של הקובץ הוא 0.6. ככל שהקובץ דחוס יותר ההתסברות לגלישה הולכת וגדלה. מצד שני, אם הקובץ "דליל" מאד ניצול שטח האיחסון גרוע יותר. ג. | ערכים של המפתחות של רשומות הקובץ. אם הערכים של המפתחות מתקבצים סביב ערכים מסוימים יביא התהליך החישובי לכך שנקבל מספר גלישות רב. לפני ההחלטה על הפעלת ארגה נתונים ישיר יש לבדוק את טיב הפיזור המתקבל בקובץ בעזרת התהליך החישובי. באופן תיאורטי אין אפשרות להגדיר תהליך חישובי שיוצר כתובות אקראיות ממפתחות שאינם מפולגים בצורה אקראית, בכל אופן קימת אפשרות למצוא תהליך חישובי שייצר כתובות די אקראיות. מאחר ושיטת חייחוס על-פי חישוב הינה הנפוצה ביותר נרחיב בהמשך את הדיון בשיטה זו. 15 5 שיטות לחישוב כתובות תהליך חישוב הכתובת מורכב בדרך כלל משני שלבים: א. תרגום המפתח לערך מספרי שניתן להפעיל עליו תהליך חישובי כלשהו. אם המפתח מכיל מספר שלם, התרגום הינו פשוט ביותר. אם הוא מכיל גם אותיות או סימנים מיוחדים יש לקבוע שיטה לתרגום. ניתן להשתמש בצורה ישירה בייצוג הבינרי של האותיות בתור מספרים. אם בית אחד מכיל 8 סיביות ומייצג אות אחת ניתן לחלק אותו לשני חלקים של 4 ולהתייחס לערך מספרי המיוצג על ידי הסיביות. ב. תהליך חישובי כלשהו אשר מטרתו היא צמצום הטווח של מספר הערכים האפשריים של המפתח לטווח מספר הרשומות הצפוי בקובץ. יש לבנות את התהליך החישובי כך שמספר המפתחות המייצרים את אותה כתובת יהיה מינימלי, נסמן ב- ! את פונקצית התרגום. פונקציה זו יכולה לקבל !א ערכים שונים לכל היותר, כאשר 1 מספר הרשומות המקסימלי בקובץ. ]א >(0א) 0% נציג בהמשך מספר שיטות לתרגום מפתח לכתובת. חלוקה (תסופוצנ) שיטת החלוקה הינה שיטה פשוטה ביותר. מחלקים את המפתח במספר הרשומות הצפויות בקובץ ומשתמשים בשארית ככתובת. לדוגמא, אם קובץ מכיל 1000 רשומות נחלק את המפתח הנתון 84256 ב-1000 ונקבל שארית 6 שהיא הכתובת של הרשומה בקובץ. זוהי כתובת יחסית שיש להפוך לכתובת מוחלטת לשם גישה לרשומה. מאחר ומחלקים ב-1000, השארית תנוע בין 0 ל-999 וזהו בדיוק טווח מספר הרשומות האפשריות בקובץ. אם הקובץ מכיל מפתחות רציפים הגדלים באחד, לאחר 1000 רשומות יתחיל אלגוריתם זה לייצר את אותן הכתובות. ]א 00 א= (א8) ג ניתן להשיג שיפור ניכר אם המחלק יהיה מספר ראשוני הקרוב ביותר למספר הרשומות האפשריות בקובץ. שימוש במספר ראשוני מקטין את מספר הכתובות הזהות המיוצרות על-ידי התהליך החישובי. שיטה זו נחשבת לטובה מאחר והיא מייצרת גלישות מאוזנות. 146 קיצוץ (ח69110מט17) בשיטה זו מקצצים את הספרות הראשונות או האחרונות במפתח ויוצרים מפתח בעל מספר ספרות קטן יותר. מספר הספרות הנשאר נקבע עלדידי הטווח הרצוי. שיטה זו טובה כאשר קיים פיזור טוב של ערכי המפתחות. ו קיצוץ ספרות 2,575 כתובת מפתת תהליך הקיצוץ של 3 ספרות מימין מקביל לחלוקה ב-1000 אך מהיר ממנה מאחר ופעולת ההזזה מהירה יותר מאשר פעולת החילוק. אם הספרות האחרונות או הראשונות במפתח נוטות להתקבץ סביב ערכים קבועים נקבל גלישות רבות. שליפה (ם80410ז1אם ) שיטת השליפה דומה מאד לשיטת הקיצוץ אלא שכאן מבצעים קיצוץ משני / צידי המפתח ושולפים את הספרות האמצעיות של המפתח בלבד. בחינת / התפלגות המפתחות יכולה להוביל אותנו להחלטה אילו ספרות יש לשלוף. כמו | | בשיטה הקודמת, גם שיטה זו מאפשרת צמצום טווח בצורה פשוטה יחסית. ל 0 99 =- 5 828567 כתובת מפתת קיפול וחיבור (8ח1-010108//.001) בשתי השיטות הקודמות השתמשנו רקבחלק מהספרות המרכיבות את המפתח, אך כדי להשיג פיזור טוב יותר של הרשומות יש להשתמש בכל ן הספרות שלו. קיימות לכך מספר שיטות. בשיטה אחת "מקפלים" את המספר ן לשתיים או יותר חלקים ומחברים יחדיו את כולם. התוצאה של החיבור תשמש | | אותנו ככתובת הרשומה. לדוגמא, קיפול וחיבור כתובת כדי ליצור טווח של / 0 רשומות בתחום 0 עד 999. 671245 24]5 8ן 4 225 56 | 4]5 [4[5|6712ן8]2ו מפתח 127 כאשר יש בקובץ 10,000 רשומות יש לייצר כתובות בטווח 0 ועד 9999. במקרה זה יש לחלק את המספר לשני חלקים בלבד. קיימת גם אפשרות ל"סדר" מחדש את המספרים לפני החיבור להשגת אפקט נוסף של פיזור (8חוו8/5011ח:016). במקרה שבדוגמא נרשמו שלש הספרות הראשונות ושלש הספרות האחרונות בסדר הפוך. 5 8245 671245 ריבוע המפתח (1611006/ 6ז11:4-5008/) בשיטה זו כופלים את המפתח בעצמו. ומתוך התוצאה המתקבלת שולפים את הספרות האמצעיות לקבלת הכתובת. אם חלקים גדולים מתוך המפתח יכולים להיות אפסים שיטה זו לא תייצר כתובות טובות. ה"מחיר" שבחישוב המפתח הוא גבוה אך יש לשקול זאת לעומת מספר הגישות הצפויות בקובץ וחסכון אפשרי בשטח אחסון על ידי פיזור טוב יותר של הרשומות בטווח כ ₪ ךר שש | 18 שינוי בסיס (ח8)10ותז510ת8ז1 א861) תהליך שינוי בסיס המספר של המפתח מתבצע בשלשה שלבים: -- הפיכת המפתח למספר בשיטת הייצוג העשרונית או הבינארית, -- שינוי הבסיס, כלומר הפיכת המספר מבסיס עשרוני למשל לבסיס אחר, -- קיצוץ ספרות לקבלת הכתובת. נדגים שיטה זו כאשר הבסיס החדש יהיה 11. 9 8-113+2-112+4-11'17 קיצוץ שתי ספרות אחרונות = 109 רצוי שהבסיס החדש יהיה מספר ראשוני. הבסיס החדש לא יכול להיות קטן מהבסיס המקורי (בבסיס 7 לא קיימת הספרה 8). |59 6 גישה ישירה ב-/00801 מנקודת מבט המשתמש, השימוש בשיטת הגישה הישירה המוצגת בקובול דומה מאד לשימוש בארגון אינדקס סדרתי. נציין שניתן גם בשיטה זו לקרוא את הרשומות בצורה סדרתית, אבל הרשומות אינן ממוינות אלא מתקבלות בהתאם לסדר הפיסי שלהן. המשתמש מגדיר את שיטת ארגון הקובץ, המפתח ומספר הגושים בקובץ במשפט ‏ 551.507. שאר ההגדרות והטיפול ברשומות הם בדומה לאלו של שיטת ארגון אינדקס-סדרתי. אא 70 א45510 15ת-צג. ]וא 501.507 ו 15 אס1ד2זא סתס 1 5 צמא 50080 0 הפפ אטא 5 20 פא 0074 81/06% .ואססשאגא 15 5כ סא 4066595 במערכות לניהול קבצים של יבמ השיטה שונה. על המשתמש לחשב בעצמו את מספר המסילה היחסית למסילה הראשונה. המסילות בקובץ ממוספרות מ-0 ועד ח. המשתמש חייב לבנות מפתח (מחוץ לרשומה) המכיל את מספר המסילה ואת זיהוי הרשומה. המערכת מעבירה באופן אוטומטי מפתח זה אל הרשומה לפני שהיא מועברת ליחידת האיחסון. בעזרת ד11א11-0% 4 אך קובע המשתמש מראש את מספר המסילות שהקובץ יתפוס. בקריאה סדרתית של קובץ מאורגן בצורה ישירה, על המשתמש לזהות לבד אם הרשומה קיימת או שזהו מקום ריק. נציג כאן דוגמא של תוכנית הבונה קובץ בגישה ישירה במערכות יבמ. בקובץ יש 8000 רשומות, וגודל המפתח 8 תווים. על מנת להשאיר מקום לרשומות גולשות נוסיף עוד 25% מקומות פנויים לכן נכנה מקום ל10,0007 רשומות. כל רשומה מכילה 200 בתים ונניח שהדיסק בנוי ממסילות היכולות להכיל 13 רשומות למסילה. קביעת מסלול יחסי: 1. מספר רשומות למסילה הוא 13. לאיחסון 10,000 רשומות דרושות 770 מסילות. המספר הראשוני הקרוב ביותר ל-770 הוא 691. 3 נחלק את המפתת ב-691. השארית מפעולת החילוק יהיה מספר המסילה היחסי. 150 תוכנית הקובול המתאימה: צג1וא-ק-3330- 4ש סד א45510 תזז-צ זוא 551007 וכ 158 אד 124 אס צפא- ד 15 צם א ד 1 185 דא 1- אסא אד .ואססאגת 15 פססוא 40065585 .א556110 0-5108405אזא אס .6אצ8 פ]אסס (5909 16ע | דאםזדסטס 77 .56 ק]א60 (5909 6זק מצ54 77 צםא-]0 |0 .אפ 601 (59%6 סז כ1-846%ד 03 .(909 210 כ[-850080 03 .אסז1צזס פאסםססא2 - צג וא דטפדטס אפקס .0ש0-1 5608 54 סד צפא מצס א דא סט סאןצזס 691 צפם פצ54 פסזצוס .כז-46%אד אפפאןזג אסת צטפא פועג צות 56א-צג וא פד אש .א48 70 00 .₪ -צ ]א 61055 11 7 טיפול בגלישות השימוש בתהליך חישובי לצמצום הטווח גרם ליצירת מספר כתובות זהות עבור מפתחות שונים ולכן יש לבנות מנגנון שיטפל ברשומות גולשות אלו. קיימות מספר שיטות לטיפול ברשומות גולשות -- כאלה המקצות לרשומות הגולשות שטח נפרד בקובץ (בדומה לשיטת 1א../15) וכאלה המאחסנות את הרשומות הגולשות יחד עם הרשומות הרגילות. שטח גלישה נפרד (אַחוַתוא8ת2) עסז6ש02) בזמן בניית הקובץ נגדיר שטח מיוחד שיקלוט את הרשומות הגולשות (68ז/ אוס!!ז6ש0)), ונשרשר אותן על-ידי שימוש במצביעים.' דוגמא: נניח שהתהליך החישובי מפיק את אותה כתובת לרשומות עם מפתחות 300, 750, 620 וכתובת אחרת למפתחות 400, 420. שטחי גלישה שטח אחסנה ראשל מגוש אחסנה ראש? אחר גוש אחסנה ראש? גוש גלישה 1 גוש גלישה 2 תרשיט 6-8: שרשור גלישות במספר גושים 12 הרשומה הראשונה נכנסת לכתובת המקורית ואילו כל הרשומות הגולשות מועברות לשטח הגלישה ומשורשרות ביניהן. ברגע שגוש הגלישה מתמלא, מתחילים למלא גוש חדש. יתכנו שרשרות הנמשכות על פני מספר גושים של גלישה. בדרך כלל מבצעים את צמצום הטווח על-ידי התהליך החישובי לא למספר הרשומות האפשריות אלא למספר הגושים בקובץ (8106%5 16ח110). כאשר מחשבים את הכתובת של הגוש, מביאים אותו לזכרון ומבצעים בו חיפוש סדרתי לאיתור הרשומה הדרושה. אם הרשומה לא נמצאת בגוש המקורי משתמשים במצביע אל שטח הגלישה. שטח אחסנה ראשי לגושים שטח אחסנה לגושים גולשים גוש גלישה 1 גוש גללשה 2 תרשיס יי שרשור רשומות גולשות בתרשים 6-9 רשומות 18, 21, 13 מיועדות לגוש 1. מאחר והגוש היה מלא הן הועברו לגוש גלישה 1. כאשר רשומה 13 הגיעה לגוש גלישה 1 גם הוא היה מלא ולכן היא הועברה לגוש גלישה 2. לסריקת כל הרשומות אשר הכתובת המחושבת שלהן היא 1 נצטרך במקרה זה שלש גישות מאחר והרשומות המיועדות לגוש זה מפוזרות עכשיו בשלשה גושים שונים. נחשב את מספר הרשומות הגולשות מהגוש: נסמן ב-א את מספר הרשומות בקובץ, ב-1א את מספר הגושים בקובץ וב-ט 1 . את מספר הרשומות בגוש. ההסתברות שמפתח כלשהו יכנס לגוש היא 1/1 ההסתברות שבדיוק % מפתחות יכנסו לאותו גוש תהיה: -א 19% וא (ם- 0 = 09 נחשב את מספר הרשומות הגדול מ-5 המופנות לאותו גוש. | א | (פ-א) (א) 2 = 1=א 13 בשיטה זו איתור הרשומה מתבצע תוך סריקת השרשרת. אפשרות אחרת היא לא לבנות שרשרת אלא רק מצביע לגוש הגלישה. לכל גוש בשטח הראשי שיש לו רשומות גולשות, יוקצה גוש גלישה נפרד, ויהיה לו מצביע אחד בלבד אל הגוש השייך לו. איתור הרשומה יבוצע על-ידי סריקת כל הרשומות בגוש הגולש עד לאיתור הרשומה המבוקשת. הסריקה נדרשת מכיוון שלא ידוע איזו רשומה גלשה מאיזו כתובת בגוש הראשי. שטח אחסנה לגושים שטח אחטנה ראשל לגושים תרשיס 6-10: שטח גלישה נפרד ללא שרשור רשומות שיטה זו קלה ליישום מאחר ואין שרשראות הקושרות את כל הרשומות שגלשו מאותה כתובת. ביטול הרשומה מהיר יותר מאחר ואין צורך לעדכן מצביעים. מצד שני זמן חיפוש הרשומה גדול יותר. שטח גלישה בתוך השטח הראשי 0 בשיטה זו אין שטח מיוחד בקובץ לניהול רשומות גולשות אלא מנצלים מקומות פנויים בשטח הראשי. כדי לישם את השיטה חייב שיעור הדחיסות של הקובץ להיות קטן מ"100%. קיימות שתי שיטות לניהול רשומות גולשות בשטח הראשי: 1. שרשור (פַחוח091) -- העקרון דומה לשרשרת המנוהלת עבור שטחי גלישה נפרדים. הרשומות הגולשות מאוחסנות במקום פנוי בשטח הראשי ומשורשרות אל המקום המקורי שלהן. כאשר רשומה חדשה מגיעה, והמקום תפוס על-ידי רשומה גולשת יש להזיז את הרשומה הגולשת ממקומה כדי לפנות מקום לרשומה המקורית ולעדכן את המצביעים בהתאם. התוכנה לניהול בסיסי נתונים.41 1001 משתמשת בשיטה זו. 134 דוגמא: 1 %/ רשומות תרשים 6-11: שרשור רשומות בשטח אחסנה ראשי רשומות 750 ו6007 מאוחסנות בשטח הראשי ומשורשרות לרשומה 300. כאשר מגיעה רשומה שהכתובת המקורית שלה היא בכתובת התפוסה על-ידי הרשומה הגולשת 750, יש להזיז את רשומה 750 למקום אחר ולעדכן את המצביעים בהתאם. 200 המריא ב 72 [ 5 | 2/2 תרשיס 6-12: האזת רשומות גולשות רשומה חדשה / רשומות % גולשות 2. מרחב פתוח (8ה(639ז466 .ת6ק0) -- בשיטה זו אין שימוש במצביעים. כאשר יש גלישה מתחיל תהליך של חיפוש קדימה בתוך הקובץ עד למציאת מקום פנוי ראשון. במקום זה מאחסנים את הרשומה הגולשת. לאיתור הרשומה ניגשים לכתובת המקורית. אם מצוין שהיתה גלישה בכתובת זו מתחיל חיפוש קדימה (לינארי) עד למציאת רשומה עם מפתח מתאים או עד למציאת מקום ריק ראשון. כאשר מגיעים לסוף הקובץ והרשומה לא נמצאה, ממשיכים את החיפוש מהתחלה, כלומר מתייחסים לקובץ כאל לולאה. לשיטה זו קוראים התקדמות רציפה או לינארית (קחופסז 691ח11). בעת ביטול רשומה אין למחוק אותה באופן פיסי מאחר והמקום הפנוי יכול לגרום להפסקת תהליך החיפוש בצורה לא נכונה. יש לסמן את הרשומה המבוטלת ולמחוק אותה רק כאשר מבצעים אירגון מחדש של הקובץ. 15 השיטה הזאת דורשת זמן איתור רב יותר לעומת שיטת השרשור, אבל היא פשוטה יותר מבחינת העדכון מאחר ואין בה שימוש במצביעים. כאשר שיעור הדחיסות של הקובץ נמוך, זמן החיפוש של רשומה קצר יחסית. כאשר שיטת ההתקדמות הרציפה יוצרת צפיפות של רשומות גולשות באיזורים מסוימים בשטח האחסנה ניתן להשתמש בשיטת ההתקדמות האקראית (8חוטסז 00₪1ת88). בשיטה זו כאשר הכתובת המקורית תפוסה, מחשבים מספר אקראי ומחברים אותו לכתובת ליצירת כחובת חדשה. המער- כת בודקת אם הכתובת החדשה פנויה. במידה שלא, חחרים על התהליך פעם נוספת, עד למציאת כתובת פנויה. שיטה זו נוטה לפזר טוב יותר את הרשומות הגולשות בקובץ. לאיתור הרשומה משתמשים באותה שיטה כדי ליצור את הכתובות מחדש. גם בשיטה זו אין לבטל רשומות אלא רק לסמן אותן כמבוטלות עד לארגון הקובץ מחדש. מספר גישות התקדמות לינארית 6 5 התקדמות אקראית 9 3 שרשור 2 1 שעור דחלסות 10% 50% 10% תרשים 6-13: מספר הגישות כפונקציה של שיעור דחיסות הקוב בתרשים 6-13 ניתנת השוואה גרפית של שיטות הגישה השונות. כפי שניתן לראות, שיטת השרשור מושפעת מעט מאד משיעור דחיסות הקובץ והיא נחשבת ליעילה ביותר. עבור שיעורי דחיסות נמוכים שלשת השיטות נותנות תוצאות כמעט זהות, ולכן נעדיף את שיטת ההתקדמות הלינארית בגלל פשטותה. ככל ששיעור הדחיסות עולה, שיטת השרשור עדיפה ואמנם, רוב המערכות לניהול קבצים משתמשות בשיטה זו. 156 8 טעינת קובץ לגישה ישירה קיימות מספר שיטות לטעינת קובץ לדיסק. רוב המערכות לניהול נתונים מקצות את כל שטח האחסון הראשי מראש. אם נבנה את הקובץ בסדר אקראי התהליך יהיה מאד לא יעיל מאחר וכל פעם יכתב גוש אחר לדיסק. כדי לייעל את השיטה מבצעים סריקה של הקובץ, מחשבים את הכתובות וממיינים לפי הכתובת וטוענים את הקוב? ברצף. בשיטה זו כל הרשומות המיועדות לגוש אחד יכתבו בפעם אחת. טעינת הקובץ מבוצעת לרוב בעזרת תוכניות שירות המסופקת עם התוכנה. תרשיס 6-14: תהליך בנית קובץ לארגון ישור בתרשים 6-14 מתואר תהליך טעינה במעבר אחד (1.0806 006-2855) באמצעות תוכנית שירות. קיימות שיטות בהן מתבצעת טעינה בשני מעברים (1.040 17/0-7855). בשלב ראשון טוענים לקובץ רק את הרשומות שלא גולשות. בשלב שני טוענים את כל הרשומות הגולשות. שיטה זו יכולה לייעל את תהליך הטעינה מאחר ואין צורך בהזזת רשומות גולשות שתפסו מקומות של רשומות מקוריות. לסדר הופעת הרשומה בשרשרת יש חשיבות עבור זמן התגובה של עיבוד הקובץ. אם הרשומות היותר פעילות מופיעות בסוף השרשרת יש לבצע מספר גישות רב כדי להגיע אליהן ועל ידי כך גדל זמן העיבוד. קיימת אפשרות לדאוג שהרשומות היותר פעילות תופענה בשרשרת קרוב ככל האפשר לכתובת המקורית. לדוגמא, בקובץ מלאי נסדר את הרשומות לפי סדר יורד של תאריך תנועה אחרונה. סביר להניח שמספר השאילתות המתיחסות לפריטים שאין בהם תנועה יהיה קטן יותר מאשר לפרטים בהם יש תנועה רבה. שיטה זו קרויה שרשור לפי פעילות (8ַחוחו08 ₪16 עווטו01) והיא מומלצת מאד כאשר ניתן לאפיין את שיעור הפעילות של הרשומות בקובץ. 7 9 סיכוס יתרונות -- אין צורך בגישה לאינדקסים ולכן גישה מהירה מאד. -- תהליך הפיכה מפתח לכתובת פשוט יחסית ולכן מהיר מאד. חסרונות -- אם משתמשים בשיטת הייחוס על-ידי חישוב יש לפתח מנגנון לטיפול בגלישות. השיטה מותאמת לסוג המפתחות והתפלגות הערכים שלהם. -- דרושה הקצאת מראש של כל שטח האחסון הדרוש. יש לקבוע מראש את מספר הרשומות או הגושים שיהיו בקובץ לשם הקצאתם בדיסק. -- אין אפשרות לעיבוד סדרתי של הקובץ מאחר והרשומות מפוזרות בו בצורה אקראית. 18 0 נספת -- הפיכת כתובת יחסית לכתובת מוחלטת בייחוס ישיר נציג שיטה להפיכת המפתח, שהינו הכתובת היחסית של הרשומה, לכתובת מוחלטת בדיסק. כלומר שיטה לקבלת מספר הגליל, המסילה והגוש שבו נמצאת הרשומה. נשתמש בטימונים הבאים: א -- מספר הרשומות במסילה, נניח שכל רשומה תופסת גוש אחד. א -- מספר המסילות בגליל. 6 -- המפתח של הרשומה המבוקשת (שים לב -- המפתח הראשון הוא אפס ולא 1). התהליך החישובי מחולק לשני שלבים: א. חלוקת המפתח של הרשומה במספר הרשומות במסילה א שפיא בעקבות החלוקה נקבל מנה (60 ושארית 8. השארית תבטא את המספר הסידורי של הרשומה במטילה. ב. חלוקת המנה () במספר המסילות לגליל. 1-0 בעקבוח החלוקה נקבל מנה 6 ושארית ,8: 6 -- מספר הגליל ו8-- מספר סידורי של המסילה בגליל. תוצאת החישוב מפיקה כתובת יחסית בצורה של כתובת מוחלטת: מספר סידורי | מספר מסילה | מספר גליל 8 א טְּ כדי להפוך כתובת זו לכתובת מוחלטת יש להוסיף את המספר 1 לערכים אלו, כמפורט בדוגמא. 19 דוגמא: מסללהזם מסילה 0 10 ה 2 3 13 12 מסילה ו מסילה 1 14 5 6 7 גליל ו גליל 0 = א = מספר רשומות במסילה 2 = ]א = מספר מסילות בגליל .= % = מפתח הרשומה המבוקשת 7 א, 83 =-- 8-8 הרשומה המבוקשת נמצאת במקום הרביעי (1+ 3) במסילה. : 1 בּ. 0 =-- 2 הרשומה המבוקשת נמצאת בגליל הראשון (0) במסילה השניה (1 + 1). הכתובת המתקבלת : מספר סידורי | מספר מסילה | מספר גליל כתובת יחסית : 3 1 0 כתובת מוחלטת: 4 2 1 100 פרק שביעי אינדקטים משניים (א1068 ץ56600081) 1 מבוא 2 מפתת משני 3 מבנה ושימוש באינדקס משני 4 סיכוס 5 שאלות בפרק זה נציג את השיטה המאפשרת גישה לקבצים בעזרת מפתחות נוספים למפתח הראשי. 11 1 מבוא שיטות ארגון הקבצים שהוצגו עד כה משתמשות במפתח אחד בלבד כמפתח חיפוש. במערכות המידע הממוחשבות המתקדמות התומכות באיחזור נתונים מהיר יש לבנות מנגנונים לאיחזור הרשומות לפי מפתחות נוספים שאינם מפתחות הסדר הקבוע של הקובץ. לדוגמא, במערכת לניהול כוח אדם יתכנו דרישות לגישה לרשומות לפי מספר עובד, מספר המחלקה של העובד או מספר הפרויקט בו הוא מועסק. השיטות שהוצגו עד עתה מאפשרות את הגישה לרשומות רק לפי מפתח אחד. בפרק זה נציג שיטה המאפשרת גישה לקבצים לפי מפתחות נוספים. 2 מפתת משני (ע6א צֶז5600004) לכל רשומה יש מפתח סדר אחד המשמש בדרך כלל גם כמפתח חיפוש. זהו המפתח הראשי של הקובץ (ע86 /זגחזוז?) אשר משמש את המערכת לניהול קכצים לבניית אינדקס או. לחישוב הכתובת של הרשומה. בנוסף למפתח הראשי ניתן להגדיר מפתח משני אחד או יותר למטרות שליפת הרשומות, מכיון שזהו תפקידם העיקרי. מפתח ראש? כמות מספר | מספר במלאי | מחסן | קטלוגל מפתח משנ? תרשיסם 7-1: דוגמא למפתח ראשי ומשני בקובצ מלאי על מנת לאפשר גישה לרשומות לפי המפתח המשני יש לבנות אינדקס אחד נוסף. אינדקס זה יכיל כניסה אחת עבור כל ערך שהמפתח המשני קיבל, ואת רשימת כל המפתחות הראשיים המכילים ערך זה, כפי שמוצג בתרשים 7-2. = 3 רשימת מפתחות ערך מפתח משנ?ל ראשיים תרשים 7-2: מבנה רשומת אינדקס משני 13 האינדקס המשני ממוין לפי המפתח המשני ולכן ניחן לבצע בו חיפושים גם לפי מפתחות חלקיים (ע66 זסן19א) בדומה לחיפוש בשיטת הארגון האינדקס סדרתי. בגלל ההיפוך בין המפתח המשני והראשי באינדקס המשני נהוג גם לקרוא לאינדקס המשני אינדקס הפוך (116 166ז6עח1). דוגמא: קובץ מלאי מכיל את הרשומות שבהן המפתח הראשי הוא מספר קטלוגי והמפתח המשני הוא מספר המחסן. לכל ערך שהמפתח המשני מקבל נבנה כניסה באינדקס המשני המכילה את רשימת המספרים הקטלוגיים בהם הערך הזה מופיע. אינדקס משני - ממוין לפל מספר מחסך קובץ מלאי ממוין לפי מס. קעלוגי 15 8 וו18 תרשים 7-3: מבנה קובץ עס שני מפתחות ומבנה האינדקס המשני החיפוש באינדקס המשני מתבצע לפי מספר מחסן. כאשר מאתרים רשומה מבוקשת (מספר מחסן רצוי) מקבלים את רשימת כל הרשומות בקובץ בהן מופיע המחסן הזה. לדוגמא, הכניסה הראשונה באינדקס המשני מצביעה על שלש רשומות המכילות את הערך 01 בשדה "מספר מחסן". בעורת המפתחות הראשיים ניתן לגשת לקובץ הנתונים ולשלוף את הרשומות, כפי שמוצג בתרשים 7-4 אינדקס משנל?ל מפתח מפתח נתונים תרשים 7-4: תרגוס מפתח משני לראשי בעזרת האינדקס המשני 14 הגישה לקובץ הנתונים היא לפי המפתח הראשי בלבד, שהוא מפתח הסדר הרגיל של הקובץ. לכן קובץ הנתונים יכול להיות בארגון אינדקס סדרתי או בארגון לגישה ישירה. לדוגמא, אם קובץ הנתונים הוא קובץ אינדקס סדרתי נקבל את המודל המוצג בתרשים 7-5. נתונים אינדקס ראשי 6 של הקובן ----=] אינדקס משנל תרשים 7-5: אינדקס משני ואינדקס סדרתי האינדקס המשני יכול להכיל מספר רמות אינדקס, בדומה לאינדקס הראשי, כדי ליעל זמן החיפוש בו. מתוך המודל הזה ניתן לראות שבניית האינדקס המשני אינה משפיעה על הנתונים המופיעים בקובץ הנתונים מאחר והגישה אליו מתבצעת בצורה הרגילה. הגדרת מפתחות משניים ב-60801 , בדוגמא שלפנינו קובץ הנתונים בנוי כקובץ אינדקס סדרתי עם מפתח ראשי: מספר קטלוגי (152-64141.0621]א). בנוסף מוגדר המחסן (א154 4)א) במפתח משני עם ערכים חוזרים. הוראת 551021 במשפט 17 מתיחסת לשני קבצים -- לקובץ הנתונים ולקובץ האינדקס המשני. בתוך תוכנית קובול ניחן לגשת לרשומות הן לפי המפתח הראשי והן לפי המפתח המשני. את המפתח המשני מגדירים במשפט 551.07 בצורה דומה להגדרת המפתח הראשי. צצ אא סד א4550 ם1--צג ]וא 55107 , ספאפפא 5 אסזד 12 א , 15 צמא 6080סת | אא 5 צסא כת0ס6סת פדהאתפד1ה 5 דט . 16זא ג אצכ 15 פכס1א 400585 15 .אסופוצוס מאשספ6סא? .11₪ת-צג ]וא דנוקאז אמקס .אא סד 04 פצסוא אא אאחד 155 דסא צפא ם11ת-צג ]וא דת דפ .סאטסת-דסא סד 00 צםא פ411צאז צספא סו1זג צא ם11ת-צג ]וא כאפת א [אתסת הפק 1000 ןד ואס אפק סאפ דג 115ם-צג ]וא כ גשה .50% א 08 הפק 4 = א54ה אא חן .009 0070 בדוגמא זו יש פנייה לאינדקס המשני לרשומה עם מפתח מחסן 04. פקודות ₪5 הבאות מביאות בזו אחר זו את כל הרשומות בהן מופיע המחסן 04. במקרה זה מפתח ההתיחסות (06ח6ז6]6ג -01-ע86) הוא המפתח המשני ולכן המצביע מורה על האינדקס המשני. כאשר מבצעים פקודת קריאה בעזרת המפתח הראשי, מפתח ההתיחסות משתנה למפתח ראשי והמצביע משתנה בהתאם. שיטה זו מאפשרת גישות לקובץ לפי מפתח ראשי ומשני באותה תוכנית וקבלת הרשומה הבאה (דא םא כ /85) בהתאם. בדוגמא הנ"ל התוכנית בודקת אם המפתח המשני השתנה כדי לדעת אם היא סיימה לקרוא את כל הרשומות עם מחסן 04. קיימות מערכות לניהול קבצים המודיעות באופן אוטומטי למשתמש שהערך של המפתח המשני התחלף. 16 3 מבנה ושימוש באינדקס משני כאשר מגדירים לאותו קובץ מספר מפתחות משניים יש לכל אחד מהמפתחות אינדקס נפרד. באינדקס תהיה כניסה אחת עבור כל ערך שהמפתת המשני מקבל בקובץ. בדוגמא שבתרשים 7-6 מוצג קובץ נתונים המאורגן לפי מפתח ראשי של תעודת זהות (ת.ז.). לקובץ יש שני אינדקסים -- אחד עבור גיל ואחד עבור מקצוע. אפשר להחזיק ברשומת האינדקס את מספר תעודת הזהות כפי שהוצג קודם. אך אם נחזיק בתוך האינדקס לא את המפתח של הרשומה (כמו תעודת זהות) אלא את הכתובת הפיסית הרי שהגישה מהאינדקס לנתונים תהיה מהירה ביותר. ניחן לעשות זאת אם קובץ הנתונים מאורגן בארגון ישיר עם ייחוס לפי טבלה. אינדקס גיל אינדקס מקצוע תרשים 7-6: שֶנִי אינדקסיס משנים לאותו קובצ החיפוש באינדקס המשני יכול להתבצע תוך שימוש במספר רמות אינדקס בדומה לארגון אינדקס סדרתי או על-ידי ארגון קובץ האינדקס כקובץ בגישה ישירה וחישוב הכתובת. הבעיה בניהול האינדקס המשני נובעת ממספר המופעים המשתנה של מפתחות ראשיים לכל אחד מהערכים האפשריים של המפתח המשני. קימות מספר אפשרויות לניהול האינדקס המשני. א שרשור רשומות בקובץ הנתונים. בשיטה זו כל הרשומות בעלות ערך זהה של מפתח משני משורשרות, באינדקס מופיעה רק כניסה אחת לכל ערך של המפתח המשני המצביעה על הרשומה הראשונה. ראה תרשים 7-7/1. ב. | שרשור רשומות תואם חומרה. בשיטה זו משורשרות כל הרשומות בעלות ערך זהה של מפתח משני המופיעות באזור חומרה אחד, למשל גליל בדיסק. באינדקס מופיעות מספר כניסות לאותו ערך של המפתח המשני, כמספר אזורי החומרה בהן נמצאות הרשומות. ראה תרשים 2. 17 מפתח משנל קובץ נתונים המה ראשל אינדקס משני מספר מספר מספר קטלוגל קטלוגי מחפן שו א הגש 8 וס 08 15 08 6 | ה ו/7- 7: שרשור רשומות הקובץ אינדקס משני תואם קובץ נתונים חומרה מספר קטלוגי מספר מר | 2 צ| 7 | | 6 ]וה 2 7-7: שרשור רשומות תואם חומרה קובץ נתונים אינדקס משנ?ל במלאי מחסן קטלוג? מתסן צאט ששחמ 0 ! ד -] מא | = | | ₪ | ו | 08 3 : שרשור אינדקס משנל תרשים 7-7: מבנים שונים לניהול אינדקס משני ג שרשור רשומות האינדקס. בשיטה זו השרשור הוא של רשומות האינדקס ולא של רשומות הנתונים. ראה תרשים 7-7/3. 108 ד. = מפות בינריות (ק8/א 844). לכל רשומה בקובץ יש באינדקס רצף של סיביות. כל סיבית מייצגת תכונה או ערך של שדה המשמש כמפתח משני. אם הרשומה מכילה ערך מסוים הסיבית תופעל (1) או שלא תופעל (0). שיטה זו נוחה מאד כאשר המפתח המשני יכול לקבל מספר מצומצם של ערכים בדידים. אם המפתח המשני יכול לקבל ערכים רציפים יש לבצע חלוקה של התחום. גיל מפתח ו ו נקב ור | 106 תרשיס 7-8: שימוש במפה בינרית בתרשים 7-8 מוצגת דוגמא שבה מבקשים לדעת את רשימת כל העובדים אשר גילם בין 25 ל-40. לשם כך נסרוק את העמודה המתאימה בתוך האינדקס וכאשר "נפגוש" בסיבית מופעלת נדע שהתנאי המבוקש מתמלא. נשלוף את המפתח הראשי .מטבלת האינדקס ונעבור לגישה לקובץ. מתוך הדוגמא המפורטת כאן אפשר להיווכח בעובדה שניתן בשיטה זו לסרוק במעבר אחד שני אינדקסים משניים או יותר, ואף להתנות אינדקס אחד באינדקס שני. לדוגמא, אפשר לחפש "זכר" וגיל "עד 24". בדוגמא הנ"ל הרשומה עם מפתח ראשי 139 ממלאת את התנאי. כפי שניחן לראות השימוש באינדקס המשני אינו קשור כלל במבנה של קובץ הנתונים. אין בקובץ הנתונים מצביעים מיוחדים למטרה זו ולמעשה האינדקס המשני "שקוף" מבחינת קובץ הנתונים. בגלל עובדה זו ניתן בקלות רבה להוסיף מפתחות משניים או לבטל מפתחות משניים בהתאם לצורך מבלי לבצע שינויים כלשהם מקובץ הנתונים. התוכנה לניהול נתונים מספקת בדרך כלל תוכנית שירות (ע1[18ו/1) המאפשרת בניית אינדקסים משניים ועדכונם בהתאם לצורך. פרמטרים תוכנית שירות אינדקפ משני נתונים תרשים 7-9: בנית אינדקט משני בעזרת תוכנית שירות 109 בשיטות הארגון הנוספות שנדון בהן בהמשך הגישה לרשומות שלא לפי המפתח הראשי מחייבת שימוש במצביעים המופיעים בתוך רשומת הנתונים עצמה. על המשתמש לבחור בזהירות רבה את השדות בקובץ שישמשו כמפתח משני. מאחר והמערכת לניהול קבצים צריכה לעדכן באופן אוטומטי את האינדקס המשני, הרי שעדכון הקובץ הראשי גורמת גם לעדכון הקובץ המשני ולכן משך זמן העדכון ארוך יותר. יש לבנות אינדקס משני רק עבור מפתחות שידוע שיהיו בשימוש רב מאחר ובניית מספר רב של מפתחות משניים שאינם בשימוש מגדילה את זמן העדכון ללא כל צורך. תרשים 7-10 מציג דוגמא של בניית מפתחות משניים החופפים בחלקם עם המפתחות הראשיים. נשתמש בדוגמא שהובאה בפרק הדן בתכנון רשומוח. לפון אורך / מספר פרטים רשומה / זהות אישיים |/ שנת |ארץ נת אורך קסת |מספר פרטים עליה לידה ידה שומה / 8 זהות דמוגרפיים / סוג חאריך אורך תאויך | קוד | | מספר השכלה תעודה | |סיום רשומה התחלה |השכלה זהות אורך האריך |קוד רשומה |קורס | |קורס זהות מפתח משנל מפתח ראשי תרשיס 7-10: דוגמא לבנית מפתחות משניים קורסים נבדוק את אפשרויות שליפת הנתונים מתוך קובץ המאורגן בצורה זו: שליפת רשומת פרטים אישיים -- נעביר למפתח מספר זהות וסוג רשומה ./ שליפת רשומת פרטים דמוגרפיים -- נעביר למפתח מספר זהות וסוג רשומה 8. שליפת רשומת השכלה -- אם דרושה רשומה מסוימת נעביר למפתח את כל הפרטים הרלוונטיים: מספר זהות וסוג 6, קוד השכלה ותאריך. -- אם דרושות כל רשומות ההשכלה של עובד נתון נשתמש במפתח ראשי חלקי, מספר זהות וסוג רשומה 0. -- אם דרושה רשימת כל העובדים בעלי השכלה בקוד מסויים, נשתמש במפתח המשני ונעביר למפתח סוג רשומה 6 וקוד השכלה. שליפת רשומת קורס = התהליך דומה לתהליך השליפה של רשומת השכלה. 170 תכונות של מפתחות משניים המפתחות המשניים יכולים להיות משני סוגים: יחידים (6טף1ם/%), כפולים (168165!קטכ ). -- מפתח משני יקרא יחיד כאשר לכל ערך שהוא מקבל קיימת רק רשומה אחת בקובץ הנתונים בה מופיע ערך זה. -- מפתח משני יקרא כפול אם הערך שלו מופיע במספר רשומות נתונים. את רשימת כל המפתחות הראשיים בעלי אותו ערך במפתח המשני ניתן לנהל בכמה אופנים: לפי סדר ההגעה של הרשומות או במיון | לפי המפתח הראשי. רס | מקצוע | גיל | מספר | תעודת 3 1 עובר | זהות קורס | קו 2 סו ופטס פטסואט ראשל 60 סאודה םקפה תרשיס 7-11: סוגי מפתחות משנייס בתרשים 7-11 מוצגת רשומה בקובץ עובדים שבה המפתח הראשי הוא תעודת זהות. אם נגדיר את מספר העובד כמפתח משני הרי שקיימת התאמה חד"חד-ערכית בין מספר עובד ומספר תעודת זהות. לא יתכנו באותו מפעל שני עובדים להם אותו מספר עובד. אך אם נגדיר את הגיל כמפתח משני יתכנו מספר עובדים במפעל בעלי אותו גיל. שדה מסוים ברשומה יכול לחזור מספר פעמים ברשומה ולקבל ערכים שונים, כמו למשל במקרה ששומרים הסטוריה של שלשת הקורסים האחרונים בהם השתתף העובד. זהו שדה חוזר (קטסזכ) 8ח!68ק86). כאשר נבנה על השדה הזה אינדקס, יהיו מספר רשומות אינדקס אשר יצביעו על אותה רשומת נתונים כפי שמתואר בתרשים 7-12. נתונים אינדקס משנ?ל קורס | קורס 3 2 תרשים 7-12: אינדקס משני עס שדה חוזר 111 חיפוש לפי מספר מפתחות השימוש באינדקסים משניים מאפשר ביצוע חיפוש לפי מספר מפתחות (00ז568 66 0111016ו1/) בודזמנית מבלי שיהיה צורך לגשת לנתונים עצמם. נשתמש בדוגמא הקודמת של קובץ עובדים ונציג את השאילתה הבאה: "רשימת כל החרטים מתחת לגיל 40". ניתן לגשת לאינדקס משני "מקצוע" ולשלוף את כל תעודות הזהות של החרטים. לאחר מכן לגשת לאינדקס משני "גיל" ולשלוף את תעודות הזהות של כל העובדים במפעל שהם מתחת לגיל 40. רק תעודות הזהות המופיעות בשתי הרשימות גם יחד (חיתוך) עונות על השאילתה, כמוצג בתרשים 7-13. זו דוגמא לשאילתה שהתשובה עליה התקבלה מבלי שיהיה צורך לגשת לנתונים לבצע בהם סריקות נרחבות. קיימות מספר מערכות לניהול נתונים המאפשרות ביצוע חיתוכים כאלה בצורה יעילה מאד. לדוגמא מערכת לניהול בסיסי נתונים 8/5 ,12 . מערכות אלה מאפשרות שאילתות מורכבות כגון: "רשימת כל החרטים או רתכים שהם מתחת לגיל 40 ומעל 28 ומקום מגוריהם בפתח-תקוה". אינדקס משנל מקצוע רשימת כל החרטים אינדקס משני גיל מתחת ל"40 נתונים תרשיס 7-13: חיתוך בין שני מפתחות משניים 112 4 סיכוס יתרונות: אפשרות גישה לרשומה לפי מספר רב של מפתחות. מאחר והמפתחות המשניים ממויינים באינדקס ניתן לבצע חיפוש גם לפי מפתח חלקי. אפשרות ביצוע חיתוך בין מפתחות משניים מבלי שיהיה צורך לגשת לנתונים עצמם. ניתן לקרוא את הקובץ גם ללא שימוש באינדקס משני. השימוש באינדקס משני אינו גורם לכל תוספות בקובץ הנתונים עצמו. מסיבה זו ניתן להוסיף או לבטל מפתחות משניים בצורה חיצונית לקובץ הנתונים. חסרונות הטיפול באינדקס המשני יקר. כל עדכון בקובץ חייב להתבטא מיד באינדקס המשני. זמן העדכון הכולל של הקובץ עולה. הגישה לרשומה באמצעות אינדקס משני מחייבת ביצוע מספר גישות נוספות לדיסק לשם שליפת המפתח הראשי מתוך האינדקס. האינדקס עצמו תופס מקום אחסנה. 13 5 שאלות 1. מערכת מידע כוללת קובץ עובדים. יש למצוא את: -- כל העובדים הגרים בירושלים. -- כל העובדים שיש להם מעל שני ילדים הגרים בירושלים. -- כל העובדים בעלי משכורת של 10,000 שקל ומעלה ולהם יותר משני ילדים. הסבר אילו מפתחות משניים יש לבנות לקובץ. כתוב את השאילתות בתוכניות קובול. 2 הסבר כיצד ניחן לענות לשאלה 1 ללא שימוש באינדקס משני. 3 מהם השיקולים לקביעת מפתחות משניים. מדוע לא לקבוע את כל השדות ברשומה, כמפתחות משניים. 4. קובץ רופאים מכיל את הנתונים הבאים: בית חולים התמחות מספר רופא תל-השומר כירורגית 14 גהה פסיכיאטריה 108 תל-השומר ניתוחי לב 110 רמב"ם -- חיפה פנימית 117 רמב"ם -- חיפה פנימית 124 תל-השומר כירורגית 11 רמב"ם -- חיפה עיניים 141 חל-השומר פנימית 11 א. הצג את תוכן האינדקס המשני עבור "התמחות" וד"בית-חולים". ב. | האם תוכנו של האינדקס ישתנה אם הקובץ יהיה בארגון אינדקס סדרתי או בארגון ישיר? 14 פרק שמיני ארגון נתוניס מורכב -- שרשוות (8מ50700111765-02081 12818 א16קותס2)) 1 מבוא 2 מבני נתוניס משורשריס 3 שרשרת פשוטה 4 מבני שרשרות מיוחדיס 5 טבעת פשוטה 6 מצביע לרשומת מוביל 7 שרשרת מקומות פנוייס 8 תכנון שרשרות 9 סיכוס 0 שאלות 1 נספת -- חישוב גודל קבוצה אופטימלי בשרשרת דילוגיס בפרק זה נציג מבנים לינאריים של נתונים המשתמשים בשיטות שונות של שרשור רשומות. 15 1 מבוא בשיטות הארגון שהוצגו בפרקים קודמים קיימות מספר מגבלות אשר הביאו לחיפוש דרכים לעקיפתן: א קיים קשר הדוק בין המפתח הלוגי לבין המיקום הפיסי של הרשומה בקובץ. ב. | המפתח מאפשר איתור של רשומה בודדת. השיטות לא נותנות תשובה למקרה שבו יש לאתר אוסף של רשומות (לדוגמא, כל העובדים השייכים למחלקה מסוימת). ג. | הטיפול בהוספת רשומות חדשות מסורבל מאד. ברוב השיטות קיימים מנגנונים לטיפול בגלישות, דבר המוריד את הביצועים. בחלק מהשיטות יש להגדיר את השטח מראש הרשומות החדשות. בפרק זה נציג מספר שיטות לארגון נתונים בהם קיימת אי-תלות בין המפתח הלוגי של הרשומה לבין כתובתה הפיסית בדיסק. השיטות האלה משתמשות במנגנון של מצביעים (1615ח01) להשגת אי-התלות. אי-התלות מונעת את הצורך במנגנונים מיוחדים לטיפול בגלישות ובצורך להגדיר מראש שטחים לגלישות. יש לציין שהשיטה של אינדקסים משניים מאפשרת השגת אי-תלות בין המפתח המשני והמיקום של הרשומה, אבל מאחר והמפתח המשני מתורגם למפתח ראשי מתקבלת התלות בצורה עקיפה. האינדקסים המשניים מאפשרים גם שליפת אוסף רשומות בעלי תכונה זהה. הבעיה בשיטת האינדקס המשני היא זמן העדכון הגדול הדרוש לטיפול באינדקסים. מבחינים בין שלשה סוגי מצביעים: -- מצביע המכיל כתובת מוחלטת (4.001655 40501016/) של הרשומה ביחידת הציחסון,שיטה זו מאפשרת את הגישה המהירה ביותר לרשומה המבוקשת. -- מצביע המכיל כתובת יחסית (061658/ 8618/146) של הרשומה ביחידת האיחסון. הכתובת היחסית אינה תלויה בכתוכת המוחלטת של הרשומה. שי- טה זו מאד נוחה מאחר וניתן להזיז את הקובץ ביחידת האיחסון ללא שינוי בתוכן המצביעים השונים. הקובץ גם לא חייב להיות מאוחסן ברצף אחד. הגישה איטית יותר יחסית לכתובת המוחלטת מאחר ויש לבצע פהליך תרגום בין הכתובת היחסית לכתובת המוחלטת. רוב המערכות משתמשות בשיטה זו. -- מצביע המכיל מפתח של הרשומה (ז16ת01/ 6ו!סטגמע5). על מנת להגיע לרשומה אשר המפתח שלה מופיע במצביע, יש לבצע את התהליך הרגיל של תרגום בין מפתח לכתובת, אם ע"י אינדקסים ואם ע"י תהליך חישובי 17 כלשהו. שיטה זו מאפשרת את הגמישות הרבה ביותר מאחר וניתן להזיז גם רשומה בודדות ממקומה מבלי שתוכן המצביע ישתנה. מאידך זוהי השיטה האיטית ביותר בגלל הצורך בתרגוס מפתח-כתובת. מבני הנתונים המשתמשים במצביעים לניהול המיקום והקשרים בין הרשומות הינם אבני הבנין של רוב המערכות המתקדמות לניהול בסיסי נתונים (כגון 1/1, 15אכ1, .41 107) ומכאן החשיבות הרבה בהבנתם. מערכות ההפעלה משתמשות גם כן במבני שרשרות לניהול תורים של משימות המוטלות עליהן, או של אירועים שיש לפקח עליהם. 18 2 מבנלי נתוניס משורשריס (1010076ו517 12818 2081860/1,15%)) השיטות שהוצגו בפרקים קודמים מאפשרות שליפת רשומה בודדת. כאשר קיים קשר כלשהו בין הרשומות (שייכות לאותו נושא או לאותו פרט באוכלוסיה) ניתן לייצג אותו רק עלדידי הקירבה הפיסית ביניהן. דוגמא לכך ניתן למצוא בשיטת ארגון האינדקס הסדרתי שבו הרשומות ממוינות באופן פיסי לפי המפתח. הבעיה מתעוררת כאשר רשומה אחת קשורה במספר קשרים שונים לרשומות שונות. במקרה זה שיטת הקירבה הפיסית מחייבת החזקת הרשומה מספר פעמים בקובץ, דבר שאינו אפשרי בקבצים גדולים. השיטה לטיפול בבעיות אלה היא השימוש במצביעים. המבנה האופיני של רשומה במבנה נתונים המשתמש במצביעים מופיע בתרשים 8-1. המצביע הינו שדה המכיל כתובת של הרשומה הבאה בקשר בין הרשומות. מאחר ורשומה אחת יכולה להשתתף במספר רב של קשרים היא עשויה להכיל מספר כלשהו של מצביעים. הרשומה יכולה להכיל גם שדה מפתח ראשי כלשהו, המשמש לאיתור מהיר שלה. מצביעים נתונים תרשיס 8-1: מבנה רשומה במבנה נתוניס עס מצביעיס אחד היתרונות של מבנה נתונים משורשר הוא יכולתו לטפל בקלות יחסית באינפורמציה בעלת אופי דינמי. לדוגמא ביישום של ניהול רכש יש לשמור אינפורמציה על הלקוח וכל ההזמנות שלו. מאחר ומספר ההזמנות ללקוח משתנה באופן קיצוני בין לקוחות והן כפונקציה של הזמן, יהיה זה בזבזני מאד לנהל אינפורמציה כזאת ברשומות בעלות אורך קבוע. שיטה יעילה יותר היא לקשור את רשומת הלקוח אל רשומות ההזמנה וליצור מבנה משורשר. זוהי דוגמא לשרשרת המכילה שני סוגי רשומות, רשומות לקוח ורשומות הזמנה. רוב המערכות לניהול בסיסי נתונים משתמשות במבנה זה לקישור בין סוגי רשומות. החסרון העיקרי של מבני נתונים משורשרים נובע מהעובדה שסריקת שרשרת דומה לסריקת קובץ סדרתי. מספר ההשוואות הממוצע בשרשרת בעלת א רשומות והסתברות חיפוש שווה תהיה כמו בקובץ סדרתי. ב 1-9 בגלל הגמישות הרבה של השיטה, קיימים מספר רב מאד של מבנים המשתמשים במצביעים. נציג בהמשך את המבנה הפשוט ביותר -- שרשרת -- וכיצד ניתן לבנות ממנו את כל המבנים המורכבים. 1|00 נשתמש בסימונים הבאים: .% -- מפתח לוגי של רשומה 1 4 -- הכתובת הפיסית של רשומה 1 % -- תוכן המצביע ברשומה 1. אם הוא מצביע על רשומה ( למשל, נרשום (4)8=ת 3 שרשרת פשוטה (ם681 16קו5) שרשרת פשוטה מוגדרת כאוסף רשומות הקשורות ביניהן בעזרת מצביעים. סריקת השרשרת מתבצעת על ידי קריאת רשומה ושימוש במצביע שלה לקריאת הרשומה הבאה. וצן| |. | / תרשיס 8-2: שרשרת פשוטה יש לעשות הבחנה בין המיקום הפיסי של הרשומה בקובץ לבין מקומה הלוגי בשרשרת. בתרשים 8-3 מוצגות מספר רשומות במסילה בדיסק. רשומה ,% נמצאת לפני רשומה ,% מבחינה פיסית אבל בגלל השימוש במצביעים רשומה ,% מקדימה את ,% מבחינה לוגית. מסילה בדיסק מבנה לוג? תחילת המסילה מבנה פיס? תרשים 8-3: מבנה פיסי ולוגי של שרשרת הוספת רשומה חדשה לקובץ יכולה להתבצע במקום פיסי פנוי כלשהו בעוד הקישור הלוגי שלה מתבצע בעזרת המצביעים. לדוגמא, אם יש להוסיף רשומה חדשה עם מפתח ,% המקיים את התנאי ,%>,%>,8 מקומה הלוגי של הרשומה הוא בין רשומות ,% ו7,%. בשיטות הרגילות יש צורך להזיז את רשומה ,8 ו%7 כדי לפנות מקום לרשומה החדשה. השימוש במצביעים מאפשר הוספת הרשומה למקום פנוי בסוף הקובץ. עדכון המצביעים ישמור על הסדר הלוגי של הרשומות כמוצג בתרשים 8-4. 11 רשומה (א%)ה4=ת חדשה (א)4= תרשיס 8-4: הוספת רשומה חדשה ,א לשרשרת סריקת השרשרת, תוך שימוש במצביעים קובעת את הסדר הלוגי ,%, ,%, ,א, ו. ביטול רשומה מהקובץ מתבצע גם-כן על-ידי עדכון המצביעים. תרשים 8-5 מדגים 0 רשומה שהמפתח שלה ,%. המצביע ,1 מצביע לאחר הביטול על רשומה ,1 רשומה מבוטלת . צ / 1 (3א) 4 =.5 תרשים 8-5: ביטול רשומה ,א בשרשרת על מנת להתחיל את סריקת השרשרת יש לדעת את הכתובת של הרשומה הראשונה בשרשרת ולשם כך דרושה רשומת מוביל (ז116806 חות2)). בתרשים 8-6 הרשומה הראשונה בשרשרת היא רשומה ,%, לכן רשומת המוביל מצביעה עליה. את רשומות המוביל ניתן לשמור במקום מיוחד בקובץ (למשל רשימה פיסית ראשונה) ולהעתיק אותה לזכרון מיד עם פתיחת הקובץ. אל מובל 0% אא תרשיס 8-6: רשומת מוביל המצביעה על תחילת השרשהת הרשומות בקובץ אינן חייבות להיות קשורות בשרשרת אחת בודדת ואפשר ליצור מספר שרשרות לנושאים שונים. לדוגמא, ניתן לשרשר את כל העובדים במחלקה. במקרה זה נקבל מספר שרשרות כמספר המחלקות במפעל, ולכל אחת מהן תהיה נקודת התחלה. מקובל לכנות מבנה זה -- | ,10108 ם81) 466685 באשר לפנינו מספר נקודות התחלה או גישה לקובץ אחד. 112 חלוקה תואמת חלוקה תואמת אינדקט תוכנה חומרה מחלקה א' תרשיס 8-7: מבנה שרשרת עס מספר נקודות כניסה ניתן לחלק את השרשרת לתת-שרשרות הן משיקולי תוכנה והן משיקולי חומרה. חלוקת השרשרת לתת-שרשרות משיקולי חומרה ו בעת מהצורך ליעל את תהליך החיפוש ומקובל לקרוא לשרשרת כזו, שרלרת תואמת חומרה (1-151 220066 810או11820 ,1.18% ז8!ט!201)). ניתן לבנות תת-שרשרת כך שכל הרשומות בה תופענה באותו אזור חומרה, גליל בדיסק למשל: סריקת תת-ש- רשרת כזאת אינה מחייבת הזזת ראשי קריאה/כתיבה של הדיסק. לכל תת-שרשרת יש נקודת כניסה נפרדת באינדקס מיוחד המכיל מצביע לרשומה הראשונה בכל אזור חומרה. דוגמא לשרשרת תואמת חומרה מופיע תרשים 8-7. לשליפת רשומות העובדים השייכים למחלקה מסוימת יש לאתר תחילה את רשומת המוביל של המחלקה. אחת האפשרויות לניהול רשומות המוביל היא שמירתם בקובץ נפרז לגישה ישירה או לגישה בעזרת אינדקס. תרשיס 8-8: גישה ישירה לרשומות מוביל ניתן להחזיק ברשומות המוביל מידע נוסף כגון שם המחלקה ועוד. מקובל לשמור ברשומת המוביל גם את מספר הרשומות בשרשרת. מונה זה יאפשר מתן תשובות מהירות לשאילתות מסוימות ללא סריקת הקובץ (למשל, "מה מספר העובדים במחלקה ב'?"). בנוסף משמש המונה לקבלת החלטה לשרשרת החיפוש כאשר יש לסרוק מספר שרשרות. נושא זה יובהר בהמשך. 13 לרשומה הראשונה בשרשרת, יש בנוסף לרשומת מוביל המאפשרת גישה קיימות מספר אפשרויות לציון לדעת מיהי הרשומה האחרונה בשרשרת. נקודות הסיום של השרשרת. י ה זו נשתמש בסימן מיוחד (כוכבית למשל) לסימון א. סימון מיוחד: בשיט הרשומה האחרונה. כאשר סורקים את השרשרת ומתקבל מצביע אשר מכיל את הערך המיוחד (* = 2) פרוש הדבר שהגענו לסוף השרשרת. תרשים 8-9: סימון סיוס שרשרת הצבעה לרשומה אחרונה: בנוסף לרשומת מוביל נשמור רשומה נוספת המצביעה על הרשומה האחרונה בשרשרת. פתרון אחר הוא לשמור מצביע נוסף בתוך רשומת המוביל, אשר מורה על הרשומה האחרונה בשרשרת. שיטה זו מאפשרת גישה מידית לסוף השרשרת ללא סריקת השרשרת. מצביע זה מייעל מאד את תהליך הוספת רשומות חדשות לקובץ מאחר ויש לעדכן מצביע זה בלבד. ב. תרשים 8-10: מבנה שרשרת עס רשומת מוביל ורשומת סיוס שיתוף רשומה במספר שרשרות (111115ט]/) אפשר לשתף רשומה אחת מסוימת במספר שרשרות ונשתמש לשם כך בדוגמא של קובץ עובדים המוצגת בתרשים 8-11. נשרשר את כל רשומות העובדים במחלקה מסוימת ואת רשומות כל העובדים במקצוע מסוים. לשם הפשטות נניח כי במפעל רק שתי מחלקות ושני מקצועות ולכן תהינה ארבע נקודות התחלה. ניתן לראות שאותה רשומה משתתפת בשתי שרשרות שונות. 144 עבור כל שרשרת הרשומה מכילה את מפתח הסדר שלה ואת המצביע לרשומה הבאה, ולכן יהיו לכל רשומה שני מפתחות ושני מצביעים. תרשים 8-11: שיתוף רשומה בשתי שרשרות הוספת רשומה חדשה מחייבת עדכון המצביעים בשתי השרשרות בהתאם למקום הלוגי שלה בכל אחת מהן. נניח ששרשרת המחלקה ממוינת לפי תעודת הזהות של העובד ושרשרת המקצוע ממוינת לפי הדרגה המקצועית. בהוספת רשומה חדשה יש לקבוע מהו מקומה בכל אחת מהשרשרות. לדוגמא נוסיף רשומה חדשה אשר צריכה להיות ראשונה בשרשרת המחלקה (ראשונה במחלקה א') ואחרונה בשרשרת מקצוע (כלומר אחרונה ברשימת "רתך"). ביטול רשומה משרשרת אחת אינו מאפשר את ביטולה הפיסי מאחר והיא עדיין שייכת לשרשרת השניה. לכן יש רק לסמן את הרשומות המבוטלות. רק רשומה מבוטלת מכל השרשרות בהן היא משתתפת ניתנת לביטול פיסי. מספר מחלקה מקצוע תרשים 8-12: הוספת רשומה המשתתפת בשתי שרשרות 15 תת"שרשרת (מו8ח6-סט9) קיימת אפשרות להצביע מתוך רשומה בשרשרת אחת אל רשומות בתת--שרשרת אחרת. נשתמש בדוגמא שבתרשים 8-13: השרשרת הראשית מכילה את רשומות כל החולים המאושפזים בבית החולים. לכל רשומת חולה נבנה תת"שרשרת המכילה את כל רשומות האבחנה של החולה. בדוגמא זו לכל רשומת חולה יש שני מצביעים: מצביע אחד אל הרשומה הבאה בשרשרת החולים, ומצביע שני אל הרשומה הראשונה בשרשרת רשומות האבחנה של החולה. ברשומות האבחנה יש רק מצביע אחד המצביע על רשומת האבחנה הבאה של אותו חולה. חולה2 אש 2 תרשים 8-13: מבנה שרשרת ותת-שרשרת 16 4 מבני שרשרות מיוחדיס - == - קיימים מספר סוגים של שרשרות המאופיינות על ידי מבנה או תכונה מיוחדת. בהמשך נסקור כמה מהם. שרשרת הפוכה (1.15% 160ז6שח1) מבנה השרשרת ההפוכה דומה בעקרון לאינדקס המשני. במקום שימוש באינדקס המכיל כניסה עבור כל הרשומות המכילות ערך מסוים של המפתח המשני, משתמשים כאן בשרשור כל הרשומות האלה ובאינדקס המצביע לרשומה הראשונה בשרשרת. שיטה זו מפשטת את בעית ניהול האינדקס המשני שבו כל כניסה באינדקס מצביעה על מספר משתנה של רשומות בקובץ. במבנה זה האינדקס מצביע על הרשומה הראשונה בלבד. דוגמא: -- קובץ הנתונים הינו במבנה שרשרת פשוטה חד-כיוונית. -- קובץ האינדקס ההפוך הינו במבנה שרשרת פשוטה חד-כיוונית. -- רשומות קובץ הנתונים מכילות בין השאר את השדות מספר עובד והגיל שלו. האינדקס ההפוך הוא על שדה הגיל. מספר עובד . 2 שרשרת הפוכה תרשיס 8-14: שרשרת הפוכה 17 מתוך התרשים אפשר לראות שבקובץ הנתונים שני מצביעים ,2 וקק. ,2 מצביע על הרשומה הבאה מבחינה לוגית לפי מספר עובד. ,? מצביע על הרשומה הבאה שהעובד שלה באותו גיל. בקובץ האינדקסים שני מצביעים ,2 ו-ת. 5 מצביע על הרשומה הראשונה בשרשרת הגיל. ,2 מצביע על הרשומה הבאה מבחינה לוגית לפי גיל העובד. שרשרת דוזכיוונית (ם081?) [8ת60)10זוכ -81) בדוגמאות הקודמות הוצגו שרשרות חד-כיווניות בלבד. בשרשרות אלה, תהליך הוספה או ביטול רשומה הינו מורכב. על התוכנית לקרוא את השרשרות קדימה ול"זכור" את הכתובת הקודמת על מנת לאפשר את עדכון המצביעים. אם ניתן להגיע לרשומה בשרשרת בצורה ישירה כלשהי, אין אפשרות לדעת מיהי הרשומה הקודמת לה. בעיה נוספת היא שבמקרה של תקלה באחד המצביעים אין אפשרות לשחזר את השרשרת. על מנת להתגבר על בעיות אלה ניתן להשתמש בשרשרת דו-כיוונית כפי שמוצג בתרשים 8-15. במבנה זה יש בכל רשומה שני מצביעים -- אחד לרשומה הבאה מבחינה לוגית ואחד לרשומה הקודמת מבחינה לוגית. שני המצביעים מאפשרים סריקת השרשרת בשני הכיוונים, לפנים ולאחור. 1" -- מצביע לרשומה הכאה מבחינה לוגית 1 -- מצביע לרשומה הקודמת מבחינה לוגית -- מספר הרשומה של המצביע תרשים 8-15: מבנה שרשרת דו כיוונית קיימים מצבים בהם סריקה לאחור חוסכת מיון. לדוגמא נניח שהשרשרת מכילה את כל האבחנות של חולה מסוים לפי תאריך האבחנה. אם נרצה את שלש האבחנות האחרונות של החולה ניתן להתחיל בסריקת השרשרת מהסוף (אם קיים מצביע לסוף) ולשלוף את שלש הרשומות הראשונות (כלומר האחרונות בשרשרת). שני המצביעים מגדילים את אמינות המבנה מאחר ותקלה במצביע אחד מאפשרת את שחזורו על-ידי סריקת השרשרת מכיוון ההפוך. יש לזכור עם זאת ששימוש בשני מצביעים תופס מקום רב יותר בתוך הרשומה ותהליך העדכון מורכב יותר מאחר ויש לטפל בשלש רשומות בעת העדכון. |08 | | | אלגוריתם להוספת רשומה בשרשרת דורכיוונית נדגים כאן אלגוריתם פשוט להוספת רשומה חדשה לשרשרת דורכיוונית. האלגוריתם אינו מטפל במקרה שהרשומה החדשה היא בהתחלת השרשרת או בסופה. אך ניתן להרחיב אותו גם למקרים אלה. הגדרות: 41 כתובת רשומה 1 ₪ מצביע קדימה ברשומה 1 א מצביע אחורה ברשומה 1 (4)6 = (6%40ג וק 51 (40%4 = [ קק 1 (400%/1 = מל נוסיף לקובץ רשומה ( אשר כתובתה תהיה ,. מבחינה לוגית רשומה זו נמצאת בין רשומה ! לרשומה 1+1. תהליך הוספת הרשומה ועדכון המצביעים מוצג בשלבי הוראות לביצוע: 1 .2 אתר מקום פנוי הבא מתוך רשימת מקומות פנויים. המקום יסומן ב-ן. עדכן רשימת מקומות פנויים. קרא רשומות בשרשרת לפי מצביע קדימה. המשך לקרוא עד אשר המפתח של הרשומה שקראת גדול ממפתח הרשומה החדשה ((% < 1א%) עדכן מצביע אחורה ברשומה 1+1. (1קנח6) -- כתובת זמנית עבור מצביע לאחור). (81) = |קות6! = 281+1; ((8) 4 = 081+1. כתוב רשומה 1+ 1 חזרה במקומה. קרא רשומה שכתובתה :4. בצע עדכון מביעים קדימה. (2 תוחפ -- כתובת זמנית למצביע קדימה). 2 קות0 =ן ק?; ((8) = וחק כתוב רשומה 1 חזרה במקומה. עדכן מצביעים ברשומה החדשה. 2 16 = [ן 2 ;2 קה6? = ן 78 כתוב רשומה | במקום [4. סוף תהליך הוספת רשומה חדשה. |99 שרשרת דילוגים (ח81ת2)-ק5%1) שיטת שרשרת הדילוגים פותחה כדי לייעל את תהליך החיפוש בשרשרת. מבחינה לוגית השרשרת היא מבנה סדרתי פשוט ולכן אם יש בה א רשומות זמן החיפוש יהיה יחסי ל-1/2. בשיטה זו מחלקים את השרשרת לתת-קבוצות המכילות מספר רשומות קבוע ומשרשרים יחדיו את כל הרשומות הראשונות בכל קבוצה בסדר הפוך. לצורך חיפוש מהיר נכנסים לשרשרת דרך כניסת הדילוג. בודקים את המפתח הדרוש לעומת המפתח הנמצא בכניסת הדילוג. אם המפתח הדרוש גדול יותר יש לפנות ולהתחיל בחיפוש סדרתי בתוך תת הקבוצה של השרשרת אשר יכיל פָא! השוואות לכל היותר. אם המפתח הדרוש קטן מהמפתח בכניסת הדילוג, ניתן להשתמש במצביע הדילוג ולדלג לקבוצה הבאה ושוב לבצע את תהליך ההשוואה. הדילוג נעשה בכיוון של סדר יורד. מספר ההשוואות במקרה זה יהיה + 0 הגודל האופטימלי של תת-הקבוצות היה | 38 ההוכחה מופיעה בנספח לפרק זה. אצ = שא שרשרת לינארית (ח91ח?) ז68ת1 1) שרשרת זו היא מבנה לינארי של נתונים הקשורים ביניהם בקבוצה סודרת אחת. הוספת רשומה חדשה או ביטול רשומה קיימת מתבצעת באחד הקצוות של השריטרת. המבנה הזה לא יכול להכיל או להצביע על שרשרות אחרות ואינו יכול להכיל לולאות. קיימים שלושה מבנים לינארים נפוצים: א. מחסנית (5180%): שרשרת לינארית שבה כל ההוספות והביטולים מתבצעים בקצה אחד של השרשרת. מבנה זה מזכיר תור במבנה 1150, כלומר האחרון שנכנס הוא הראשון שיוצא. יציאה כניסה התחלה מחסנלת ססד תרשים 8-17: מחסנית 10 ב. תור (20606)): שרשרת לינארית שבה ההוספות מתבצעות בקצה אחד והביטולים מתבצעים בקצה השני. מבנה זה מזכיר תור במבנה 1=0ת, כלומר מי שנכנס ראשון יוצא ראשון. כניסה תור יציאה ו תרשיס 8-18: מבנה תור ג. | תור כפול (6ט6טף 860ח6 20016 --- 6₪6טף26): שרשרת שבה ההוספות והביטולים יכולים להתבצע בכל אחד מהקצוות. יציאה 7% כניסה תור כפול ללצלאת כניסה תרשיס 8-19: תור כפול מבני הנתונים הלינארים חשובים מאד לניהול תורים של משימות בזכרון או לטיפול בשליפת נתונים כאשר מבנה הנתונים מורכב מאד. דוגמא לשימוש במחסנית נראה בפרק הדן במבנה עץ. יישום השרשרות הלינאריות אפשרי גם על-ידי הקצאת מקום סדרתית או משורשרת. בהקצאת מקום סדרתית רושמים רשומה אחת לאחר השניה כמו בקובץ סדרתי. ;סד התחלה גודל המחסנית ד תרשים 8-20: יישוס מחטנית כמבנה לינארי 22/9 - ה 11 אם נניח שגודל הרשומה הוא /, המיקום (:1.06) של רשומה חדשה יהיה: 8 + ([]א)206 = (1+) )106 שיטה זו נוחה מאד לטיפול במחסניות כי זקוקים רק למצביע לתחילת המחסנית (1022). הוספת רשומה חדשה למחסנית .2 תבוצע בצורה הבאה: + ת0סך>קסך א>208 הוצאת רשומה מתוך המחסנית תבוצע בצורה הבאה: 210% = א א8-ת0ד = תפסך שיטת הקצאת מקום אחרת למחסנית היא על-ידי שימוש במבנה של שרשרת פשוטה. בשיטה הזאת אין קשר בין המקום הפיסי של הרשומה במחסנית לבין הסדר הלוגי שלה. 4 ו התחלה תרשים 8-21: יישוס מחסנית בשרשרת פשוטה בשיטה זו מתקבלת גמישות רבה בניהול הקצאת המקום לניהול התור. אין חובה להשתמש דוקא בשרשרת חד-כיוונית. לניהול תור כפול דרושים שני מצביעים, אחד לתחילת התור ואחד לסופו. אצון וה אצזוון תרשים 8-22: יישוס מחסנית בשרשרת דו-כיוונית 12 5 טבעת פשוטה (פמות) מבנה הטבעת דומה למבנה השרשרת בהבדל אחד. המצביע של הרשומה האחרונה בשרשרת מכיל את הכתובת של הרשומה הראשונה בשרשרת. תרשיס 8-23: מבנה טבעת היתרון של מבנה טבעת הוא באפשרות הניתנת לסרוק את השרשרת בשני הכיוונים. אם מתחילים ברשומה האחרונה במבנה ניתן לבצע סריקה בכיוון לתחילת השרשרת. יתרון נוסף הוא האפשרות להתחיל לסרוק את המבנה בכל אחת מהרשומות. אם מגיעים בצורה כלשהי לרשומה ,, עלדידי גישה ישירה למשל, ניתן להתחיל את הסריקה מרשומה זו ללא כל קושי. ניתן אם כן להגדיר את הטבעת כמבנה שרשרת ללא נקודת התחלה או נקודת סוף מיוחדת. מבנה טבעת הינו אחד המבנים החשובים ביותר ונמצא בשימוש ברוב המערכות לניהול בסיסי נתונים. במערכות אלה רשומה אחת יכולה להשתתף במספר רב של טבעות שונות, דבר המאפשר ביצוע סריקות יעילות בקובץ במספר רב של חתכים. בתרשים 8-24 מודגמת רשומת עובד המשתתפת בשתי טבעות הפוכות -- טבעת "ערים" וטבעת "גיל". ניתן לסרוק את רשומות העובד הן לפי סדר אלפביתי של עיר המגורים או לפי סדר עולה של גיל העובד. כמו כן ניחן לענות לשאילתות בצורה יעילה על-ידי ביצוע חיתוך בין שתי הטבעות ללא גישה לרשומות. בטבעת זמן החיפוש יחסי ל-1%/2, כלומר למחצית מספר הרשומות. כאשר הטבעת היא כפולה ניתן לצמצם את זמן החיפוש. אם מגיעים לרשומה כלשהי בצורה ישירה והטבעת ממוינת, ניתן להחליט באיזה כיוון לבצע את החיפוש -- קדימה או אחורה. במקרה זה זמן החיפוש הממוצע יהיה 4/צ1. 13 נתונים שרשות הפוכה גול ָ תרשים 8-24: דוגמא לשיתוף רשומה בשתי טבעות סריקה לפי מספר מפתחות (ת5694:6 66 6!קגז1טו/) אם נשאלת השאלה: "מהו מספר העובדים אשר גרים בתל-אביב וגילם , 5, עומדות בפנינו שתי אפשרויות: 1. להתחיל את הטריקה לפי שרשרת "עיר מגורים", להגיע עד לרשומה של "תל-אביב" ומשם להתחיל את סריקת רשומות כל העובדים הגרים בתל-אביב. עבור כל עובד נבדוק את גילו ונשלוף רק את אלה שגילם 55. 2. להתחיל את הסריקה לפי שרשרת "גיל", להגיע עד לרשומה של גיל 5 ולהתחיל את סריקת רשומות העובדים הממלאים תנאי זה. עבור כל עובד נבדוק אם עיר מגוריו היא תל-אביב, שזהו התנאי השני בשאלה. אילו היינו יודעים מהו מספר הרשומות המשתתפות בכל אחת מהשרשרות אפשר היה להחליט איזו משתי האפשרויות עדיפה. למטרה זו, מוסיפים בדרך כלל את "מונה מספר הרשומות בשרשרת" לרשומת המוביל של השרשרת. בחירת השרשרת עם מספר הרשומות הקטן ביותר תאפשר ביצוע מספר ההשוואות הקטן ביותר. כפי שהוצג בדוגמא, מונה זה מאפשר מתן תשובות | מהירות על שאלות כגון: | -- מהו מספר העובדים במפעל בגיל 55; -- מהו מספר העובדים במפעל הגרים בתל-אביב; - ועוד. 14 6 מצביע לרשומת מוביל (ז201016 60076 ז116800) רשומת המוביל יכולה להכיל מידע נוסף לכתובת של הרשומה הראשונה בשרשרת. כדי לחסוך במקום אחסון ברשומות הקובץ ולאפשר עדכון נוח, ניתן להחזיק חלק מהנתונים הדרושים בקובץ ברשומת המוביל בלבד. במקרה זה יש לאפשר לכל רשומה בשרשרת להצביע אל רשומת המוביל כדי לקבל ממנה את הנתונים המשלימים. בדוגמא שבתרשים 8-25 נמצא מספר המחלקה ברשומת המוביל של שרשרת המחלקה בלבד. אם הרשומה משתתפת במספר שרשרות ניתן להגיע אליה דרך שרשרת שונה משרשרת המחלקה, ובמקרה זה אפשר לדעת את מספר המחלקה רק לאחר פנייה לרשומת המוביל. רשומת מוביל מחלקה שרשרת מחלקה שרשרת עיר ויוי ו מ רשומת נתונים רשומת מוביל עיר מגורים תרשיס 8-25: שיתוף רשומה בשתי שרשרות עס הצבעות למוביל ניתן להשתמש גם במבנה טבעתי דו-כיווני כדי לאפשר סריקה בשני הכיוונים ולהתחיל את הסריקה בכל רשומה בטבעת. בדוגמא שבתרשים 8-26 יש בכל רשומה שלשה מצביעים -- קדימה, אחורה ולמוביל. על מנת לחסוך במקום שדרוש עבור המצביעים קיימת אפשרות לשימוש בשני מצביעים בלבד בכל רשומה. מצביע אחד מורה תמיד על הרשומה הבאה בטבעת, המצביע השני מתחלף לסירוגין -- ברשומה אחת הוא מורה על הרשומה הקודמת וברשומה הבאה על המצביע למוביל. מבנה זה קרוי טבעת 1 15 תרשים 6: מבנה טבעתי עם הצבעות למוביל מצביע לרשומה הבאה (רשומה אל- זוגית) (רשומה אי-זוגית) מצביע לרשימה הבאה (רשומה זוגית) תרשים 8-27: מבנה ,060841 הרשומות האי-זוגיות מצביעות אחורה והרשומות הזוגיות מצביעות לרשומת מוביל. בתוך הרשומה יש לציין מה משמעות המצביע. לאיתור רשומת מוביל יש שני מצבים: -- אם נמצאים ברשומה זוגית יש מצביע ישיר, -- אם נמצאים ברשומה אי-זוגית יש לפנות אחורה לרשומה זוגית ומשם להשתמש במצביע. 16 7 שרשרת מקומות פנוייס (180 06-5580זת) ברוב המערכות המיישמות שיטות ארגון משורשרות קיים מנגנון המטפל בניהול המקומות הפנויים בקובץ. מנגנון זה מאפשר קביעת מקום האחסון של רשומות חדשות במקומות פנויים ובמקום רשומות מבוטלות כדי שהקובץ לא ילך ויגדל עם הזמן. אחת האפשרויות לניהול המקומות הפנויים היא באמצעות שרשרת המקומות הפנויים. כאשר בונים את הקובץ משרשוים את כל הרשומות הריקות אשר יוצרות את השרשרת. בתרשים 8-28 מוצג מצב שבו הקובץ ריק ומכיל את שרשרת המקומות הפנויים בלבד. מוביל * הופפת רשומה חדשה לקובץ גורמת לניתוק הרשומה הראשונה בשרשרת המקומות הפנויים והוספתה לשרשרת הנתונים. תרשים 8-28: שרשרת מקומות פנויים מוביל מקומות פנויים 8 ו תרשים 8-29: שרשרת נתוניס ושרשרת מקומות פנוייס ביטול רשומת נתונים גורמת להחזרת הרשומה לשרשרת המקומות הפנויים. קיימות מספר אפשרויות להוספת המקום הפנוי לשרשרת: ניתן לצרף אותה לסוף השרשרת, או לתחילתה. כאשר הושומות מצטרפות לתחילת שרשרת המקומות הריקים, בסוף הקובץ מנוצלים לעיתים רחוקות ורוב הרשומות מתרכזות בתחילת הקובץ. יש כאן שיפור מסוים מבחינת הזזות הזרוע של הדיסק. מוביל 157 8 תכנון שרשרות מתכנן המערכת חייב להחליט באיזו מהשיטות לניהול שרשרות לבחור ובאיזו שרשרת לשתף כל רשומה. ההחלטה הזאת דומה להחלטה שבה קובעים איזה אינדקסים משניים לבנות. תהליך סריקת השרשרת דומה לסריקה בקובץ סדרתי ולכן מספר החיפושים יחסי ל-2/א1. בפרק על אינדקסים הראנו שזמן החיפוש יחסי ללוגריתם של מספר הרשומות ולכן יש חשיבות רבה מאד לבחירת השרשרות והאינדקסים. אחד השיקולים החשובים ביותר בזמן תכנון מבנה נתונים המבוסס על שימוש במצביעים, הוא אפשרות ההתאוששות במקרה של תקלה כלשהי במצביעים. התקלה יכולה לנבוע הן מבעית חומרה (תקלה ביחידת האיחסון למשל) או מבעית תוכנה (תוכנית ההורסת את תוכן המצביע) הצורך באפשרות התאוששות מהירה מתקלה הינו אחד הנימוקים העקריים לשימוש בשרשרות דודכיווניות. אם נשתמש כקריטריון שרשור בתכונה הקיימת בכל הרשומות תתקבלנה שרשרות ארוכות מאד. אם נשרשר למשל את כל רשומות העובדים הגברים במפעל בו רוב העובדים גברים, נמצא שרוב העובדים ישתתפו בשרשרת ולכן היא תהיה ארוכה מאד ולא יעילה בזמן חיפוש. אם נשתמש בתכונות המופיעות במספר קטן יחסית של רשומות נקבל באופן טבעי מספר שרשרות קצרות יחסית. לדוגמא, אם יש 20 מחלקות במפעל נקבל 20 שרשרות שונות שהן קצרות יותר משרשרת המפעל כולו. מספר החיפושים שנבצע במקרה זה דומה מאד לשימוש באינדקסים. זמן חיפוש ממוצע: החיפוש בשרשרת מתבצע מתחילת השרשרת ועד למציאת הרשומה המבוקשת, תוך שימוש במצביעים. נניח שיש א רשומות בשרשרת. אם ההסחברות לחיפוש רשומה היא ; זמן החיפוש יהיה יחסי ל- אם כל הרשומות מבוקשות באותה הסתברות, כלומר א/1 = , נקבל זמן חיפוש ממוצע |18 בדרך כלל נקבע הסדר של הרשומות בשרשרת בהתאם למפתח הלוגי שלהן ולכן השרשרת ממויינת. אם יש יותר ממפתח אחד לא ניתן למיין את השרשרת לפי שני מפתחות. אם ההסתברות | אינה שווה עבור כל 1, ניתן לסדר את הרשומות בשרשרת בסדר כזה ש"מחיר" החיפוש יהיה מינימלי. לשם כך יש ל"קרב" לתחילת השרשרת את הרשומות המבוקשות יותר ובכך להקטין את מספר ההשוואות הדרושות. סידור הרשומות בשרשרת לפי סדר יורד של הסתברויות הביקוש שלהן יגרום למחיר חיפוש קטן יותר. הבעיה היא שבמציאות הסתברויות אלה אינן ידועות. קימת אפשרות של ניהול מונה בכל רשומה המונה את מספר הגישות לרשומה ולבצע ארגון מחדש לקובץ לפי תוכן מונים אלה. שיטה זו מחיבת ביצוע ארגון מחדש של הקובץ על בסיס תקופתי ובזבוז מקוּם איחסון לניהול המונים. אפשרות אחרת היא לבצע ארגון מחדש של הקובץ על בסיס דינמי, כלומר תוך כדי פעולת הקובץ (116 8ה880121ת02)-]!56). בשיטה זו, כל פעם שמתבצעת גישה לרשומה, הרשומה מועברת לתחילת השרשרת. המטרה היא שהרשומות שתדירות הגישה אליהן היא הגבוהה ביותר תמצאנה קרוב לתחילת השרשרת. 109 9 סיכוס יתרונות קיימת הפרדה בין המבנה הפיסי לבין המבנה הלוגי. הפרדה זו מפשטת מאד את עדכון הקובץ וחוסכת את כל הטיפול בגלישות. ניתן לשרשר את אותה רשומה במספר רב של שרשרות ובכך לאפשר את הגישה אליה במספר חתכים ללא צורך באינדקסים. קיים ניצול מחדש של מקומות שהתפנו. לא דרוש תרגום מפתח לכתובת ולכן ניתן לטפל בקלות יחסית ברשומות באורך משתנה. חסרונות 200 אם יש מספר רב של נקודות כניסה לקובץ יש לנהל אינדקס לשליטה על כניסות אלו. אינדקס זה אינו מתעדכן עם כל שינוי בשרשרת, למעט אותם מקרים בהם השינוי הוא בהתחלת או בסוף השרשרח. הרס של מצביע עלול לפגוע במבנה הלוגי של הקובץ. על מנת לאפשר שחזור יש להשתמש במצביעים נוספים. אורך רשומה יותר גדול מהנדרש עבור הנתונים בלבד מאחר ועליה להכיל גם את המצביעים. אין אפשרות להפעיל חיפוש בינרי על שרשרת. החיפוש בשרשרת דומה לחיפוש בקובץ סדרתי. יש לנהל שרשרת של מקומות פנויים. 0 שאלות 1. מדוע לא קיימת בעית גלישה במבני נתונים משורשרים? 2 הסבר את מושג המצביע. מה הוא מכיל? 3 מדוע משתמשים במצביעים קדימה ואחורה? 4. כתוב אלגוריתם לביטול רשומות במבנה טבעתי דו-כיווני. 5. כתוב אלגוריתם לחיפוש רשומה במבנה שרשרת עם תת-שרשרת. המפתח מורכב משני חלקים: זיהוי הרשומה בשרשרת וזיהוי הרשומה בתת-שרשרת. 6. הסבר את ההבדל בין שרשרת הפוכה לאינדקס משני. 201 1 נספת -- חישוב גודל קבוצה אופטימלי בשרשרת דילוגיס שרשרת דילוגים מחולקת לקבוצות בעלות הָ! רשומות כל אחת, לפיכך מספר הקבוצות בקובץ יהיה: | [ ₪ =6 8 הסימון [ ] מבטא את המספר השלם הגדול הקרוב ביותר לתוצאה, למשל 2 = [1.2]. במקרה של הסתברות שווה לחיפוש רשומה, מספר הדילוגים הממוצע יהיה: 1 ן ל 2 6 |5ן לאחַר שמגיעים לקבוצה מתאימה ממשיכים לסרוק את הרשומות בצורה סדרתית. מספר השוואות ממוצע בתוך הקבוצה יהיה: 1-= 7 1ן יא כ 2 שא : 0=ן מספר ההשוואות הכולל 6 בקובץ יהיה: 2. 38 0 תלוי בשני גורמים: ב-א! מספר הרשומות בקובץ וב-א1 מספר הרשומות בקבוצה, כאשר האחד עולה השני יורד. נמצא מכאן את הגודל האופטימלי של הקבוצה: <ץ=6 [( אצ=6 ( א =פא קיבלנו שאם נחלק את השרשרת לקבוצות בעלות א / רשומות נקבל מחיר חיפוש אופטימלי אשר יהיה א /. 202 פרק תשיעי ארגון נתוניס מורכב -- עצים (12819 5171010166 - 17766) 1 מבוא ארגון נתוניס במבנה עצ שיטות לייצוג עציס ביחידות אחסון עצי חיפוש בינרייס עצי חיפוש אופטימלייס עצים מאוזניס שאלות נספת -- חישוב עומק העצ סי סן ס> סו סי סא סנ ףח אע ם- ח 00 1+ 0 בפרק זה נציג מבנים מיוחדים של נתונים המשתמשים בשיטות ארגון לא לינאריות. 23 0 | | היתרון הגדול של מבנה העץ הוא בניצול היעיל של שטח האחסון. למעשה = יש כאן אינדקס ונתונים המעורבים יחדיו. התוכן של המפתח קובע את מיקום .. הצומת בעץ. בתוך הצומת עצמו נמצא את הנתונים הדרושים ללא צורך לגשת == לקובץ נתונים נפרד. תהליך החיפוש מהיר מאד אם נסדר את הרשומות < . בצמתים לפי סדר מסוים. מבנה העץ משלב את מהירות החיפוש הבינרי עם = פשטות העדכון של מבנה משורשר. 1 מבוא השיטות לארגון נתונים שסקרנו עד עתה מטפלות במבנה נתונים לינארי. קיימים יישומים בהם המבנה הלינארי של הנתונים אינו מתאים. כדי להמחיש זאת, נשתמש בדוגמאות. כל מוצר מורכב מרכיבים שהם בעצמם יכולים להיות מורכבים מרכיבים אחרים וכך הלאה. תיאור גרפי של רכיב המתפצל לרכיבים אחדים בשרשרת יוצר מבנה עץ הפוך, הקרוי עץ-מוצר או [18ז916]א-8111-01. מוצר שלם תרשים 9-1: מבנה עצ מוצר רכיבים בדרג ראשון רכיבים בדרג שנ? תוכן ענינים של ספר מכיל הפנייה לפרקים, לתת-פרקים ולקטעים בתוך תת-פרק. חיאור גרפי של תוכן הענינים מציג גם-כן מבנה עץ. תרשים 9-2: אינדקס ספר במבנה עצ פרקים תת-פרקים קטעים 205 2 ארגון נתוניס במבנה עצ נציג תחילה את הגדרת מבנה עץ. הגדרת עץ -- העץ מורכב מצמתים (110063) וחיצים (5שסזז). 1. הצומת הראשי בעץ קרוי שורש (8001). 2 אוסף של חיצים מכוונים מובילים מהשורש לצמתים אחרים. 3 כל צומת הוא שורש של תת"עץ של העץ הראשי. תת-עץ יכול להכיל שורש בלבד, או שורש וצמחים נוספים. כפי שניתן לראות הגדרת העץ היא רקורסיבית, כלומר הגדרנו את העץ במונחים של עץ. תרשים 9-3: חלוקת עץ לתת-עצים בדוגמא שבתרשים 9-3 יש לשורש א שלשה תת-עצים: 1, 2, 3. לתת-עץ 2 למשל, יש שורש 6. לשורש זה יש גם כן שלשה תת-עצים: 4, 5, 6. למספר תת-העצים השייכים לצומת מסוימת קוראים דרגת הצומת (6ז268] 066א). לעץ יש מספר רמות כאשר רמת השורש תסומן ב-1. רמה 2 תכיל את תתי-העצים הקשורים לשורש. רמה 3 תכיל את תתי-העצים הקשורים לרמה 2, וכן הלאה. ראה תרשים 9-4. 206 תרשים 9-4: רמות הצמתיס בעצ עצים בינריים עץ בינרי מוגדר כעץ המורכב מצמתים אשר הדרגה שלהם לא גבוהה מ-2, כלומר כל צומת יכול להצביע על שני תת-עצים לכל היותר, הקרויים במקרה זה תת-עץ ימני (%א8-1.1) ותת-עץ שמאלי (8א1-11). ימני אאון.1-. (פ) (9) שמאלי אא 1-.1 תרשים 9-5: מבנה עצ בינרי סריקת רשומות במבנה עץ בינרי ררה אחת הבעיות החשובות בניהול הקובץ היא סריקת העץ. דרושה שיטה || לסריקת כל העץ שבה נעבור בכל צומת פעם אחת בלבד. קיימות שלש שיטות לסריקת עצים. נציג את תהליך הסריקה בכל אחד מהן על פי הדוגמא שבתרשים 9-5. ו 1 ז0006)-6זק א. שורש | ב. תת"עץ שמאלי ן ג. תת-עץ ימני ן עבור הדוגמא נקבל את סדר הסריקה הבא: 11 ,0 ,2 5 5 ,2 2 060ז02)-ח1 א. תת-עץ שמאלי ב. שורש ג. תת-עץ ימני. עבור הדוגמא נקבל את הסדר הבא: 11 ,כ ,0 ,א 5 ,5 207 3 ז00166)-)פסק א. תת"עץ שמאלי ב. תת-עץ ימני ג. שורש עבור הדוגמא נקבל את הסדר הבא: 4 ,כ ,3 ,0 ,6 ,5 תאור אלגוריתם לסריקת ז66ז02)-6ז2 מתחילים את הסריקה בשורש 4 לאחר מכן יש לבקר בתת-עץ השמאלי שלו. מאחר ואין מצביע חזרה מהתת-עץ לשורש יש לשמור את הכתובת של א כדי שאפשר יהיה לעבור אחר כך לתת-עץ הימני שלו. ניחן להשתמש במחסנית ונרשום בה את הכתובת של א/. נתקדם עכשיו לצומת 6. אחר כך יש לעבור לצומת 5, אבל תחילה יש לשמור את הכתובת של 6 ונרשום גם אותה במחסנית. לאחר סריקת ₪ נקרא את האיבר הראשון במחסנית (שהוא הכתובת האחרונה שנכתבה -- 6) ונעבור לתת-עץ הימני של 6. המחסנית מיועדת לשמירת כתובות אשר צריך לפנות אליהן שוב בתהליך הסריקה. המחסנית מופעלת בשיטת 00ש1.1. ננסח עתה את האלגוריתם בצורה פורמלית, ונסמן ב-? את הכתובת אליה אנו פונים וב" את התחלת העץ, כלומר את כתובת השורש. התהליך של הסריקה מוצג בצורה הבאה: 1. התחל -- אפס מחסנית. קבע ד = ק. 2 אם * = < עבור ל-4. הכנס כתובת הנמצאת ב-? לתוך מחסנית 5. קבע 1.118% = וחזור לצעד 2. 4 אם המחסנית 5 ריקה סריקת העץ הסתיימה. אחרת, יש להעביר את האיבר הראשון מתוך המחסנית אל :. 5 ביקור בצומת -- גש לרשומה אשר כתובתה ב-? ובצע את העיבוד הדרוש. קבע 81.1%% = וחזור לצעד 2. ייצוג עצים כלליים ייצוג עצים בינרים במחשב נוח מאד מאחר וכל רשומה מכילה בדיוק שני מצביעים, אחד לתת-עץ השמאלי ואחד לתת-עץ הימני. אם נרצה לאחסן במחשב עצים כלליים נראה שמספר המצביעים בכל צומת משתנה וזה מוסיף סיבוך רב למבנה ולתהליך החיפוש. למען הפשטות ניתן לייצג עץ כללי במחשב כעץ בינרי. 5 ד--3 9-9 ₪ 0 0 עצבינרי עץ כללי תרשיס 9-6: הפיכת עצ כללי לע בינרי 208 על מנת להפוך עץ כללי לעץ בינרי כל צומת תצביע על: -- צומת הבן הראשון, כלומר הצומת השמאלי ברמה הבאה. -- צומת התאום שלו, כלומר הצומת השכן באותה רמה. במעבר הזה מאבדים מספר קשרים ישירים, כמו בין צומת 8 ל-03) למשל. עכשיו נצטרך לעבור דרך 5 ו" כדי להגיע ל-. העומק של העץ (מספר הרמות המקסימלי שלו) גדל. בתרשים 9-6 עברנו מעץ בעומק 3 לעץ בעומק 5. תרשים 9-7 מציג את העץ הכללי בצורת עץ בינרי. 6 תרשים 9-7: עץ בינרי המתקבל מהעצ הכללי | מאחר ובצמתים סופיים אין מצביע לבנים אחרים ניתן לנצל מקום זה | למצביע המורה חזרה אל צומת האב כפי שמוצג בתרשים 9-8. מבחינה לוגית עריין יש עץ בינרי אך את המצביעים הפנויים מנצלים ליצירת מבנה טבעתי אשר יכול ליעל את תהליכי החיפוש במבנה. יש צורך לעשות אבחנה בין מצביע המורה לבן לבין מצביע המורה חזרה לצומת האב. (₪9 א(פ) ₪ ₪ 6 ל (5 5( תרשיס 9-8: הוספת מצביעים לקבלת מבנה טבעתי 209 . 3 שיטות לייצוג עציסם ביחידות אחסון הדיון הקודם במבנה העצים צריך להנחות לשיטה של ייצוג רשומות הקובץ ביחידות אחסון. נשתמש בדוגמת עץ המוצגת בתרשים 9-9 שבו כל אחת מהאותיות בעיגול (צומת) מסמלת רשומה. נסקור עתה את השיטות המקובלות לאחסנת קובץ העץ. תרשים 9-9: דוגמא לע כללי א. אחסון רציף הרשומות מאוחסנות כרצף של צמתים מלמעלה למטה ומשמאל לימין. שיטה זו מתאימה לעיבודי אצווה מאחר וכל הבנים ברמה הנמוכה ביותר מופיעים אחרי האב שלהם. לדוגמא, כל הבנים של ,8 נרשמים אחריו. שיטה זו מתאימה לשמירת עצים בסרט מגנטי למשל. בתוך הרשומה יש להוסיף שדה המציין את הרמה של הצומת. תרשיס 9-10: ייצוג רציף בשיטה זו קשה מאד לבצע עדכונים מאחר והמקום הפיסי קובע את הסדר הלוגי של הרשומה. כמו כן אין אפשרות להגיע לרשומה מבלי לעבור תחילה דרך כל המסלול המוביל אליה. ב. | שימוש במצביעים לכל רשומה מוסיפים שני מצביעים -- אחד לבן הימני ואחד לבן השמאלי, ואת העץ הכללי הופכים לעץ בינרי עם זרועות שמאל וימין. 20 תרשיס 9-11: שימוש במצביעים לאחסון עצ בינרי השימוש במצביעים מאפשר להפריד בין המיקום הפיסי של הרשומה לבין מקומה הלוגי בתוך העץ. יש לזכור שדרושה תוספת מקום בתוך הרשומה לשמירת המצביעים. בשיטה המוצגת, הנתונים והמצביעים מופיעים יחד באותו הקובץ אך קיימת אפשרות להוציא את המצביעים אל מחוץ לרשומות כפי שמוצג בהמשך. ג. | אינדקס המכיל את מבנה העץ בונים אינדקס מיוחד, נפרד מהקובץ, אשר מכיל את מבנה העץ. הפרדה זו מאפשרת שהקובץ עצמו יכול להיות מאורגן בשיטה כלשהי. בניית האינדקס מכוונת לאפשר חיפוש מהיר של רשומות. תהליך העבודה כולל שני שלבים: הפיכת העץ הכללי לעץ בינרי ובניית האינדקס המכיל את מבנה העץ בלבד, כפי שמוצג בתרשימים 9-12 ו9-137. נשתמש במושג חדש, אח עבור רשומה ברמה שוה, למשל ,2 היא רשומת-אח ל-,8. (לעיתים משתמשים גם במושג רשומת-תאום). (6 עץ בינרל (9)-- -(9)=--/₪ = ₪( 6( 6 6( 6 65 6( 6%5( 6% 60% 6 תרשים 9-12: הפיכת עצ כללי לעץ בינרי 21 קובץ הרשומות אינדקס בלבד תרשים 9-13: אחסון מבנה העץ באינדקס בלבד בדוגמא זו אנו מדלגים בין הרשומות במבנה הלוגי של העץ תוך שימוש באינדקס. לחיפוש של הבנים של ,א יש למצוא תחילה את הבן הראשון ,8 וממנו לעבור לאח שלו ,8 וממנו לעבור לאח ,8 עד שאין אחים נוספים. מפות בינריות הקובעות את הקשרים ₪ 69 ₪ 9 6 ₪ 9 69 9 9 מבנה לוגל תרשיס 9-14: אחסון עצ בינרי בעזרת מפות בינריות 212 ד מפות בינריות ניתן לשמור מפה בינרית עבור הקשר בין כל אחת מהרמות של העץ בשיטה של מטריצות זיקה בין הרמות השונות. לכל רמה יש מטריצה נפרדת. ככל שיורדים ברמת העץ המטריצות גדולות יותר. המפות הבינריות יעילות מאד מבחינת מהירות החיפוש. חישוב עומק העץ עומק העץ מוגדר כמספר המקסימלי של קשתות שיש לעבור כדי להגיע לצומת היעד ברמה הגבוהה ביותר. לעומק העץ חשיבות רבה מאחר והוא מציין את מספר ההשוואות שצריך לבצע כדי להגיע לצומת היעד. ניתן להוכיח שעומק העץ נתון לפי הנוסחה הבאה: כאשר וח מספר הבנים המקסימלי בצומת, ו"א! הוא מספר הרשומות בעץ. ההוכחה לנוסחה מופיעה בנספח בסוף הפרק. 203 4 עצי חיפוש בינרים במבני העצים שהוצגו עד עתה לא היה כל קשר בין הערך של הצומת לבין המיקום היחסי שלו בעץ. בתהליכי חיפוש מעונינים לאתר את הצומת מידית ולא על-ידי סריקה לינארית של כל העץ. ניתן לבנות את העץ לפי סדר כלשהו כדי שהאיתור יהיה מהיר. עץ חיפוש בינרי הוא עץ בינרי המקיים את התנאי הבא: -- כל צומת שמאלי לצומת בו נמצאים יהיה בעל ערך נמוך יותר. -- כל צומת ימני לצומת בו נמצאים יהיה בעל ערך גבוה יותר. בתרשים 9-15 מוצג בתוך הצומת גם ערך הצומת לפי התנאי של עץ חיפוש בינרי. בכל צומת מתקיים התנאי: הבן הימני בעל ערך גבוה יותר מערך הצומת והבן השמאלי בעל ערך נמוך יותר מערך הצומת. תרשים 9-15: עץ חיפוש בינרי שיטה זו לבניית העץ תאפשר ביצוע חיפושים מהירים. לדוגמא נניח שמחפשים צומת בעלת הערך 150. הכניסה לעץ תהיה תמיד דרך השורש. נשווה את ערך השורש לערך הדרוש, ומאחר וערך השורש גבוה יותר, נפנה שמאלה ונגיע לצומת בעל הערך 200. נבצע שוב השוואה ונפנה פעם נוספת שמאלה ונגיע לצומת בעל הערך 100. נבצע השוואה ונפנה הפעם ימינה מכיון שצומת בערך גבוה יותר נמצא מימין. השוואה נוספת תאתר את הצומת המבוקש 150. מספר ההשוואות שבצענו הוא 4 וזה דומה לתהליך החיפוש הבינרי שהודגם בפרק הדן בארגון קבצים סדרתי: מספר ההשוואות שנבצע יהיה יחסי ל-צ108,1. מבנה העץ הבינרי תלוי בצומת שנבחרת להיות צומת השורש ובסדר הגעת הצמתים (הרשומות) לעץ. על פי נוהל החיפוש נדגים שלבי בניית עץ חיפוש 214 בינרי בהנחה שמפתח הסדר הוא מספרי בלבד. 1. רשומה ראשונה עם מפתח 80. 2. הוספת רשומה עם מפתח 40. מאחר והיא קטנה מ-80, היא תרשם מצד שמאל. : 3 הוספת רשומה עם מפתח 50, מצד ימין של צומת 40. 4 הוספת רשומה עם מפתח 150, בצד ימין של צומת 80. 205 5. הוספת רשנמה עם מפתח 90, מצד שמאל של צומת 150. בצורה זו נמשיך ונוסיף רשומות חדשות לעץ. אם הרשומות היו מגיעות בסדר אחר, למשל: 150 ואח"כ 90, 80, 50, 40, כלומר רשומות ממוינות מסדר יורד, היינו מקבלים עץ השונה מהעץ הקודם. בעוד שהעץ הקודם היה בעומק 2 ולכל היותר נדרשו 3 השוואות וגישות כדי לשלוף רשומה כלשהי, הרי העץ החדש הוא בעומק 4, ובו נדרשות עד 5 גישות והשוואות לאיתור רשומה מבוקשת. עומק=4 תרשים 9-16: בניית עץ חיפוש בינרי עם רשומות בסדר יורד ניתן לראות שמבנה העץ תלוי ברשומה הראשונה שמגיעה, מאחר והיא הופכת להיות רשומת השורש. המבנה תלוי גם בסדר הגעת הרשומות ובסדר המיון שלהן. 26 1 1 | עדכון עץ בין הינו תהליך מורכב מאחר וחייבים לשמור על סדר העץ ולא לשבש את תכונות החיפוש. להדגמה נשתמש בתרשים 9-17 שבו מבטלים את צומת ?. לשם כך יש להפוך את עץ החיפוש הבינרי הזה לעץ חיפוש בינרי אחר הכולל את כל הצמתים למעט הצומת המבוטל. אפשר לעשות זאת באחת משתי דרכים: לבצע הזזה של החלק הימני של העץ או הזזה של החלק השמאלי של העץ. תרשים 9-17: עדכון עצ בינרי תרשיס 9-18: ביטול צומת בעץ חיפוש בינרי 27 להצגת תהליך העדכון נשתמש בתרשים 9-18 שבו מתואר עץ עם ערכי צמחים. דרוש לבטל את צומת ? שערכו המספרי 400. כפי שהוסבר יש להפוך את עץ החיפוש הזה לעץ חיפוש אחר הכולל את כל הצמתים למעט הצומת המבוטל 400 = :. כדי להפוך את מבנה העץ רושמים את כל המפתחות שלו לפי סדר 07061)-ח1, ומקבלים עץ ממויין. ובדוגמא שלנו: 90 ,100 ,130 ,0 00 ,0 להוצאת הצומת ? מחוך העץ יש להזיז את כל הצמתים משמאל לו מקום אחד ימינה, או להזיז את כל הצמתים מימין לו מקום אחד שמאלה. בכל אחד מהמקרים מתקבל עץ חיפוש בינרי שונה, כפי שמוצג בתרשים 9-19. הזזת העץ ימינה גרמה לשינוי במספר רב של צמתים וגרמה גם שינוי מיקום ורמה. הזוזת העץ שמאלה פשוטה יותר מאחר וזהו שינוי מקומי, בענף אחד של העץ. השינוי מחבטא בכך שבמקום הצומת המבוטל מציבים את הבן השמאלי אם הוא קיים, או את הבן השמאלי הראשון של אחד הבנים הימניים שלו. בדוגמא שבתרשים הצומת עם ערך 450 הינו הבן השמאלי הראשון של אחד הבנים הימניים של הצומת המבוטל. ביצוע הביטול בצורה זו הינו פשוט יחסית ובעל אופי מקומי בעיקרו. (₪9 (9) 9-69 ₪9 ל 8 0 6 תרשים 9-19: שני עציס שוניס המתקבליס מביטול צומת ץ 2018 5 עצי חיפוש אופטימלייסם בעצי חיפוש בינריים קיים סדר מסוים כלשהו של המפתחות בתוך העץ ומאוסף אחד של רשומות ניתן לבנות מספר רב מאד של עצי חיפוש. בניית עץ החיפוש מכוונת להשיג יעילות חיפוש בקובץ, ובנושא זה נדון בהמשך. לדוגמא נתונות שלש רשומות עם המפתחות 100, 200, 300. מרשומות אלו ניתן לבנות מספר עצים שונים בהתאם לבחירת הרשומה בצומת השורש ולפי סדר ההגעה של שאר הרשומות. כמה מהאפשרויות מוצגות בתרשים 9-20. 0 ,+ ₪ (ס) 8 | תרשים 9-20: אפשרויות בנית עצי חיפוש בינריים מי מתוך העצים שבתרשים 9-20 הינו עץ החיפוש האופטימלי? כדי לענות לשאלה זו יש לדעת תחילה את הסתברויות החיפוש של כל אחת מהרשומות. נניח שההסתברויות הן: 0 200 100 |% מפתח הרשומה 4 03 03 | הסתברות כלומר, לאורך זמן ההסתברות לחיפוש רשומה עם מפתח 200 היא 0.3. כדי לבחור את העץ האופטימלי מבין חמשת עצי החיפוש האפשריים, יש לחשב את תוחלת מספר ההשוואות בכל אחד מהם ולבחור בעץ שעבורו תוחלת זו היא מינימלית. ת מספר העצים האפשריים: 24 פ = ₪ תנחת = ן -- עומק הצומת 1 בעץ ( א -- מחיר החיפוש בעץ ( כאשר יש א צמתים. 209 נבצע את החישוב עבור הדוגמא: 9. 03+3- 1:04+2> גא 11. 04+3. 1:04+2= מא60 7-. 1.03+2.03+2= 6א0 9. 03+3- 1:04+2= פאס 9. 03+3. 1-04+2= תא לפי הסתברויות החיפוש שניתנו, תוחלת מספר החיפושים המינימלית התקבלה עבור העץ הסימטרי 6 שבו נבצע 1.7 השוואות בממוצע. אם ההסתברויות היו שונות, למשל 0.7, 0.2, 0.1 היינו מקבלים שהעץ האופטימלי הוא 5. אם ההסתברות לחיפוש רשומות זהה, כלומר לפנינו התפלגות אחידה א/] = ₪ העצים הסימטריים יהיו העצים האופטימליים. עבור מספר קטן של צמתים ניתן לבנות את כל העצים האפשריים ולבחור מתוכם את העץ הטוב ביותר. ככל שמספר הצמתים גדל מספר העצים האפשריים גדל בכמה סדרי גודל ולכן דרושים אלגוריתמים לאיתור העץ האופטימלי. קיימים מספר אלגוריתמים לבניית עצי חיפוש אופטימליים לפי ג)טת זט 8ח3 110 ואחרים. עם זאת ניתן לנסות ולהשתמש באלגוריתמים פשוטים שאינם בונים עצים אופטימליים אך יכולים לבנות עצים שקרובים לאופטימלים. נציג כאן אלגוריתם מסוג זה המניח שרצוי לקרב לשורש צמתים בעלי הסתברות גבוהה לחיפוש. האלגוריתם הפשוט הזה יכלול את הפעולות הבאות: 1. מיון כל הצמתים לפי סדר עולה של ההסתברויות, 2 בניית עץ חיפוש בינרי לפי סדר הצמתים. בתרשים 9-21 מוצגת בניית עץ החיפוש על פי האלגוריתם הפשוט שהודגם. 9 00 תרשים 9-21 0 100 700 400 200 500 300 1 1 01 01 0.15 0.15 0.2 - 02 תת 220 תוחלת מספר ההשוואות בעץ זה תהיה: + 3.0.1+ 3.0.15 + 2.0.15 + 2.0.2 + 1.0.2 = א 5 = 4.01 + אלגוריתם זה פשוט ואינו עונה למקרה שבו לאחר המיון לפי הסתברויות גם ערכי הצמתים ממוינים לפי סדר עולה או יורד של מפתחות. במקרה זה נקבל עץ מנוון, כלומר קו משופע בכיוון ימין או שמאל שהוא בוודאי אינו עץ אופטימלי. מצב שבו ערכי הצמתים ממויינים לאחר מיון ההסתברויות מוצג בתרשים 2. התוצאה היא עץ מנוון שבו תוחלת מספר ההשוואות הוא: + 6.0.1 + 5.0.1 + 4.0.15 + 3.0.15 + 2.0.2 + 1.02 = א 5 = 7.0.1 + 6.0.1 + 00 00 500 100 1500 200 1(0 א 0.1 0.41 0.1 5 0.15 0.2 02 תרשים 9-22 אם על סמך אותן הסתברויות היה נבנה עץ סימטרי כפי שמוצג בתרשים 3 אפשר היה לקבל תוחלת חיפוש נמוכה יותר. + 4.0.2 + 3.0.1 + 3.02 + 2.0.1 + 2.0.15 + 1.0.15 = א 5 = 4.01 221 תרשיס 9-23 על מנת להתגבר על בעיית ניוון העץ ניתן להשתמש באלגוריתם שונה במקצת. משתדלים להציב מימין ומשמאל של כל צומת צמתים חדשים שסכום ההסתברויות שלהם שווה ועל ידי כך יוצרים מרכז הכובד. אך גם באלגוריתם זה לא נקבל תמיד עצים סימטריים. כפי שראינו עד כאן עצים סימטריים הם בדרך כלל עצי חיפוש טובים במיוחד אם ההסתברויות לכל הרשומות זהות. נעשו מאמצים לבנות עצי חיפוש סי..טריים ולהתגבר על הבעיה הגדולה ביותר -- כיצד לשמור שימשיכו להשאר סימטריים בתהליכי העדכון השונים שעוברים על העץ. 222 6 עצים מאוזנים --(1166 66סהג881) בנית עץ חיפוש אופטימלי אינה משימה חד-פעמית. לאחר בניית העץ מגיעות רשומות חדשות או שיש לבטל רשומות קיימות. עדכונים אלו יכולים לגרום לכך שעץ אופטימלי יהפך לעץ לא אופטימלי. ניתן לומר שבדרך כלל עלות החיפוש בעץ חיפוש הולכת וגדלה ככל שמשך הפעילות גדל. כתוצאה מכך יש לבצע מזמן לזמן ארגון מחדש של העץ, כלומר לבנות מחדש את עץ החיפוש האופטימלי. לאחר בניית העץ מחדש יורדת עלות החיפוש והיא עולה בהדרגה ככל שחולף הזמן. עלות הארגון תלויה גם במספר הצמתים בעץ. 6 תרשים 9-24: עלות החיפוש כפונקציה של משך הפעילות בע בינרי ארגון מחדש של העץ אפשר לבצע במועדים קבועים, או כאשר עלות החיפוש (זמן התגובה) עובר ערך מסויים קבוע מראש. שיטה זו אינה עונה על הדרישה לקיים זמן תגובה קבוע. ולכן פותחה שיטה לביצוע ארגון מחדש באופן דינמי. העצים המופקים בשיטה זו אינם עצים אופטימליים כי אם עצים מאוזנים. בעץ מאוזן מתקיים עבור כל צומת התנאי הבא: ההפרש בין עומק תת-העץ הימני לבין עומק תת-העץ השמאלי אינו גדול מ-1. עומק העץ מוגדר כמספר הקשתות במסלול הארוך ביותר בין השורש לצומת סופי. ניתן להוכיח כי עץ מאוזן קרוב מאד לאופטימום, ובמקרה הגרוע ביותר יש לבצע 44% יותר השוואות בעץ מאוזן מאשר בעץ אופטימלי. שורש 1 | ₪ -8 | וצו 41 תרשים 9-25: עץ מאוזן ד / 203 השמירה על העץ המאוזן נעשית באמצעות ארגון מחדש באופן שוטף כלומר, מיד כאשר מתגלה שהעץ אינו מאוזן. מספר פעולות התיקון שדרוש לבצע קטן יותר מאשר בעת ארגון מחדש ובניית עץ אופטימלי. נתאר את תהליך הארגון הדינמי בדוגמאות ובתרשימים. בתרשימים 9-26, 9-27 נשתמש בסימונים הבאים לצמתים: אם תת-עץ ימני עמוק יותר מהשמאלי נסמן את הצומת ב"+, אם תת"עץ שמאלי עמוק יותר מהימני נסמן את הצומת ב"--, אם שני תת-העצים בעלי עומק זהה נסמן את הצומת בד0. תרשים 9-26: דוגמא לע בינרי מאוזן העץ בתרשים 9-26 הוא עץ מאוזן מאחר וההפרש בעומק בין כל תת-עץ ימני לשמאלי אינו עולה על 1. הוספת צומת חדש תשנה את הסימון של צומת אחד או יותר. בדוגמא שבתרשים 9-27 נוסף צומת חדש מימין. הסימון של צומת האב השתנה אך האיזון לא הופר. כאשר הצומת החדש מתווסף לתת-עץ העמוק ביותר הוא מפר את האיזון, ואז נדרש ארגון מחדש כפי שמודגם בתרשימים הבאים. בצד ימין של התרשימים יוצג המודל הכללי ובצד שמאל תוצג דוגמא מספרית. תרשים 9-27: הוספת צומת לעץ מאוזן 224 בתרשים 9-28 מוצג מצב קיים של עץ חיפוש בינרי. לעץ זה יש להוסיף צומת עם מפתח 300, ולפי מבנה העץ הוא יצטרף כבן לצומת 280. המצב החדש בתרשים 9-29 מציג עץ לא מאוזן. תת-עץ הימני של צומת 4 עמוק יותר ב-2 מאשר תת-עץ השמאלי שלו. יש לפעול עתה לתיקון המצב ולהחזרת איזון העץ. ץ \ תרשים 9-29: מצב העץ לאחר הוספת צומת אפשרות תיקון של איזון העץ המוצג בתרשים 9-29 תהיה על-ידי פעולת סיבוב שמאלה של כל הצמתים כדי שצומת 8 יהפוך להיות השורש וצומת 4 יהפוך להיות הבן השמאלי שלו. פעולה זו תגדיל את עומק תת-העץ השמאלי ותביא לאיזון העץ כולו. תרשים 9-30 מציג את המצב החדש. 205 תרשיס 9-30: מצב סופי של העץ הפתרון שהוצג קודם התאים למצב שבו הצומת הנוסף מגיע לתת-עץ ימני קיצוני. כאשר הצומת החדש מגיע לתת-עץ שמאלי, כלומר לתת-עץ פנימי, דרושה פעולת חיקון שונה, כפי שמוצג בתרשימים הבאים. למצב ההתחלתי שבתרשים 9-31 יש להוסיף צומת חדש עם מפתח 190 אשר צריך להכנס לתת-עץ 8 . הוספת הצומת ל- 6 תגדיל את העומק של 8 והוא יהיה עתה 1 + ה ויגרום לכך שהעץ כולו לא יהיה מאוזן. תיקון של מצב זה מורכב יותר. תחילה יש לפצל את 8 לשני תת-עצים ,8 0271 כפי שמודגם בתרשים 9-32. העץ מאוון כי לא הוטפנו עדיין את הצומת החדש. 4 ו 1 תרשיס 9-31: עצ מאוון (מצב לפני עדכון) תרשים 9-32: מצב העץ לאחר פיצול 206 נוסיף עתה את הצומת החדש למקומו בתת-העץ הימני ,6 ונבצע פעולת סיבוב ימינה, כפי שמוצג בתרשים 9-33. בשלב זה העץ עדיין אינו מאוזן. יש לבצע עכשיו פעולת סיבוב שמאלה כדי לקבל עץ מאוון. צומת שנוסף תרשיס 9-33: מצב העץ לאחר סיבוב אחד העומק המקסימלי של העץ הסופי שבתרשים 9-34 לא השתנה. פעולת האיזון הינה פעולה מקומית בענף של העץ, ואין צורך לבצע ארגון מחדש של כל העץ. מצב זה לא קיים תמיד, מכיוון שלא ניתן להוסיף אינסוף צמתים חדשים ללא הגדלת עומק העץ. אם קיים צומת אחד לפחות לא מאוזן ניתן להוסיף צומת חדש ללא שינוי בעומק העץ. אם כל הצמתים מאוזנים, הוספת צומת חדש לא תפר את האיזון אבל תגדיל את העומק. 7 תרשיסם 9-34: מצב העץ לאחר סיבוב שני השיטה לניהול עצי חיפוש מאוזנים פותחה ע"י צמד מתמטיקאים רוסיים 615%1/-4661500, ו-015ח1.8 ועל כן מקובל לקרוא לעצים עצי .4/1. 207 7 שאלות 1. קבע את סדר החיפוש בצמתים בעצים הבינריים 4 ו-2, לפי שלש השיטות שהוסברו. .- עץ 5 עץ 4 . כתוב אלגוריתם לחיפוש ז2:066)-ח1 בעץ בינרי. בנה את העץ הבינרי המתאים לעץ הכללי: ג נש 4. הסבר את מושג עומק העץ ואת חשיבותו. חשב את עומק העץ הבינרי המכיל 50,000 רשומות. הסבר את תשובתך. 5 מדוע כדאי להשתמש במבנה עץ מאוון. מדוע לא להשתמש במבנה עץ חיפוש אופטימלי. 208 8 נספת -- חישוב עומק העצ 7 עומק העץ מוגדר כמספר המקסימלי של קשתות שיש לעבור כדי להגיע לצומת סופי ברמה הגבוהה ביותר. עומק העץ מציין את מספר ההשוואות והחיפושים שנצטרך לבצע על מנת להגיע לצומת היעד. הקשת היא הצורה הגרפית הנוצרת ע"י שני בנים הקשורים לאב אחד. ו תרשים 9-35: מבנה עצ בינרי בעל עומק נתון בהמשך נשתמש בסימונים הבאים: א -- מספר הצמתים בעץ, א -- מספר הקשתות בעץ, ה - - עומק העץ, ו -- מספר הבנים המקסימלי בצומת (דרגת העץ). בעץ בינרי 2 = ות. א -- מספר הצמתים ברמה ו!, -- מספר הצמתים ברמה הנמוכה ביותר. מאחר ומספר הבנים בכל צומת קטן או שווה ל-וח הרי שמתקיים ₪ > ,א!, יח >,צ1,או באופן כללי: 'וח> גָא, וזאת מאחר ולא כל הבנים קיימים. 91 | 3 א = ות > ,אפ = א מ 0 10 1 - [1 + (1 - מ)א] סו = א עבור 1=צ נקבל בקירוב: ל חפ = ₪ 209 פרק עשירי תכנון קבצים 1 מבוא 2 מודל כללי לתכנון קבציס 3 מאפייני קבציס 4 סיכום 5 אירוע -- תכנון קבציס 6 שאלות בפרק זה נציג את המאפיינים השונים של הקבצים והשיקולים השונים בתכנונם. 211 1 מבוא תכנון הקובץ קובע את שיטת איתור הרשומות ואת שיטת העדכון. התכנון צריך להתחשב במבנה הנתונים והקשרים ביניהם, סוגי הציוד וסוג מערכת התוכנה לניהול קבצים העומדים לרשות המתכנן. תכנון הקובץ הינו בעל חשיבות רבה מאחר והוא משפיע על הביצועים של מערכת המידע. החיפוש של רשומות הינו בדרך כלל החלק הצורך את מירב הזמן בתוכניות מחשב. החלפת שיטת ארגון קובץ גרועה בשיטת ארגון קובץ טובה, מבחינת החיפוש, יכולה להביא לשיפור ניכר בביצועי התוכנית. נציג מודל כללי לתכנון קובץ ואת המאפיינים השונים של הקבצים. מאפייני הקובץ חשובים לבחירת מבנה הנתונים המיועד לפתור את בעית עיבוד הנתונים. ‏ נציין שאין טכניקה "טובה" לכל המצבים. ההחלטה על שימוש בטכניקה מסוימת צריכה להביא בחשבון את הדרישות ממערכת המידע. יעילותה של טכניקת ארגון נתונים תלויה ביישום ובפונקצית המטרה הכוללת בין השאר את זמן האיחזור וזמן העיבוד לעדכון הקובץ. 213 2 מודל כללי לתכנון קבצים תהליך תכנון קובץ מורכב ממספר שלבים כפי שמוצג בתרשים 10-1. בתהליך זה קיימת מערכת היזון חוזר המופעלת לאחר שבשלב בחינת יישום המערכת מתגלות סטיות מן הדרישות הפונקציונליות, ממצבי הביצוע, או מהתכנון עצמו. תהליך התיקון צריך לגרום לבחינה חוזרת של הדרישות, המדדים והתכנון כדי להפיק מוצר סופי טוב יותר. קביעת מבנה המידע בחירת מבנה נתונים הגדרת מדדי ביצוע הערכת ביצועים תרשים 10-1: הצגה גרפית למודל כללי לתכנון קבצים א. קביעת מבנה מערכת המידע (ת56160110 5/1001076 מסו81חזזס]ח1) בשלב זה מנתח המערכות מגדיר את הרכיבים הבונים את מערכת המידע ומציג את תוכנם ואת הקשרים ביניהם כפי שהם נלמדו ונחקרו בתהליך ניתוח ותכנון המערכת. את הרכיבים האלה יש להציג במערכת הקבצים ולנהל במערכת המידע הממוחשבת. לדוגמא, במערכת לניהול מלאי הרכיבים המרכזיים הם מידע על הפריט, מידע על הכמות במלאי, מידע על ההזמנות, מידע על ספקים ולקוחות ועוד. קשרים קיימים בין פעילויות ברכיבים שונים, למשל כניסה מהזמנה מקטינה את הכמות בהזמנה ומגדילה את הכמות במלאי, או ירידה במלאי מתחת לערך מסויים גורמת להוצאת הזמנה לחידוש מלאי. 214 ב בחירת מבנה נתונים (תסו)56166 6זט)סטז5 818 ) בשלב וה יש לארגן את כל הרכיבים המשתתפים למבנה נתונים לוגי של קבצים, רשומות ושדות ולבחון את אפשרויות הגישה לנתונים. לא קיימת שיטה מוגדרת לבחירת מבנה נתונים ולעיתים ניתן לפתור את אותה בעית עיבוד נתונים על-ידי שימוש במספר מבני נתונים שונים. למידת הנסיון המקצועי של מנתח המערכות חשיבות רבה בשלב הזה. ג. הגדרת מדדי ביצוע (15ח6ות6זוטף6 8806וחז0]ז06) על סמך הדרישות ממערכת המידע יש לקבוע מספר מדדי ביצוע. מדדי ביצוע אופייניים יכולים להיות זמן גישה ממוצע לשליפת רשומה, זמן עדכון רשומה וכדומה. את מדדי הביצוע ניתן להגדיר בעזרת נתונים כגון -- מספר ממוצע של רשומות שיש לשלוף לשם תשובה לשאילתה, תדירות השאילתות, תדירות העדכונים, אפיון הסיבוך של השאילתה הממוצעת, סוג הציוד בו משתמשים ועוד. : ד. בחירת מודל פיסי לאחסון (0ח0ו)56160 817061076 9/07886) בשלב זה יש להתאים את המודל הלוגי של הנתונים למודל פיסי כלשהו המוכר ומנוהל על-ידי המערכת לניהול קבצים הקיימת במחשב שבו תבוצע העבודה. בשלב זה כבר ידועים נתונים כגון: אורך רשומה (מקסימלי, מינימלי וממוצע), מספר רשומות בקובץ, מספר מפתחות, סוג המפתחות, סוגי העדכון שיש לבצע. מאחר וקיימות מספר רב של מערכות לניהול קבצים, ניחן להפוך את אותו מבנה לוגי למספר מבנים פיסיים, כל אחד בעל יתרונות וחסרונות משלו. יתכן שבשלב זה יהיה צורך לבצע מספר שינויים במודל הלוגי כדי להתאימו למערכת התוכנה לניהול קבצים. בגמר תהליך בחירת מבנה הנתונים לאחסון ידועים למתכנן מספר מאפיינים חשובים כגון -- נפח האחסון הדרוש ביחידות האחסון, זמן ממוצע לשאילתה, מספר ממוצע של גושים שיש לקרוא כדי לענות לשאילחה (גושי נתונים או גושי אינדקסים), ועוד. ה. יישום (9110₪)ח6ות1!6כוח1) יישום המודל הפיסי. הקמת הקבצים והפעלת מערכת המידע. ו. הערכת ביצועים (חסו81ט[8/= 66חגוחזס]ז6ק) על פי מדדי הביצוע שנקבעו יש לבדוק אם המבנה הפיסי שנבחר אכן עומד בציפיות. במידה ולא, יתכן שיהיה צורך לבצע מספר שינויים במודל הלוגי או במודל הפיסי, או בשניהם. שינויים אפשריים הם: הוספת מפתחות לגישה, הוספה או ביטול קשרים בין נתונים, שינוי במבנה הרשומות (גודל וחלוקה פנימית), הוספת אינדקסים או ביטול ועוד. 25 142 מאפייני קבציס המאפיינים השונים של הקבצים וההיבטים הכלכליים הקשורים בשיטות הארגון השונות הינם רבים. נסקור את החשובים שבהם. א, שעור פעילות הקובץ שעור הפעילות (410 ץ)וטווס/) מוגדר כיחס בין מספר הרשומות הפעילות בזמן העיבוד לבין המספר הכולל של הרשומות בקובץ. רשומה פעילה מוגדרת כרשומה הנשלפת בזמן העיבוד. לדוגמא, שליפת 10,000 רשומות מקובץ המכיל 100,000 רשומות מייצג שעור פעילות של 10%. לעומת זאת שאילתא השולפת רשומה בודדת מאותו הקובץ מייצגת שעור פעילות של 0.001%. בארגון סדרתי מעבדים תמיד את כל הרשומות, ללא תלות במספר רשומות התנועה. למרות זאת נגדיר כרשומות פעילות רק את אותן רשומות מקובץ.. האב שעבורן קיימת תנועה. בארגון סדרתי, עיבוד כל הקובץ או עיבוד חלק ממנו מתבטא בהפרש זמן קטן (הפרש זה מותנה כמובן בסוג העיבוד המבוצע ברשומות הפעילות) מאחר וצואר הבקבוק נוצר מסיבות קלט/פלט ולא ממשך העיבוד. זמן המחשב הנוסף הדרוש לעיבוד כתוצאה מתוספת תנועות הוא קטן בדרך כלל. ניתן לומר שהעלות לעיבוד תנועה, אשר מתבטאת במשך העיבוד, יורדת ככל ששעור הפעילות גדל. יחס זה הוא יחס לוגריתמי. עלות גבוהה קוב סדרתי שעור נמוכה פעילות 1% 1% 1% 0% תרשים 10-2: עלות עיבוד כפונקציה של שעור פעילות בקובץ סדרתי 206 ניתן לראות שאין זה כלכלי לעבד קובץ בארגון סדרתי כאשר שעור הפעילות הוא נמוך. כדי להגדיל את יעילות העיבוד הסדרתי, ניתן להגדיל את שעור הפעילות על-ידי צבירת תנועות ועיבוד באצווה (8310/08), כלומר יש לבצע עדכון תקופתי. צבירת תנועות וריצה (חגו) פעם בשבוע, תהיה יותר יעילה מבחינת עלות העיבוד, מאחר וגודל האצווה הממוצעת גדול יותר. גודל האצווה ריצה שבועית גודל האצווה ריצה תלת ?ומית גודל אצווה ממוצעת גודל אצווה מוצעת שבוע 2 שבוע 1 שבוע 2 שבוע 1 תרשים 3 : גודל האצווח כפונקציה של מספר הריצות התקופתיות בארגון לגישה ישירה, הרשומות ניתנות לשליפה מיידית. זמן עיבוד הרשומה נשאר קבוע, ללא תלות בגודל האצווה, מאחר ובכל מקרה שולפים רק את הרשומות הדרושות. בארגון ישיר אין שום יתרון לבנית אצוות, ומסיבה זו נדרשת שיטת העיבוד בגישה ישירה במערכות תקשורת שבהן מופע התנועות הוא אקראי ויש לתת להן שירות מיידי ללא צבירה באצוות. עלות עיבוד תנועה גבוהה נמוכה שעור פעילות 001 1 10 1000 תרשיס 10-4: עלות עיבוד כפונקציה של שעור הפעילות בארגון ישיר בארגון האינדקס סדרתי יש יתרון לשעור פעילות גבוה מאחר והוא מאפשר עיבוד סדרתי גם ללא האינדקסים. עם זאת הוא יקר יותר מהארגון הסדרתי מאחר ועליו לעדכן את האינדקסים בעת הוספת וביטול של רשומות. בשעור פעילות נמוך, ארגון האינדקס הסדרתי יקר יותר מהארגון הישיר בגלל הצורך לטפל באינדקסים. למרות העובדה שיטת האינדקס הסידרתי יקרה יותר, בכל שעור פעילות, משתי השיטות הקודמות. היתרון הגדול שלה הוא השילוב בין 27 שתי צורות גישה שונות לרשומות והאפשרות של המשתמש לבחור לפי התנאים בשיטה היעילה יותר. עלות לעלבוד תנועה גבוהה נמוכה שעור פעילות 0-01 1 10 100 תרשים 10-5: עלות עיבוד תנועה כפונקציה של שעור פעילות ושיטות ארגון הקובץ ב. זמן תגובה זמן התגובה (6ות1 6 ) מוגדר כמשך הזמן החולף מיצירת אירוע ועד לייצוג האירוע במערכת המידע. זמן התגובה כולל את זמן ההמתנה עד לביצוע העיבוד ואת זמן העיבוד עצמו (תרשים 10-6). באופן כללי, ניתן לומר שכדי להשיג זמן תגובה קצר יותר יש להעלות את עלות מערכת המידע כדי להפיק את אותו עיבוד. מאידך, התועלת המופקת ממידע מעודכן מצדיקה ולעיתים אף מחייבת את התוספת בעלות העיבוד. אירוע זמן | + זמן המתנה מו שא זמן המתנה ->] זמן תגובה ‏ -->] תרשיס 10-6: זמן תגובה קיימים יישומים בהם עיבוד תקופתי מספיק. צבירת תנועות עדיפה כאשר התועלת המופקת ממידע עדכני קטנה מעלות העיבוד. הצבירה יכולה להמשך שעות וימים. בארגון סדרתי זמן התגובה יכול לנוע בתחום בלתי מוגבל ובלתי מגודר מראש. אך ככל שזמן התגובה הדרוש קטן יותר, עלות העיבוד תהיה 208 גדולה יותר מאחר והאצוות תהיינה קטנות יותר וידרשו מחזורי עדכון רבים יותר להשלמת עדכון התנועות. הארגון הישיר מאפשר זמן תגובה מהיר ביותר ואין יתרון לבנית האצוות או מיון התנועות לפני העיבוד. באופן כללי ניתן לומר שעלות העיבוד בשיטה ישירה היא קבועה ביחס לזמן התגובה הדרוש. ארגון האינדקס הסדרתי נמצא בין שתי שיטות הארגון הקודמות. ככל שזמן התגובה הדרוש גדול יותר, עלות העיבוד תהיה נמוכה יותר בגלל היעילות שבבנית אצוות ומיון התנועות. בזמני תגובה קצרים, השיטה יקרה יותר מאשר בארגון הישיר בגלל הצורך בסריקת אינדקסים. עלות ע?בוד תנועה גבוהה אינדקס סדרת? נמוכה זמן תגובה ימים | שעות | דקות שניות תרשים 10-7: עלות עיבוד תנועה כפונקציה של זמן התגובה ושיטת ארגון הקוב ג. סוג היישום קיימים יישומים המתבצעים ביעילות רבה בארגון סדרתי בקבצים הממוינים בסדר מסוים. למשל בחישובי משכורת, יש לסרוק את כל הקובץ פעם בתקופה ולחשב לכל עובד את המשכורת. לעומת סוג זה של ישומים, קיימים יישומים המחייבים גישה ישירה לנתונים. למשל במערכת להזמנת כרטיסי טיסה, יש לאפשר גישה ועדכון מיידי לכל הזמנת כרטיס ואין כל אפשרות לתת תשובה מיידית ללקוח בשיטות עיבוד באצווה. כל יישום בו נדרש עדכון ואיחזור נתונים מיידי מחייב אחזקת הקבצים ביחידות אחסון בגישה ישירה. קיימים יישומים בהם יש צורך בגישה ישירה לקובץ וגם גישה סדרתית, ולכן משתמשים עבורם בארגון האינדקס הסדרתי. יישום נמדד גם במידת האינטגרציה בין הקבצים השונים. אירוע מסוים יכול להיות קשור בקבצים שונים. לדוגמא, מכירת מוצר מחייבת עדכון רשומת 209 לקוח ורשומת מלאי. בארגון סדרתי האינטגרציה מבוצעת על-ידי מספר ריצות עדכון שונות. בארגון נתונים אחר ניתן לבצע עדכון בו"זמני של מספר קבצים בשיטות של גישה ישירה. ביישומים שבהם יש אינטגרציה בין הקבצים דרוש תכנון מדוקדק של כל הקבצים כדי לאפשר עדכון בו-זמני. ד. גודל הקובץ הדיסקים שהם יחידות לאחסון לגישה ישירה (460039/ 6זוכם-- 52 8 51078866) יקרים יחסים לסרטים מגנטיים ולכן מחיר אחסון יחידת מידע בהם גבוה יותר. אחזקת קובץ ביחידת אחסון לגישה ישירה יקרה יותר בהשוואה לאחזקתו בסרט מגנטי. אם הקובץ גדול מאד, אחזקתו על דיסק פירושה תפיסת מספר רב של כוננים. לעיתים מעבירים את הקובץ מסרט לדיסק לצורך עיבודו, ובגמר העיבוד מחזירים אותו לסרט. הדיון שלמעלה טוב רק למקרה שבו עומדת ברירה לפני המשתמש בין אחזקת הקובץ בדיסק מגנטי או בסרט, או כאשר הוא זקוק לקובץ לשם עדכון בגישה ישירה בלבד ולא למשך עיבוד שוטף. גם במקרה זה יש לשקול את העלות של העברת הקובץ מסרט לדיסק ולהיפך לעומת עלות אחזקתו בדיסק בלבד. עם התפתחות מערכות עיבוד בתקשורת אין למעשה למשתמש כל ברירה שהיא. החלטתו להפעיל מערכת עיבוד בתקשורת גורמת הפעלת יחידות אחסון לגישה ישירה בלבד לצורך גישה ישירה לקבצים כל זמן שמערכת התקשורת משרתת את הצרכנים. לגודל הקוב חשיבות רבה. בארגון אינדקס סדרתי גודל הקובץ משפיע על מספר רמות האינדקס ולכן על זמן הגישה לרשומה. בארגון ישיר אין "דוחסים" את הקובץ כדי לאפשר טיפול נוח בגלישות, ופירושו השארת שטחי אחסון פנויים. המשמעות הינה הגדלת נפח האחסון הדרוש. ה. שעור גידול הקובץ שעור גידול הקובץ הוא היחס בין נפח הקובץ בין שתי יחידות זמן אשר מושפע ממספר הרשומות המתווספות והמתבטלות במשך התקופה. לדוגמא, קובץ תנועות מלאי הוא קובץ הגדל כל חזמן מאחר ומצטרפות אליו כל תנועות המלאי של העיבוד האחרון. לעומתו קובץ המלאי הוא קובץ הגדל פחות, בשיעור של מספרים קטלוגיים חדשים ומספרים שמתבטלים. שיעור הגידול של הקובץ משפיע על עלות העיבוד, מאחר וכל שיטה משתמשת בטכניקות שונות לטיפול ברשומות החדשות או לביטול רשומות. בארגון סדרתי, הוספת רשומה או ביטולה מחייבת העתקת הקובץ לקובץ חדש. פעולות אלו הן חלק מתהליך העדכון שבו מעתיקים תמיד את הקובץ. בארגון ישיר או אינדקס סדרתי קיים קושי מסוים בהוספת או ביטול רשומות בגלל בעית הגלישות. לאחר שעור גידול מסוים, שתי השיטות מחייבות ארגון מחדש של הקובץ. גידול מהיר של קובץ, יכול לחייב יחידות אחסון נוספות ויכול להשפיע על זמן העיבוד בגלל העברת רשומות לשטחי גלישה. 20 קיימות שיטות ניהול קבצים שאינן מאפשרות לקובץ לגדול מעבר לגודל שנקבע בזמן בנייתו. תיתכן שיטה המתאימה לקובץ בגודל מסויים ואינה מתאימה לקובץ השונה ממנו בגודלו. ו. תדירות פניה לרשומה תדירות הפנייה לרשומות הקובץ אינה שווה. יש רשומות שפונים אליהם בחדירות גבוהה ואילו לאחרות הפניות הן בתדירות נמוכה יחסית. לדוגמא מערכת הזמנת כרטיסי טיסה שבה הולך וגדל מספר הפניות לרשומות המייצגות את הטיסה ככל שמועד הטיסה מתקרב. לאחר ביצוע הטיסה, תדירות הפניה לרשומות יורדת באופן משמעותי ולמעשה אין פניות כלל. דוגמא אחרת היא של חשבונות עובר ושב בבנק שבו קיימים חשבונות פעילים מאד וחשבונות פעילים פחות. על המתכנן לשקול כיצד לייעל את הגישה לרשומות הפעילות מאד מבלי להעלות את מחיר המערכת עבור כל הרשומות. ניתן להחזיק אותן בזכרון או לבנות אינדקס מיוחד בעל מספר רמות קטן יותר לרשומות הפעילות בלבד כפי שמוצג בתרשים 10-8. = רשומות אינדקט רגיל פעילות נתונים (שתי רמות) ‏ -----6] = אחת) תרשים 10-8: קוב עס אינדקס רגיל ואינדקס לרשומות פעילות ז. גודל הרשומת שיטות הארגון תומכות ברשומות במבנים שונים, ולא תמיד בכל המבנים האפשריים. אם חייבים להשתמש ברשומות באורך משתנה, למשל, אשר אינם מקבלים תמיכה בשיטת ארגון ובתוכנה מסויימת, יש צורך לחפש דרך שונה להגדרת הרשומות או לעבור לשיטת ארגון אחרת. 221 ח. שעור הדחיסות כאשר כל השטח המוקדש לקובץ מלא ברשומות נאמר שהקובץ דחוס ב"100%. קיימות שיטות בהן מתבצעת הקצאה מראש של כל שטח הדיסק שידרש לקובץ למרות שמספר הרשומות הנמצאות בנקודת זמן זו בקובץ קטן בהרבה ומתקבל קובץ לא-דחוס. כאשר הקובץ אינו דחוס מתעוררת הבעיה של אפשרות האבחנה בין מקום תפוס למקום ריק. קיימות מערכות לניהול קבצים המטילות אחריות זו על המשתמש ועליו לזהות אם הרשומה קיימת או לא. במערכות מתקדמות יותר, נושא זה מנוהל על-ידי התוכנה לניהול קבצים. בעיה נוספת בקבצים לא צפופים היא ניצול השטח הפנוי מחדש. קיימות שיטות בהן אין אפשרות להשתמש בשטח מחדש, בעוד אחרות מנצלות את השטח שהתפנה לאחסון רשומות חדשות מבלי להגדיל את הקובץ. בנושאים אלו דנו בפרקים קודמים. ארגון נתונים בגישה ישירה רגיש מאד לצפיפות הקובץ מפאת הצורך בניהול הרשומות הגולשות. ט. גיבוי בכל מערכת מידע ממוחשבת קיים אלמנט של גיבוי (קע286%) המאפשרת התאוששות וחזרה לעבודה תקינה לאחר תקלה במערכת. הארגון הסדרתי מאפשר גיבוי פשוט יחסית מאחר והוא אינו פוגע ברשומות הקיימות (קובץ אב) לצורך העדכון, ובכל מעבר עדכון מופק קובץ בן חדש. במקרה של תקלה, ניתן להריץ פעם נוספת את אותה תוכנית ולהפיק קובץ-בן חדש. בשיטות ארגון אחרות עדכון רשומה בקובץ מתבצע על ידי עדכונה בזכרון והחזרתה מעודכנת ליחידת האחסון במקום הרשומה המקורית. בשיטות האלה, תקלה בעדכון אינה מאפשרת התאוששות מיידית מאחר ויש צורך להחזיר תחילה את הקובץ למצבו המקורי לפני העדכון. מערכות המשתמשות בשיטות ארגון מתקדמות מחייבות מערכי גיבוי מורכבים כדי לאפשר התאוששות לאחר תקלה וחזרה לעבודה תקינה. י. שימוש צפוי | קיימים קבצים המשמשים לקריאה בלבד (ע1ח0 8696) כמו למשל קובץ יתרות חשבון המשמש לקריאה בכל עת ומתעדכן אחת לתקופה. אם נבנה אינדקסים משניים רבים לקבצים אלה נוכל לקבל זמני גישה סבירים לפי מספר מפתחות מבלי להעלות את זמן העדכון. בקבצים אלה ניתן לבנות את האינדקסים אחת לתקופה, למשל לאחר העדכון, מאחר ואין הם משתנים בין התקופות. לעומתם בקבצים עם עדכונים תכופים כל מפתח משני נוסף מגדיל בצורה ניכרת את זמן העדכון. יא. מניעת גישה בלתי מורשית במערכות עיבוד שונות ובמיוחד במערכות לגישה ישירה הפועלות בתקשורת יש לקבוע את ההרשאה לגישה מבחינת הסודיות או הבטיחות במערכת. יש לקבוע כללים אילו תוכניות ואילו משתמשים יכולים לגשת לקבצים או לרשומות ואילו פעולות מותרות לביצוע על ידי כל משתמש (קריאה בלבד, ביטול, עדכון). 222 יב. אמינות יחידות אחטון הקבצים מאוחסנים ביחידות אחסון שונות ומורכבים בכוננים הקשורים ליע'"מ באמצעות ערוצים לשם עיבוד. תקלה יכולה לקרות בכל אחת מהחוליות ולמנוע את זמינות הקובץ למשתמש. קיימות שיטות שונות להעלאת זמינות הקבצים כמו למשל על ידי אחזקת כונני דיסקים חליפיים אחזקת קובץ כפול על כוננים שונים בערוצים שונים, ועוד. 4 סיכוס נסכם בקצרה את השיקולים השונים לבחירת קבצים. בחירת מצע האחסון מכתיב את שיטת הארגון. אחסון הקובץ בסרט מאפשר שיטת ארגון סדרתית בלבד. השיטות המתקדמות אפשריות רק ביחידות אחסון בגישה ישירה. השיטה הסדרתית דורשת עיבוד כל הקובץ ולכן בהשוואה לשיטות האחרון היא אינה יעילה בשעורי פעילות נמוכים. במציאות נמצא שבקבצים רבים שעור הפעילות הוא פחות מ10%7. שיטות הארגון המתקדמות מאפשרות גישה לרשומה לפי מפתח. זמן נוסף דרוש לתרגום המפתח לכתובת הפיסית של הרשומה. שיטות אלה משנות את תוכן הקובץ בזמן העיבוד ולכן מחייבות מנגנונים מיוחדים לשחזור והתאוששות. בשיטה הסדרתית נוצר קובץ חדש בכל עדכון ולכן הקובץ הישן נשמר כפי שהיה לפני העיבוד. : יישום המחייב עדכון מיידי בי זמני של מספר קבצים ניתן לביצוע רק בשיטות ארגון מתקדמות. בארגון סדרתי, עדכון של מספר קבצים מחייב מספר מעברי עדכון נפרדים. הקריטריונים העקריים לבחירת שיטות ארגון לא סדרתיות הם: -- מהירות גישה: הארגון הישיר הוא המהיר ביותר. -- דרישות עיבוד: אינדקס סדרתי מאפשר גם עיבוד סדרתי וגם עיבוד ישיר. בארגון הישיר אין אפשרות לעיבוד סדרתי אלא אם מבצעים מיון. -- שעור דחיסות הקובץ: הארגון הישיר הוא הגרוע ביותר מבחינה זו, כלומר יש ניצול נמוך של שטח האחסון. -- ארגון מחדש של הקובץ: נדרש במערכות שבהן נוצרת גלישת רשומות. 23 5 אירוע -- תכנון קבציס מטרת האירוע היא להציג יישום של המודל לתכנון קבצים שהוצג בסעיף 2 ולהדגיש השיקולים השונים המנחים את מנתח המערכות בתכנון רשומות ושיטות לארגון קבצים. הפתרון המוצג מתרכז רק בנושא ארגון קבצים ותכנון רשומות ואינו עוסק בניתוח מערכת המידע. יש לציין שאין זה הפתרון היחיד או היעיל ביותר דוקא. הוא נבחר בעיקר בגלל מגוון השיטות לארגון קבצים המופיעות בו. האירוע אינו מכוון לפתור בעיה בשלימותה אלא להציג את דרך הפתרון בלבד ולכן אין להקיש ממנו למציאות כלשהי. תיאור הבעיה אוניברסיטה גדולה החליטה למכן את הספריות בקמפוס. הספריות מפוזרות מבחינה גיאוגרפית בכל רחבי הקמפוס ומכילות כרבע מיליון ספרים. הספריות מנהלות באופן נפרד את ההשאלות. באוניברסיטה כ-20,000 סטודנטים המבצעים כ-400,000 השאלות במשך השנה. יש לבנות מערכת מידע שתשרת את כל הספריות ותאפשר: א. | הכנסת כל הנתונים למערכת בצורה ישירה באמצעות מסופים, ב. | גישה מהירה למידע אודות ספרים, סופרים, השאלות וכדומה, ג. | הפקת מספר דוחות תפעוליים. רשימת התנועות השונות להכנסת נתונים למערכת: 1. הוספת ספר חדש. התנועה תכלול נתונים על הסופר או סופרים, פרטים כלליים של הספר ומילות המפתח של הספר. על המערכת לבדוק אם הסופרים ומילות המפתח מוגדרים במערכת ואם לא, להתריע על כך. 2 עדכון נתוני ספר. שינוי שם סופר או מילת מפתח מחייב בדיקה או הם מוגדרים במערכת. 3 ביטול ספר. הביטול יגרום לביטול כל המידע הקשור בספר. הביטול אפשרי רק אם הספר אינו נמצא באף ספריה ואין לו השאלות. 4. הוספת מילות מפתח לספר או ביטול מילות מפתח. 5. הוספת סופר חדש למערכת. התנועה תכלול פרטים כלליים על הסופר. 6. עדכון נתוני סופר. 7. ביטול רשומת סופר. המערכת צריכה לבדוק שלסופר זה אין אף ספר בספריה. 8 הוספת ספריה חדשה למערכת. התנועה תכלול פרטים כלליים על הספריה (למשל, קבוצות הספרים שנמצאים בה). 9. עדכון נתוני ספריה. 0. ביטול רשומת ספריה. המערכת תבדוק שאין ספר הרשום בספריה זו. 24 1. הוספת עותק של ספר לספריה. המערכת תבדוק אם הספר והספריה מוגדרים. 2. ביטול עותק מספריה. .3 1. פתיחת השאלה. התנועה תכלול את הנתונים הכללים של הסטודנט ואת נתוני הספר המושאל. 4. החזרת ספר לספריה. המערכת צריכה לאפשר שאילתות בגישה ישירה ומספר מסוים של דוחות תפעוליים. רשימת השאילתות בגישה ישירה: 41 2 3 4 5 מירב הפרטים על ספר. גישה לפי שם הספר. מירב הפרטים על סופר. גישה לפי שם סופר. רשימת הספרים שנכתבו על-ידי סופר מסוים. גישה לפי שם סופר. רשימת ספרים בנושא מסוים. גישה לפי מילת מפתח אחת או יותר. מספר העותקים של ספר נתון בספריה מסויימת. גישה לפי סמל ספריה ושם ספר. רשימת ההשאלות לספר בספריה נתונה. גישה לפי סמל ספריה ושם ספר. רשימת הספרים שהושאלו לסטודנט. גישה לפי מספר תעודת זהות וסמל ספריה. הדו"חות התפעוליים במערכת: 1 רשימת הסופרים ממוין לפי א'-ב'. .2 3 רשימת הספרים לפי נושא. רשימת הספרים שעבר שבוע מאז תאריך החזרה צפוי. מיון לפי סמל ספריה ושם ספר. במערכת מסוג זה אפשריים תנועות, שאילתות ודו"חות נוספים המותאמים לנוהלי העבודה, לשיטות הארגון ועוד. תיאור הפתרון א. זיהוי המרכיבים של הבעיה בשלב זה נזהה את רכיבי הנתונים הנדרשים במערכת לניהול ספריות. -- עבור כל ספר יש לנהל את הנתונים הבאים: נתונים כלליים על הספר (שם הספר, מספר קטלוגי, שפה, שנת הוצאה). מילות מפתח. לכל ספר יתכן מספר רב של מילות מפתח המזהות את נושא הספר. המחברים. לספר יתכן מחבר אחד או יותר. מלאי הספר. הספר יכול להופיע במספר ספריות במספר עותקים. עבור כל ספריה יש לנהל נתונים על כמות עותקים תקנית, כמות עותקים בפועל, תאריך כניסת הספר לספריה. השאלות. לכל ספר יתכנו מספר רב של השאלות מספריות שונות. עבור כל השאלה יש לנהל את נתוני הזיהוי הכלליים של הסטודנט, תאריך השאלה, תאריך החזרה צפוי. 205 -- עבור כל סופר יש לנהל את הנתונים הבאים: + נתונים כלליים על הסופר (שם הסופר, קוד שפה, מין, שטחי התעניינות, מקום הולדתו, שנים בהם פעל). * | הספרים שהמחבר כתב ומופיעים במערכת. -- עבור כל ספריה יש לנהל את הנתונים הבאים: + נתונים כלליים על הספריה (שם הספריה, כתובת). א מלאי הספרים בספריה. בכל ספריה מספר רב של ספרים. עבור כל אחד יש לנהל את מספר העותקים התקני ומספר עותקים בפועל. + השאלות שבוצעו בספריה. עבור כל השאלה יש לנהל את פרטי הספר המושאל ופרטי השואל. -- עבור כל השאלה יש לנהל את הנתונים הבאים: נתונים על השואל (שם, מספר זהות, כתובת). הספרים הנמצאים ברשותו של השואל. עבור כל ספר יש לנהל את תאריך ההשאלה ותאריך החזרה צפוי. + * ב. בחירת מבנה נתונים | סביר להניח שעבור כל סוג נתונים אפשר להתאים מבנה לוגי של נתונים אשר מתאים לו ביותר. בתרשים 9 המבנים הלוגיים לאוכלוסיות הנתונים השונות. : פרטים כללים על הספר ה אלפ 2. סופר פרטים כללים על הסופר סופרים ה 206 3 ספריה 4. השאלות תרשים 10-9: מבני נתוניס לקבצים שוניס כפי שניתן לראות קיימים קשרים רבים בין הרכיבים השונים. ניהול הנתונים במבנה כפי שהוצג, יגרום לכפילות נתונים גדולה ולבעיות חמורות בזמן עדכון. שיטת היישום תהיה להחזיק את הנתונים הכלליים במקום אחד בלבד ולהשתמש במפתחות שונים ליצירת הקשרים ביניהם. מאחר והנחנו פתרון בעזרת מערכת תוכנה לניהול קבצים לא הוצגו המצביעים השונים. קיימות מערכות לניהול בטיסי נתונים (כגון 21/1 של יבמ) המאפשרות יישום פשוט של מבנים לוגיים אלה. תרשים 10-10 מציג את מגוון הקשרים הקיימים בין הנתונים שבקבצים השונים. ג. בחירת מודל פיסי ניתן ליישם את המבנה הלוגי המוצג במספר מודלים פיסיים שונים ונציג לדוגמא אחד מהם. נחזור ונפרט את רשימת הקבצים במערכת, שיטות הארגון שלהם ותאור הרשומות המרכיבות אותם. 27 פרטים כללים על הספר מילות מפתח .יי = 2 7% עותקים ב ---ח)| 0-0 תרשיס 10-10: קשריס בין נתוניס בקבציס שוניס -- קובץ סופרים יכיל את כל הפרטים על הסופרים המוכרים במערכת. הקובץ יאורגן כקובץ אינדקס סדרתי לייעול תהליך הפקת הדו"ח החודשי. לקובץ מפתח אחד --- שם סופר. שנים בהם מקום שטח? תרשים 10-11 - קובץ ספרים מכיל את הפרטים הכלליים של הספר ואת מספר העותקים בספריות השונות. הקובץ יאורגן בארגון ישיר עם פניה בעזרת חישוב. המפתח הראשי יהיה מספר קטלוגי מאחר וזה יהיה נתון הקשר עם רוב הקבצים האחרים ולכן הגישה בעזרתו תהיה המהירה ביותר. בנוסף יש לקובץ מפתח משני, שם ספר, המשמש בעיקר לשאילתות. 208 רשומת שנת אורך מספר שפה שם ספר פרטים 2 רשומת 0 מפפר | חר | אורך 2/2 קוד מספר | | רשומ בפועל עותקם לספריה רשומה ספריה קטלוגל בספריה |==- מפתה ראשי מפתת משני-->] תרשיס 10-12 - קובץ קשר. מאחר ולכל ספר יתכנו מספר סופרים וכל סופר יכול לכתוב מספר ספרים ניתן לנהל קשר זה בין סופרים לספרים בעזרת רשומת קשר מיוחדת. קובץ הקשר יאורגן במבנה אינדקס סדרתי כדי שניתן יהיה לקרוא אותו לפי מפתח חלקי (ראה תרשים זרימה של שאילתה). מספר שם סופר קטלוגי מפתח משנל --*] מפתח ראשל תרשיס 10-13 -- קובץ מילות מפתח יכיל את כל מילות המפתח המוכרות במערכת. הקובץ יהיה במבנה אינדקס סדרתי. מפתח קטלוג? מילת מפתח מפתח משנ-*--| פתח ראשל תרשים 10-14 -- קובץ ספריות יכיל את הפרטים הכלליים של הספריה. מאחר ומספר הספריות קטן יחסית וניתן לבנות את סמל הספריה בצורה צפופה עולה, יאורגן קובץ זה בארגון ישיר עם יחוס ישיר. 209 תרשיס 10-15 -- קובץ השאלות יכיל את פרטי השואל ורשימת כל הספרים המושאלים לו. הקובץ יאורגן במבנה אינדקס סדרתי. שיטה זו תאפשר שימוש במפתח חלקי (לקראת רשימת כל הספרים של סטודנט למשל). הקובץ יכיל שני סוגי רשומות: רשומות סטודנט ורשומות השאלה. אור ?2 סוג כתובת ו / ם סטודנט| ".ג" | מספר זהות) ישומת 20 סטודנט תאריך | תארי | אורך | מספר | קוד | סוג מספר | רשומות החזרה | השאלה | רשומה | קטלוגי | ספריה | 8 זהות השאלה -- ראשי מפתח משני תרשיס 10-16 תרשימים 10-17 ו-10-18 מציגים תהליך לוגי של שאילתות. האחת מבקשת חתך לפי סופר והשניה -- לפי נושא. 200 שאילתא א': רשימת ספרים שנכתבו על-ידי סופר. קרא את העבר שם סופר למפתח ראשי קובץ סופרים העבר נתונים כללים של הסופר שגיאה: סופר לא מוכר העבר שם טופר למפתח משני קובץ קשר קרא רשומת קשר העבר מספר קטלוגי מרשומת קשר למפתח ראשי קובץ ספרים שגיאה: מצב בלתי סביר הצג נתונים למסך תרשים 10-17 : תרשיס מלבני לשאילתא אי'. 21 קרא את השאילתא שאילתא ב': רשימת כל הספרים בנושא נתון העבר מילת מפתח למפתח ראשי קובץ מילות מפתח קרא רשומת מילות מפתח שגיאה:מילת מפתח לא קיימת בן העבר מספר קטלוג? מרשומת מללות מפתח למפתח ראשל ספרילם שגיאה: מצב בלת? סביר הצג נתוני הספר תרשיס 10-18: תרשיס מלבני לשאילתא ב'. 222 6 שאלות ג. מקובץ סטודנטים באוניברסיטה יש לשלוף את רשומות כל הסטודנטים הגברים הלומדים מתמטיקה וגילם מעל 21. הסבר כיצד תבצע שליפה זו עבור: -- קובץ סדרתי, -- קוב? מאורגן בגישה ישירה, -- קובץ אינדקס סדרתי, -- קובץ עם אינדקסים משניים. 2. ציין מהם המבנים המתאימים ביותר לדעתך עבור כל אחת מהמערכות הבאות: -- ניהול רשומות רפואיות של חולים במרפאה, -- מינויי טלפון, -- קובץ המתאר מבנה ארגוני, - עץ מוצר, -- קובץ עובדים לתשלום שכר עבודה. 3 עליך לתכנן מערכת מידע לניהול רשומות רפואיות. אוכלוסית המבוטחים מונה כמיליון וחצי מבוטחים. רשומת מבוטח צריכה להכיל בין 200 ל-400 תווים (שם, גיל, כתובת ועוד). בממוצע יש לכל מבוטח את הנתונים הבאים: -- חמישה ביקורים בבית המרקחת. בכל ביקור הוא מקבל 2.8 תרופות. כל רשומה תרופה מכילה 30 תווים. -- 0.8 אשפוזים. רשומת אשפוז באורך 1000 תווים. -- 2.4 ביקורים אצל רופא. אורך רשומה 70 תווים. המערכת משתמשת ביחידת אחסון המאפשרת בניית גושים בגודל 7000 תווים כל אחד. זמן חיפוש ממוצע 25 מילישניות, השהיה סיבובית 10 מילישניות, מהירות העברת נתונים 0.8 מיליון בתים לשניה. בכל מסילה 5 גושים. 50 מסילות לגליל. א. תכנן את הקבצים ושיטות הארגון הדרושים למערכת. ב. חשב את גודל הרשומות בכל הקבצים ואת שטח האחסון הכולל הדרוש למערכת. ג. חשב את הזמן הדרוש לשליפת רשומת ביקור במרפאה לפי שם מבוטח ותאריך ביקור. ד. חשב את הזמן הדרוש לסריקת הקובץ למציאת מספר המבוטחים המשתמשים בתרופה מסוימת. 23 פרק אחד-עשר מערכות לניהול קבצים 1 מבוא 2. שיטות עבודה במערכות לניהול קבציס 3 ניהול קבצים ביחידות אחסון בגישה ישירה 4 אבטחה ופרטיות בניהול קבציס 5 סלבום 6 שאלות בפרק זה נציג את המודל הכללי של מערכות לניהול קבצים ונסביר את שיטות העבודה של מערכות אלו. 255 1 מבוא המערכת לניהול קבצים (וחט5ץ5 1ח6וח886ח18 16" -- %15) היא התוכנה המאפשרת את הגדרת הקבצים והטיפול בהם. זוהי אחת המערכות החשובות אשר בלעדיה נושא ארגון הנתונים היה הופך למורכב ביותר. לרוב > מקבל המשתמש את התוכנה מיצרן המחשב או מבית תוכנה, ולעיחים רחוקות הוא כותב תוכנה זו בעצמו כפי שמקובל במחשבים זעירים. המגוון הרחב של מבנים פיסיים וריבוי סוגי יחידות האחסון הופך את משימת ניהול הנתונים למורכבת ביותר. הבעיות העיקריות הן: א. מגוון רחב של מבנים פיסיים: קיים מספר גדול יחסית של מבנים פיסיים לייצוג נתונים שיש להסב ולהתאים למבנה נתונים לוגי בכדי לבצע את העיבוד. המבנים הפיסיים תלויים ביחידות האחסון. ב. נפח אחסון ומהירויות העברת נתונים: יחידות האחסון השונות הן בעלות נפחים ומהירויות העברת נתונים שונים. יש להתחשב בנתונים אלו בעת תכנון הקבצים ולהציב אותם ביחידות האחסון בהתאם לנפח האחסון הדרוש ובהתאם למידת הפעילות. - יחידות העברת נתונים: העברת הנתונים בין המחשב ויחידות האחסון נעשית ביחידות שונות. היא יכולה להתבצע בגושים, בבתים או במילים בהתאם לסוג המחשב וסוג יחידת האחסון הקשורה אליו. במחשבים גדולים העברת הנתונים הינה בגושים. ד. צורת ייצוג הנתונים: לעיתים נתונים מיוצגים בצורה שונה ביחידות אחסון שונות ולכן יש צורך בביצוע תרגום לקודים הנדרשים בעת העיבוד. ה מגוון רחב של פעולות קלט/פלט: ליחידות האחסון מגוון רחב של פעולות קלט/פלט. רוב הפעולות מותאמות לסוג יחידת האחסון כגון גלגול סרט מגנטי קדימה, הזזת זרוע דיסק וכדומה. בתוך קבוצת יחידות האחסון לגישה ישירה יש מגוון רחב של פעולות בהתאם לסוג המחשב וסוג היחידה הקשורה אליו. ו. | מגוון מצבים חריגים: על המערכות לטפל במגוון של מצבים חריגים בזמן ביצוע פעולות הקלט/פלט, כגון: סוף סרט מגנטי, שגיאות בהעברת נתונים בין יחידת האחסון ווכרון המחשב (סזזם 291 למשל), חיפוש עם מפתח שאינו קיים באינדקס ועוד. על מנת להקל את משימת ניהול הנתונים עבור המשתמש מספקים יצרני המחשבים תוכנה סטנדרטית לניהול הנתונים אשר כוללת אפשרויות התאמה רבות לצרכיו של כל משתמש. מטרות תוכנה זו הם: א לאפשר למשתמש מגוון מסוים של מבנים לוגיים ופיסיים המאפשרים עיבוד נוח של הנתונים תוך שימוש יעיל ביחידות האחסון. 27 ב. תמיכה במגוון רחב של יחידות אחסון בעלות ביצועים ועלויות שונות. מערכות ניהול נתונים משחררות לחלוטין את המשתמש מפנייה לקובץ פיסי. התוכניות אינן קשורות ליחידת אחסון מסוימת אלא פונות ליחידת אחסון בפועל (66:ש126 [8ט1זו/). הקשר בין יחידת האחסון הפיסית ליחידה בפועל מתבצע באמצעות מערכת ההפעלה על סמך נתונים הנמסרים לה על ידי המשחמש בעזרת כרטיסי פיקוח (80886ח13 [0ז1ח0) 05 -- .161). ג. הגדלת יעילות פעולות קלט/פלט. מערכות ניהול הנתונים מטפלות באחסון, בקריאה ובכתיבה של גושים לקבלת יעילות עיבוד מירבית. ד. תרגום קודים ושחרור המשתמש מהתייחסות לייצוג הפנימי של הנתונים. בפרק זה נציג מודל כללי לשיטת העבודה של מערכת ניהול נתונים וכמה מהשיטות השונות לניהול הקבצים ביחידות האחסון. 208 2 שיטות עבודה במערכות לניהול קבציס קיימות שתי יחידות תוכנה המטפלות בניהול הנתונים -- תוכנית המשתמש הקובעת את המבנה הלוגי של הנתונים ואת דרישות העיבוד, והתוכנה לניהול קבצים המטפלת בתרגום המבנה הלוגי למבנה פיסי, באחסון, בפעולות קלט/פלט ובחריגים. התקשורת בין שתי יחידות אלה מתבצעת בעזרת טבלת תיאור קבצים אשר נכנה אותה 07ת (18016 מ0וזק1ז12650 1-116). במערכות יבמ היא נקראת טבלת בקרת נתונים -- 268 (8100% |110ח00 28:8) ובמערכות סי.די.סי. היא נקראת טבלת מידע קבצים -- 1:11 (18016 ח0נז018/ח1 1-116). טבלה זו שייכת לתוכנית ונמצאת בזיכרון בזמן העיבוד. ניהול קבצים הר המשתמש תרשים 11-1: טבלת תיאור קבצים (דסת) טבלת תיאור קבצים טבלת תיאור קבצים מכילה אוסף של פרמטרים ושטחים משותפים לשתי יחידות התוכנה והיא מקשרת ביניהן. יש בה את כל הפרמטרים הדרושים להגדרת מבנה הקובץ ולפחות הפרטים הבאים בהתאם למבנה הקובץ: -- שיטת ארגון הקובץ, -- גודל הגוש וסוג הגוש (אורך קבוע, משתנה, לא מוגדר), -- גודל הרשומה, סוג הרשומה, אורך מירבי ומזערי, מספר רשומות בגוש, -- מיקום המפתח (עבור שיטות ארגון לא סדרתית), -- תיאור תווית ([1.806) הקובץ, -- יחידות אחסון שהקובץ רשום בהן. תוכניתן הכותב בשפת סף (ז3016ת4556/) חייב לדאוג לבניית הטבלה כאשר הוא נעזר בהוראות מקרו מיוחדות. תוכניתן הכותב בשפה עילית אינו מתיחס לטבלה זו באופן ישיר, אלא כותב פרמטרים כלליים שמהם נבנית הטבלה הדרושה. להגדרת המבנה הלוגי של הקובץ בשפה עילית משתמשים בשפת פרמטרים להגדרת נתונים (80886ה18 תסטות6 2818 -- 001 המהדר (זט|וקוחס?)) מכיל בתוכו שגרות המתרגמות פרמטרים אלו לטבלת תיאור הקבצים (021/). שגרות אלו קרויות גם מישק טבלת תיאור קבצים (167]806ח1 דכת). 209 תוכנית מהדר ומישק מכונה 5 תוכנית מקור תרשים 11-2: בנית דסם? בעזרת מהדר הפרטים המלאים בטבלת תיאור קבצים גרשמים בשלשה מועדים שונים: -- בעת הידור התוכנית, -- בעת טעינת התוכנית לזיכרון, -- בעת ביצוע התוכנית ("ריצה" -- חטת ). המהדר בונה את טבלת התיאור עבור כל קובץ המוגדרּ בתוכנית. קיימים פרטים שאינם ידועים בזמן ההידור, כמו לדוגמא באיזו יחידת אחסון ימצא הקובץ, בסרט או בדיסק ובאיזה דיסק. הגדרה מפורשת היתה מחייבת הידור מחדש בכל פעם שיחידת האחסון משתנה (במידה שניתן לשנותה). נתון זה נמסר רק בזמן קריאת כרטיסי הפיקוח המפעילים את התוכנית, ולכן הוא נרשם בטבלת תיאור הקובץ רק בזמן טעינת התוכנית לזיכרון. בנוסף קיים מידע הנמסר רק בזמן הריצה, לדוגמא התווית של הקובץ ידועה רק לאחר שפתחנו אותו. לאחר פתיחת הקובץ (צ[00) מכילה טבלת תיאור הקובץ את כל הפרמטרים הדרושים לעיבוד הקובץ בעזרת מערכת ניהול הקבצים. תרשים 3- 1 מדגים את התהליך של מילוי הנתונים בטבלה. תוכנית 0 מכונה תרשים 11-3: השלמת נתונים בטבלת תיאור הקוב בזמן הידור (1) בואמן טעינה (2) ולאחר פתיחת הקוב (3) 200 מודל כללי לניהול קבצים מערכת התוכנה לניהול קבצים (וח5)6ש5 )ח6וח886ה18א 116 -- 5ואת) אינה תוכנה סטנדרטית כדוגמת שפת תכנות קובול או פורטרן למשל. בעוד ששפות אלו דומות מאד מכיון שחלק מהאיפיון שלהן הינו סטנדרטי, הדמיון שישנו בין מערכות התוכנה לניהול קבצים הינו במישור הפונקציונלי בלבד. יש שוני רב מאד בין מערכות התוכנה של יצרנים שונים ואפילו בין מערכות תוכנה של אותו יצרן אשר פועלות במחשבים שונים. עם זאת ניתן ללמוד ולהכיר את מודל הפעולה של מערכת ניהול קבצים ואחר-כך ללמוד ולהכיר את התכונות המיוחדות לכל מערכת תוכנה שבה חמשתמשים. תיאור מפורט של המודל ניתן בתרשים 11-4 ובהסבר הנלווה. תוכנית בשפת מכונה תרשיס 114: תזריס העבודה במערכת תוכנה לניהול קבציס 1. תוכנית המשתמש מבצעת פקודת ניהול קובץ (0818 -- !אכ 6 0ח88606ת13/) ובשלב זה עובר הפיקות ל-%158. תוכנה זו מפענחת את הבקשה: לאחר הפענוח היא משתמשת בפרמטרים הנמצאים ב-01= כדי להשלים אותה בנתונים על הקובץ הפיסי. אם הבקשה היתה קריאת רשומה, מבוצע חישוב של הגוש הלוגי בתוכו צריכה להמצא הרשומה המבוקשת. לפעמים כדי לבצע תרגום זה על 115 לבצע חיפושים באינדקסים. מספר הגוש הלוגי הוא המספר היחסי מתחילת הקובץ. 2. מספר הגוש הלוגי נמסר לתוכנה לניהול יחידות האחסון. תוכנה זו מבצעת את המיפוי בין המספר היחסי של הגוש לכתובת המוחלטת ביחידת האחסון. המיפוי מתבצע באמצעות טבלאות מיוחדות אשר תוסברנה בהמשך. 3 הכתובת וסוג פעולת קלט/פלט נמסרים לשגרות בקרה של מערכת ההפעלה המטפלות בכל הגישות הפיסיות ליחידות האחסון (/טּקח1 -- 1005 והש [470ח20) וטק)ט0). 4. מתבצעת גישה פיסית לנתונים בהתאם לכתובת המוחלטת שחושבה. 5. הגוש המבוקש מועבר אל המאגר המתאים בזכרון ונמסרת הודעה ל-15= שהגוש נמצא במאגר. 21 6. על פי פרמטרים הנמצאים בטבלת התיאור (121:) שולפת התוכנה לניהול קבצים (15את) את הרשומה המבוקשת מתוך המאגר ומעבירה אותה לשטח העבודה של תוכנית המשתמש. 7 תוכנית המשתמש מקבלת שוב את הפיקוח וממשיכה לעבד את הרשומה. נבהיר את שיטת העבודה בעזרת דוגמא המוצגת בתרשים 11-5: נניח שקובץ מכיל 15 רשומות, אורך כל רשומה 250 בתים, 4 רשומות לגוש, הקובץ חופס 4 גושים רצופים. מבחינה לוגית הקובץ מכיל 4 גושים -- 1, 2, 3, 4, אך מבחינה פיסית גושים אלה הם 3, 4, 5, 6. נניח שתוכנית המשתמש מבקשת לקרוא את הרשומה השישית בקובץ באמצעות ההוראה הבאה: (6 3500 6מוגח-6|₪ כ ג סק תרשיס 11-5: פריסת הקוב לדוגמא ביחידת האחסון נעקוב אחר תהליך ביצוע ההוראה: 1. חישוב הגוש הלוגי המכיל את הרשומה השישית. גוש מכיל 4 רשומות, ולכן הרשומה השישית נמצאת בבלוק הלוגי חשני. 2. התוכנה לניהול יחירת האחסון מקבלת את השם הסמלי של הקובץ ובקשה להביא לזכרון את הגוש הלוגי השני. תוכנה זו מבצעת את התרגום לגוש הפיסי בעזרת טבלה מיוחדת 106 (15ח6)חס0) 01 1516 סהתט!ס/) המציינת עבור כל קובץ את המקום שבו הוא מאוחסן מבחינה פיסית ומה אורכו. הגוש הפיסי יחושב כ(גוש לוגי + נקודת התחלה -- 1). מתוך חישוב זה נקבל שהגוש הפיסי המתאים הוא גוש מספר 4: )+3-1=4 3 הכתובת הפיסית של גוש מספר 4 נמסרת ל-1005. 4. מתבצעת קריאה של גוש 4 מהדיסק של המאגר. 5. נמסרת הודעה למערכת התוכנה לניהול קבצים (5/%=) שהגוש המבוקש נמצא בזכרון. 202 6. התוכנה לניהול קבצים מחשבת את המקום הסידורי של הרשומה השישית בתוך הגוש. נשתמש בנוסחה הבאה: מספר רשומות ‏ ,. | | | מספר גוש מספר | מקום סידורי בגוש לוגי רשומה ‏ - בגוש 4 א (1 --2)--6 = 2 נציב את הנתונים ונקבל שהמקום הסידורי הוא 2. כלומר, יש לשלוף את הרשומה הלוגית השניה מתוך הגוש. יש לחשב עתה את הכתובת היחסית בתוך הגוש של הרשומה השנייה: ר 0" .0 מספר דנר = כתובת התחלתית הרשומה של הרשומה / 1+ 250 א (1 --2) = 251 אם נציב נקבל 251. מערכת 15 תעביר לשטח העבודה של התוכנית 250 בתים החל מהבית 251 של הגוש. 7 תוכנית המשתמש מקבלת פיקוח וממשיכה לפעול. ן ן בדוגמא זו, עבור כל פקודת קריאה תתבצע גישה לדיסק לקריאת הגוש המבוקש. מאחר ובגוש יש 4 רשומות ניתן לשפר בקלות את האלגוריתם. מערכת ניהול הקבצים תנהל רישום של מספר הגוש הנמצא המאגר, ולפני הגישה לקבלת גוש חדש תבדוק תחילה אם הגוש כבר נמצא בזיכרון. אם הוא נמצא, יבוצע מיד דילוג לשלב 6 באלגוריתם שהוצג. אם הגוש אינו נמצא בזכרון תבוצע תחילה פעולת קריאה פיסית. בצורה זו לקריאת כל הקובץ דרושות 4 גישות פיסיות לדיסק לעומת 15 גישות בשיטה הקודמת. 23 פעולות עיבוד בקבצים המשתמש יכול לבצע פעולות עיבוד שונות כמו פתיחה וסגירה של קובץ, קריאה וכתיבה, איתור רשומות ועוד. פעולות אלו תלויות במבנה הקובץ ובמערכת לניהול קבצים שבה משתמשים. הפקודות האופיניות למערכת לניהול קבצים מוצגות כהוראתן בקובול : - 02%: פקודה זו מבצעת את פתיחת הקובץ לפני עיבודו. בפקודה זו מודיעים למערכת אילו פעולות התוכנית תבצע בקובץ (קריאה בלבד, כתיבה בלבד, קריאה וכתיבה). פקודה זו מעתיקה מתוך הקובץ לזיכרון את הטבלאות הדרושות ודואגת להקצאת מאגרים בזיכרון. -- 01088: פקודה זו מבצעת את סגירת הקובץ בגמר עיבודו. אם המאגרים אינם ריקים, הם נכתבים ליחידת האחסון, הטבלאות השונות מתעדכנות ושטח המאגרים משתחרר. --‏ 021: פקודה זו מאפשרת קריאת רשומה לפי מפתח ועל-כן אינה אפשרית בארגון סדרתי. הפקודה מכילה את מפתח הרשומה המבוקשת. בהתאם לשיטת ארגון הקובץ מבצעת המערכת את הפעולות הדרושות לאיתור הרשומה. אם הרשומה המבוקשת לא נמצאת בקובץ תועבר הודעה מתאימה לתיכנית המשתמש. - ךאםא-001: פקודה זו מאפשרת קריאת הרשומה הבאה בהתאם למיקום הנוכחי בקובץ. המיקום מתבצע בעזרת פקודת 0251 או 514.871. אם המיקום הוא בתוך אינדקס משני תתקבל הרשומה הבאה בהתאם לאינדקס המשני. ניתן להשתמש בפקודה זו לסריקת הקובץ מתחילתו ועד סופו. --‏ 5141: פקודה זו מאפשרת מיקום התוכנית בקובץ אינדקס סדרתי או באינדקס המשני. בדרך כלל ניתן לנסח במסגרת הפקודה תנאי (ח0וו61מ60) לקביעת המיקום, לדוגמא התמקם על הרשומה שהמפתח שלה אינו קטן מ-100. פקודה זו אינה מעבירה את הרשומה מהמאגר אל שטח העבודה ולכן יש לבצע מיד פקודת 01 או דאמא-021. -- 115\: פקדה זו מאפשרת כתיבת רשומות חדשות לקובץ. המערכת תבדוק לפני הכתיבה אם קיימת רשומה עם מפתח כזה ולא תבצע את הכתיבה. בארגון סדרתי לא נעשית בדיקה כי הכתיבה רציפה. -- ם85/817: פקודה זו מאפשרת עדכון רשומה קיימת עלדידי כתיבתה במקום הרשומה הקודמת. את הרשומה יש לקרוא תחילה בעזרת פקודת 0281 או דש א-007. -- 5175כ: פקודה זו מאפשרת ביטול רשומה קיימת למעט אירגון סדרתי. המערכת תמסור הודעה לתוכנית המשתמש אם הרשומה לא נמצאת בקובץ. - א55%: פקודה זו מאפשרת התחלת תהליך חיפוש רשומה לפי מפתח במקביל לעבודת התוכנית. הרשומה המבוקשת מועברת אל המאגר במקביל להתקדמות התוכנית. היא תועבר אל שטח העבודה של התוכנית רק עם ביצוע פקודת 0281). השימוש בפקודה מאפשר עיבוד חופף. 24 טעינת שגרות 15 לזכרון כפי שניתן לשער, שטח הזיכרון שנדרש לשגרות 15 עלול להיות גדול מאד בגלל היותן כלליות מאד ומתאימות למגוון מבנים פיסיים ולוגיים ויחידות אחסון שונות. בפועל אין צורך לטעון את כל שגרות 15 עם כל תוכנית אלא לטעון רק את השגרות הדרושות לעיבוד הקבצים שבהן משתמשת התוכנית. קיימות שתי שיטות לטעינת שגרות מערכת התוכנה לניהול קבצים אשר נתאר בהמשך. א טעינה סטטית בזמן טעינת תכנית המשתמש לזיכרון מופעלת תוכנית טעינה מיוחדת (ז1.0866) של מערכת ההפעלה. תוכנית זו סורקת טבלה שהוכנה על-ידי המהדר ובה רשומים המבנים המטופלים בתוכנית ודרישות הגישה (קריאה בלבד, קריאה וכתיבה). תוכנית הטעינה שולפת את השגרות הדרושות מחוך ספריית השגרות ומצרפת אותן אל תוכנית המשתמש. בשיטה זו לכל תוכנית, העתק נפרד עם כל שגרות 15 הדרושות לה בזמן הביצוע, כפי שמודגם בתרשים 11-6, תוכנית טעינה ופ ספרית שגרות תרשיס 11-6: טעינה סטטית ב. טעינה דינמית שגרות 15 אינן נדרשות במשך כל זמן ביצוע התוכנית ולכן ניחן להביאן לזיכרון בעת הצורך ועם גמר הטיפול לשחרר מיד את שטח הזיכרון. אפשר להיות סלקטיביים ולהחזיק בזיכרון את השגרות שהשימוש בהן רב, כמו קריאה וכתיבה למשל, ולשחרר את השגרות המטפלות בפתיחת קובץ אשר אינן דרושות לאחר פתיחתו. תמונת הזיכרון תהיה שונה בשתי שיטות הטעינה כפי שמוצג בתרשים 11-7. תפוסת תפוסת זיכרון זיברון טעינה דינמית טעינה סטטית מן ביצוע זמן ביצוע תרשיח 11-7: תפוסת זכרון בשתי שיטות הטעינה 2005 3 ניהול קבציס ביחידות אחסון לגישה ישירה האפשרויות השונות למבני נתונים ביחידות אחסון לגישה ישירה מציגות אפשרויות שונות לניהול הקבצים הפיסיים ביחידות אלו. מבחינת מערכת ההפעלה אשר מנהלת את יחידות האחסון, הקובץ הינו אוסף של גושים המכילים נתונים. הארגון הלוגי שלהם ותוכנס אינו בשליטת מערכת ההפעלה. הקובץ יכול להכיל נתונים, תוכניות מחשב, נוהלי פיקוח (/10), ועוד. הקובץ הוא יחידה לוגית שיש לנהל אותה ללא קשר לתוכנה. התפקידים העיקריים של מערכת ניהול יחידות האחסון בגישה ישירה הם: א לאפשר בניית קבצים חדשים בעלי גודל כלשהו וביטולם בעת הצורך. ב. לתת אפשרות גישה לקכצים לשם קריאה או כתיבה. לעיתים יש לאפשר למספר משתמשים לגשת בו זמנית לאותו קובץ. ג. | מנוחלים הגושים שאינם מופיעים בצורה רציפה ביחידת האחסון. המערכת צריכה לשחרר את המשתמש מידיעת המיקום הפיסי של הקובץ. ד לאפשר פניה לקובץ תוך שימוש בשם סימלי. ה להגן על הקבצים בזמן תקלה. היחידה הבסיסית מבחינת המערכת לניהול יחידות אחסון הוא הגוש. ברוב המערכות גודל הגוש נקבע מראש עלרידי היצרן ואינו ניתן לשינוי על-ידי המשתמש. מערכות יבמ הן דוגמא למערכות בהן יש למשתמש שליטה על גודל הגוש. השיקולים העיקריים של היצרנים בקביעת גודל הגוש הם שיקולי מבנה הדיסקים ויעילות פעולות קלט/פלט תוך ניצול יעיל של שטחי האחסון. גדלים מקובלים הם 128, 256, 512 תווים לגוש. כאשר המשתמש מגדיר בתוכנית גושים באורך שונה (גושים לוגיים) הם נרשמים בגוש פיסי אחד או במספר גושים פיסיים. אם גודל הגוש אינו כפולה שלימה של הגודל הסטנדרטי, מבצעת המערכת באופן אוטומטי השלמה של השטח הנותר בסימן מוסכם. בשיטה זו יש אלמנט מסוים של בזבוז שטח אחסון. טבלאות ניהול קבצים הקישור בין השם הסימלי של הקובץ לבין מיקומו הפיסי ביחידת האחסון מתבצע בעזרת טבלת הדרכה מיוחדת (עז60)0זוכ 1116) המכילה כניסה אתת או יותר עבור כל קובץ ביחידת האחסון. זוהי הטבלה לניהול מיקום הקובץ (במערכות יבמ קרויה טבלה זו 15ח10ח20) ]00 18916 6וחטוסץ -- 06 ). טבלה לניהול 2066 תרשים 11-8: מיפוי פיסי של קוב טבלה זו מכילה את הנתונים הבאים: -- השם הסימלי של הקובץ, -- המיקום הפיסי שלו ביחידת האחסון, -- סוג הנתונים בקובץ (בינרי, דצימלי), -- נתונים לאבטחת הגישות לקובץ, כגון סיסמאות, -- נתונים מנהליים וסטטיסטיים כגון: תאריך יצירה, תאריך גישה אחרון, גודל ועוד. המשתמש מודיע למערכת ההפעלה על צורת עיבוד הקובץ באמצעות כרטיסי פיקוח (;01(). לתוכן ולמבנה הלוגי אין כל חשיבות מבחינת המערכת. מערכת ההפעלה כוללת שלש פקודות בסיסיות לניהול קבצים (פקודות אלה מיושמות בצורה שונה ב-1621 של כל מחשב): 8 -- יצירת קובץ חדש, הסגדדה -- שימוש בקובץ קיים, מדםפוטק -- ביטול קובץ קיים. שיטת הקישור בין השם הסימלי למיקומו הפיסי תלויה במידת התחכום של המערכת. נציג כאן מספר אפשרויות. א. אחריות המיפוי מוטלת על המשתמש: המשתמש צריך לקבוע את מיקום הקובץ ואת גודלו מראש. פקודה אופיינית למערכות מסוג זה: ,3 = אםסא11צס ,3750 = 1ד0א .1 ,6ת8ח6!ה ,085470 = דואש ,10 = 78840% מבחינת המשתמש שיטה זו אינה נוחה כיוון שהמיקום הפיסי של הקובץ ביחידת האחסון נקבע בצורה ישירה על ידיו. אם יש מספר משתמשים באותה יחידת אחסון יש צורך בתיאום כדי שהאחד לא יהרוס את קבציו של האחר. בדוגמא שלמעלה תקצה המערכת 3750 בתים רצופים החל מהכתובת הנתונה המוגדרת ב-6%// דד ,כ א 1/י0. אם המקום כבר הוקצה לקובץ אחר לא תתקבל על כך כל הודעה. אין אפשרות להגדיל את הקובץ מעבר למה שהוקצה לו בתחילה. ב. מיפוי סטטי באחריות המערכת קיימות מספר שיטות מיפוי המנוהלות באופן אוטומטי על-ידי המערכת. אחת האפשרויות היא לנהל טבלה שבה מופיעים כל השטחים הרציפים הפנויים ביחידת האחסון. קביעת מיקום פ סי לקובץ חדש מתבצעת תוך סריקת הטבלה ואיתור השטח הדרוש עבורו. גם בשיטה זו אין הקובץ יכול לעבור את הגודל שהוקצה לו בראשונה. פקודה אופיינית למערכות מסוג זה היא: 0 = 1,071 ,6הגה-₪16 ,מיד 65 באשר אין שטח רציף פנוי אי אפשר להקצות את הקובץ. בכמה מערכות מתבצעת הזזה אוטומטית של קבצים לקבלת השטח הרציף הדרוש חזהו תהליך שאינו יעיל. 207 ג. מיפוי דינמי באחריות המערכת המערכת מבצעת הקצאת שטחים דינמית. זוהי שיטת העבודה של רוב המערכות המתקדמות. במערכות אלה אין צורך בהגדרת גודל הקובץ. תפקיד המערכת לאפשר גידול דינמי בהתאם לצורך. פקודה אופיינית למערכות מסוג זה: 6וחהת-16 ,5 ד מ קיימות מספר שיטות לביצוע המיפוי הדינמי: 1. שרשור גושים בכל גוש קיים מצביע אל הגוש הבא. בטבלת המיפוי מציינים את הכתובת של הגוש הראשון בקובץ, כפי שמודגם בתרשים 11-9. תרשיס 11-9: שרשור גושיס הגדלת הקובץ מתבצעת על-ידי שרשור גוש ריק חדש לשרשרת הקיימת ועל"כן הוא יכול להיות במקום פיסי כלשהו ביחידת האחסון. חסרון השיטה הוא במספר הגישות הרב שיש לבצע לאתור גוש כלשהו או כדי להגיע לסוף הקובץ. ביטול הקובץ מחייב קריאת כל הגושים ושרשורם שוב לשרשרת הגושים הפנויים. שיפור מסויים יושג אם בטבלת המיפוי נצביע ישירות לגוש האחרון בנוסף לגוש הראשון. שיטה זו נוחה לטיפול בקבצים סדרתיים, בהם העיבוד מתבצע על-ידי סריקת כל הקובץ. 2. מיפוי קובץ - בטבלת מיפוי הקובץ (80!א 16ו) מחזיקים מצביע לטבלה אחרת המבצעת מיפוי בין מספר הגוש הלוגי למספר הגוש הפיסי. גם בשיטה זו יכולים הגושים הפיסיים: להיות מפוזרים בכל יחידת האחסון. בשיטה זו אין משרשרים את הגושים השייכים לאותו הקובץ. לניהול הגושים הפנויים משתמשים במפה נפרדת המכילה את כל הגושים הבלתי מנוצלים ביחידת האחסון. הוספת גוש חדש לקובץ מתבצעת על-ידי ביטולו ממפת הגושים הפנויים והוספתו למפת הקובץ. תרשים 11-10 מציג את שיטת המיפוי: קובץ 2 11.5 המכיל שלשה גושים לוגיים אשר נמצאים בגושים פיסיים 2, 7, 6. השיטות המשתמשות במפות הגושים מאפשרות גידול דינמי של הקובץ. ביטול קובץ מתבצע בצורה נוחה מאחר ודרושה העברת מספרי הגושים הפיסיים ממפת הקובץ למפת הגושים הפנויים (808) בלבד. הוספת גוש 208 גוש פיסל (א8.00 641ופצו?) טבלת נהול קבצים (צהסדסשהום 155=) אחסנת הקובץ אחפנת הטבלאות (הַ51018 /'ז5600708) (6מָ8ז510 ץז8חוז) תרשים 11-10: שימוש במפת קוב פנוי לקובץ יכולה להתבצע במספר אופנים. קיימות מערכות המשתמשות בגוש הראשון המופיע במפת הגושים הפנויים. לעומתן קיימות מערכות מתוחכמות המנסות להקצות את הגוש שיביא למינימום את מספר הזזות הזרוע בזמן קריאת הקובץ. פיזור אקראי של הגושים השייכים לקובץ ביחידת האחסון יגרום למספר רב מאד של הזזות זרוע בזמן קריאתו. באותם מקרים בהם שיטות ארגון הקובץ דורש הקצאת מראש של מספר גושים, כמו ארגון ישיר, תשתדל המערכת להקצות את כולם בצורה רציפה עד כמה שניתן. 3. מיפוי כפול המפה של הקובץ וטבלת המיפוי הראשית יכולות להיות בעצמן גדולות ולכן שמירתן בזכרון מהווה בזבוז. ניתן להתייחס לטבלאות אלה כאל קבצים רגילים ולבנות טבלת מיפוי גם לטבלאות אלה. אם מפת הקובץ גולשת בעצמה מעבר לגוש אחד ניתן לשרשר את הגושים שלה. תרשים 11-11 מציג שיטת מיפוי זו. בדוגמא ‏ יש ל-/ז6000ז1כ גם כן מפה הנמצאת בגוש הפיסי הראשון. הטבלה עצמה נמצאת בגוש פיסי 3 ומכילה שלש כניסות. המפה של קובץ ן ם.11ז נמצאת בגוש פיסי 7, אך מאחר ולא היה מספיק מקום היא נמשכת בגוש פיסי 10. גושים פיסיים 6, 13, 4, 16, 5 מכילים את הקובץ 1 11.5 לפי 209 הסדר הלוגי שלו. על מנת למנוע מספר גישות רב ליחידת האחסון כאשר מטפלים בקובץ 1 1:11.8 למשל, ניתן להעתיק את המפה שלו לזיכרון מיד עם פתיחת הקובץ. 5 צמסדסםהוס 2 ב3ן:1) 7 |1 05| 9 [2 םת 060 1 םות 3 800% קהו = 3 1 1 8 קט 55 : 1 1 | ו | 5 81006 1 0 82006 2 + 81002 תרשים 11-11: מיפוי קבצים 200 4 אבטחה ופרטיות בניהול קבציס השימוש במערכות כלליות לניהול קבצים ויצירת כלים סטנדרטיים לגישה אליהם הציבה בעיה חדשה -- בעיית ההגנה על הקבצים. הגנה זו מתבטאת בצורך לפקח על הגישות לקובץ והשימוש בו למטרות קריאה או גם למטרות כתיבה למשל, ומציבה מספר דרישות לפיקוח ולהגדרת סמכויות. זיהוי הבעלים של הקובץ (ז6תשכ) 1-16 ) הפניה לקבצים תוך שימוש בשם הסימלי נוחה מאד. הבעיה מתעוררת כאשר משתמשים שונים בותרים בשם סימלי זהה לקבצים שונים. לדוגמא השם צ 11.4 יכול לשמש משתמשים שונים לאחסון נתונים שונים. קיימות מספר שיטות לטיפול בבעיה זו ונבחר באחת מהן. במקום להחזיק טבלה ראשית אחת לכל הקבצים ביחידת האחסון משתמשים בכמה רמות של טבלאות כפי שמוצג בתרשים 11-12: טבלה ראשונה מכילה את שמות המשתמשים והפניות לטבלאות המכילות את שמות הקבצים של כל משתמש ומהן, אל טבלאות מיפוי הקבצים. 558 4 ד-4 [1 שת ך-% | 5 05!; | מפות קבצים מפות משתמשים מפה ראשית | קבא ₪ != צמסדסטחוס 25585 צהסדסשחוס 68 ד תרשים 11-12: שיטת שיוך של בעליס לקבציס 271 בתרשים 11-12, שני משתמשים שונים (4 ו8) משתמשים בשם סימלי זהה, 5 11.5 לניהול קבצים שונים. השימוש בשתי הטבלאות מאפשר ניהול שני הקבצים ללא תלות בעובדה שיש להם שם זהה והם שייכים למשתמשים שונים. את שתי הטבלאות ניתן לנהל בדומה למפה הראשית באמצעות מפות שמאוחסנות בדיסק. לבניית קובץ חדש נשתמש בפקודת .16 שבה מוזכר שם המשתמש, לדוגמא : 4 = 11558 ,6וח4ח-₪116 ,5 ד 0854 קשירת הקובץ לתוכנית תבוצע באמצעות פקודת .101 שגם בה מוזכר שם המשתמש: 4 = 11508 ,6וחאח-₪16 ,6 דד ה לאחר ביצוע פקודה זו, ניתן להפעיל את תוכנית היישום כדי לקרוא ולעדכ | | רשומות בקובץ. קביעת זכויות הטיפול בקובץ ברוב המערכות יש לאפשר למספר משתמשים שונים לגשת לאותו קובץ. על בעל הקובץ להגדיר איזה מבין הפעולות האפשריות מותר להם לעשות: - קריאה בלבד (8). -- כתיבת רשומות חדשות (/), -- ביטול רשומות בלבד (). -- עדכון רשומות (00), -- ביטול הקובץ (כ). כדי להגן על הקובץ ניתנת לרבים הרשאה לקריאה בלבד, ורק לבעלי הקובץ, או האחראי לו ניתנת הרשאה לביצוע כל הפעולות. בעל הקובץ מגדיר את אוכלוסית המשתמשים המורשים לגשת לקובץ באמצעות פקודת .36.1 מיוחדת. לדוגמא הוראה המאפשרת למשתמשים 4 ו-8 לפנות לקובץ לשם קריאה בלבד. א = 400088 ,2 = 0588 ,א = 558 ,6והבת-₪16 ,5 ג 5 הוראה זו תגרום לקישור טבלאות משתמשים אחדים אל קובץ אחד כפי שמוצג בתרשים 11-13. חש ד5 ו צהסדספהוס תרשים 11-13: שיתוף קובץ בין מספר משתמשיס 202 שיטת הגנה נוספת היא קביעת סיסמא (2455%08) אשר ניתנת בכרטיס הפיקוח ונבדקת בזמן ם02. רק מי שבידיו הסיסמא יכול לגשת לקובץ. ניתן לקבוע סיסמא שונה לכל אחת מהפעולות המותרות בקובץ. את רשימת הסיסמאות ניתן לשמור בטבלת הקבצים של המשתמש בדומה לנתונים אחרים. 5 סיכוס לשימוש במערכות סטנדרטיות לניהול קבצים יתרונות רבים אשר נסכם אותם בקצרה. החסרון הבולט ניתן גם הוא. חסרון זה אינו מהווה כל מגבלה למשתמש הרגיל ואמנם במערכות מיוחדות נכתבות מערכות ניהול קבצים עבור המשתמש לצרכיו בלבד. יתרונות: א. קיימת אי-תלות בין השפה שיוצרת את הקובץ לבין השפה המשחמשת בקובץ. כל הטיפול בקובץ הוא חיצוני לתוכנית המשתמש. תוכגית '[(0ן: 60 מערכת לנהול קבצים תונכנית הזה תרשים 11-14: בנית קובץ בקובול ושימוש בו בפורטרן ב. המשתמש אינו מטפל בייצוג הפיסי של הקבצים ביחידות האחסון השונות אלא בצד הלוגי של ניהול הנתונים בלבד. ג. קיימת בקרה ועקביות בעת עיבוד הקובץ מאחר וכל הגישות מבוצעות באמצעות התוכנה הסטנדרטית. ד. קיימת תמיכה במגוון של שיטות ארגון קבצים וסוגי רשומות. עלות נמוכה יחסית, מאחר וזוהי תוכנה סטנדרטית לכל המשתמשים ולכל הקבצים ולא פיתוח עצמאי המותאם לכל מקרה בנפרד. = חסרונות: -- מגבילה את המשתמש למספר מצומצם יחסית של שיטות ארגון קבצים. 203 6 שאלות 1 204 הסבר מהי טבלת תיאור קובץ (121ת). מדוע אין אפשרות למלא את תוכנה בזמן ההידור? מהם היתרונות של מילוי הטבלה בזמנים שונים? . כיצד לדעתך ניתן לפתור את בעית ניהול הנתונים ללא מערכות מיוחדות לניהול נתונים. מה היתרונות והחסרונות של פתרון מסוג זה. חן דוגמא. . האם תוכנית לניהול נתונים במחשב אחד יכולה להתאים למחשב של יצרן אחר, אע"פ שהמשתמש רואה לפניו מבנים לוגיים שוים בשני המחשבים. הסבר את תשובתך ותן דוגמא. . הסבר מה צריכה המערכת לניהול קבצים לעשות כדי לאפשר גישה לקובץ -- סדרתי, -- אינדקס סדרתי, - ישיר. . מדוע יש צורך לסגור קובץ? מה יכול לקרות אם התוכניתן שוכח לסגור את הקובץ? . כיצד יודעת תוכנית היישום שהרשומה המבוקשת לא נמצאת בקובץ? . מהי טבלת 000ד/? היכן היא מאוחסנת ומתי משתמשים בה? נספח א' -- ביבליוגרפיה הרשימה הביבליוגרפית כוללת מגוון של ספרים, חוברות, תקופונים ומאמרים בנושאים שנדונו בספר זה. בנוסף קיימת ספרות רבה בתחומים שונים המתפרסמת על ידי יצרני המחשבים ועל ידי בתי-תוכנה המפתחים מערכות תוכנה לניהול קבצים ובסיסי נתונים. הקורא המעונין יוכל לבחור חומר נוסף הכולל-גם תיאור מערכות חומרה ויחידות איחסון ותיאור יישומים והפתרון שניתן בהם לבעית אחסון נתונים. 205 206 אריאל צבי: "ארגון קבצים -- מערכות 370" י,ב.מ., 1972. ארגון וניהול קבצים, המכון לפריון העבודה והייצור. גולדנברג אליעזר: "מבוא למחשבים", מכלול, הוצאה לאור, 1975. נוימן זאב, הורוביץ ישראל: "מחשבים ומערכות מידע", גומא, 1976, עמיהוד יצחק: "המחשב האלקטרוני ועיבוד נתונים", הוד"עמי, 1973. עמיהוד יצחק: "תכנון ותכנות יישומי מחשבים", הוד-עמי, 1975. עמיהוד יצחק, קורפל יונתן: "יסודות בניתוח ותכנון מערכות מידע", הוד"עמי בשיתוף המכון לפריון העבודה והייצור, 1980. |חזט10 זסוטקות 60 ,1940168 ה1185 66ז66ז0) .]תא .כ 6פ4 .6 4 ,2 .סצן ,17 .וס .0 .וחוח600 ,פסזט1סטז51 6ְהַ8ז510 ]0 הסוזט!סטם 6חד 00 6 2 צ 0 -זטס1 ח6ו55 121 .פַתו4067685/ 806 הסנ)28וח23זכ) 6!גז .2וסממסאם יע ; .סצ ,2 .01 ,ואת וחוח0?) .פהסו!סתט] 8ַה|וה1185 אַתו1(9 פסזט1סטזו5 116] .חשמק000 .0 .0 ,7 .סצ ,13 .וסש,.1א) ה )א .פַתו2706055 תסו)הוהתס]ם] 6ח8 פ>זס)טקות 60 .2099 .0 .108 6 מְ246 :ח1 .57516018 1ח6וח886ח14 2818 ]0 15ח6וח6!ם .000 .6.6 .4 ,200%85 607006111 .)ח6 861 הגוא ,1111 -ע8ז0) 10 .אה וותות8זקסז 59516015 .חםץסתסכ .7 5 ,5.8.4 .5170010708 12018 .חספוש .את .0 601166-11811ז .1ה826016ת4] 86 6זט)סטז51 318 .סוס .1 2 167% ש6] זס] 00166 05/%5כ 1/1זס .18% 7 .130081 הסו)8וחזס]ח] [8ז6ח26) 15//5א1 .18% .20 .1606ט2) קַתוחחגוק !א ץצ 05/5 .18 ןזוס וס זוקווס .אטוז 5 91ו.1-ו!1ו0 חז 06%65ת1 בוזסטו .פופ .7 > 01. 17, 80. 1, 4. ,תזטס! ז6וטקוחס6 .78268 זס] הושַת6|א6ס! ]0 עו!וטוא6ו .ופ .4 . 3 ,4 .סא ,17 .01 1 ות ות00 .11663 88128066 -1161801 ]0 06ח8 ות זס]זס ,מסו!ץס א .יע .6 ,1 .סצ ,19 .01 0 חב .1/370ה5516 6ח8 ה12000ח128כ) ז6וטק חס .ה20ו0 א .11 ,20 0|6חחו6 6 6,ה2 |ח00ות6ק8ה8) 2818 *סטקות00 .מ20ו0א .11 .5 ..20) 016ח61 6ח8ז)פס14 חפ .עקס1סתת66ך טס ז6טק חס .118570-1806!5 0ח8 5הסווסתט] 8תות1185 ,זסוזא ..60 .3 .סצ ,18 .01 -ח16ח68חט :1 .01 .פורת ות8זפסזק ז6)טק 60 ]0 +זג/ 6ודך ,ותא .יש -ח460150/ .1973 ,בח 0ז568 0ח8 פַחווזס5 :3 .01 .1968 ,פוחווזסק| |18 .0 פתוח5ו1ט טק 6516 .0 800% ה11866 ,57510008 6חג1-חכ) זס] פזטוסטז51 116" ,כוווס/1./0 .כ .4 ]א .5וח5)6ץ5 8ח911ז6קכ) ]0 1815ה6 ותה הט[ שוש .4.0 .12 ,4067100 .400058 217601 זס] טוח 160 .מס .א -ק ,2000080108 ,עק0[0תת160 :57516005 תסו!)גותזס/ת] .006 .6 ...5.8 .6411005ו1ק 23. 207 208 .5 ,]]1166-118ה6ז . ה280128110ז0) 12818-2856 ע6זטק וח סכ) .וו .2 -0071 חן 46988665 :ח1 .65גוף1חו166 ת1280:0ה83זכ) 6[ו"1 ,צזזסק סת .0 .5 סוות0866/ .1972 ,12 .01 ,ז6זטק -ח0 .11168 8ת27006551 ז0] 65תט1סטזו5 1766 ]0 56 .5115501 .2.17 3 ,5 .סצ ,6 .[0ש.1א402 .וח זס)טקותס6 6ה8 65זט)0טז/2818-5] 10 תסעסט6סזוה] .6מסו9 -11 ,]]111-ש100278/ .ח0גז880128זכ) -זט10 57516885 181 .5ח200510679110) ת6818כ] שַתואססת1 שווקָ/ע .שת 3 , .12,740 !סש ,]בח .סא ,15 .01 ,[8תזטס 6 וטק וחס0) .80165||פ ה8ו05כ] 116 .צקשום/1 .5 2 ,| החזטס זסוטקות00 .56685 2158 6ו61ח188 פַתו81 וו .צץשום/ .5.7 .5 , .סא ,18 .01 |[(11-שו160278/ . ח8ו65כ] 128180856 .1606/0010 .6 |[7601106-118 .57516015 ז16טקוח00) 6ה11-חכ) ]0 ה26518] .סוס .2 12. 24. 25. 26. 27. 8. 29. 10. 5 12 נספח ב' -- מילון מונחים מילון המונחים הקצר המצורף מגיש לקורא את המונחים העיקריים שהוא נזקק להם בעבודתו בנושא שבו דן הספר. הקבלת המונחים באנגלית ובעברית תסייע לקורא בעת עיון בספרות העזר העניפה שרובה נכתבה באנגלית. 209 גישה שיטת גישה זמן גישה שעור פעילות כתובת חישוב כתובת אלגוריתם נתונים אלפא נומריים תוכנית יישום תוכנית בשפת סף איחסון חיצוני קובץ גיבוי עץ מאוון עיבוד באצווה בינרי חיפוש-בינרי עץ בינרי סיבית (סיפרה בינרית) גוש אורך הגוש מספר הרשומות בגוש מאגר בית (8 סיביות) מספר בתים לאינץ (צפיפות מגנוט) מספר בתים לשניה (מהירות העברה) שרשרת אורך השרשרת ערוץ (אפיק) תו סיפרת ביקורת מיברק יחידת עבוד מרכזית (יעמ) התנגשות מהדר גליל (צלינדר) נתונים בסיס נתונים 58 06 0065%// 6 400658 6 צוטו)ס 5 חסו)ג1טס[08 001655 הו )180 8 סוזסות טוחה | וח8זקסזק תסוו8סו[קס ג וז סז 3500161 6 צזשז8]אנו 6 קטואסג 6 8180066 008 800 ץזהחו 5680 עזאחו 6 עזגחום וו 00% הוקַח16 אססו זס שַהואססום זט 6 (221) ת0ח1 ז6ק סע ו 500006 זע וע חו8ת) הזקַת6] הוהח0) [חו) זב 060% :חוסק 160% [זקס חסופו[|0כ) זו וס הפ 6 אוג 21 מערכת לניהול בסיס נתונים (5]א 8 כ]) וחס)פץ5 1ח0ת820הג1א 8856 הוגכן שפה לתאור נתונים אי תלות נתונים שפה לטיפול בנתונים מודל נתונים עיבוד נתונים מבנה נתונים צפיפות גישה ישירה יחידת איחסון בגישה ישירה מדריך דיסק כונן דיסק מפתח כפול אינדקס ממצה שדה קובץ מערכת לניהול קבצים ארגון הקובץ דיסק עם ראשים קבועים דיסקט שטח פנוי ניהול השטח הפנוי מרווח מפתח חלקי שטח גלישה כללי חומרה פיזור (רשומות בקובץ) קובץ היררכי קובץ היסטורי כתובת מקורית (של הרשומה) קלט/ פלט ערוץ קלט/ פלט אינדקס, מדריך אינדקס סדרתי 6 תמסווסןז2650 318 תא 308 6 חסונ)ג]טקומג]1/ 3)8 [1006 וג קַחן706688 18 6 818 עשופח6 858 60%זו (2452) 1269106 5007886 460655 )60זוש ץ זו אמוכ 6צוזכ אפוכ ץ6א 6ז8סו!קטס א66ם] 511/6טהחא |86 6 בת5516 1ה08616ה3]/ 116 ה0ו1281ח8ז) 116 5% 11686 66א1 א*וכ עפקסות 66 6 ]א 52806 766 כ א 606670 4 שס1ז6ש2) 6210081 6 שחות185ן 6 [678700108ו1] 6 [1115)07108 5 ש6ונחס1] (1/0) )טקזט0/)טקח] [6ממת-) זטקוט0/)טקת] א06ח] [10)ח56006 א66ח] ארגון אינדקס סדרתי (0א/15) 161100 00658// [118ח6ו56 א46ח] מידע 22 תסג)4ותזס]מ1 מערכת מידע מימשק קובץ הפוך שאילתא שפת פיקוח מפתח שדה המפתח תרגום מפתח לכתובת תווית (של קובץ) השהייה סיבובית (בדיסק) מונה אורך רשימה גלישה מקומית לוגל רשומה לוגית שפת מכונה דיסק מגנטי סרט מגנטי מפתח מוביל מפה מיפוי מדריך ראשי קובץ אב מודל, דגם ארגון רב-רשימתי שליפה לפי מספר מפתחות רשת צומת נתונים מספריים מופרד מקוון עיבוד מקוון מערכת הפעלה גלישה שטח גלישה מאגר פלט 55061 חס1זהותזס/ה1 6 6 6)66טה] ץזוטףחז (/1021( 80886ח1.3 6001201 טסנ ץצ . 8 6 ה18010ת808107 1 001655//-0 6-1 106[ 60[ ]0 הז08ח1.6 1% שס671ש2) [1.008 [ 86 |>סןקס. 1 6 6ח1ת36]א 5% 6110ח]א 6 40061:60)א ץ6א ז0ן4]א סגא 8חוסקג וא ץ1760)07 ז8516]א 6 ז856]א [006וא ה0ן)128ח028) +1118)[ט]את [108ז61 06 6[קוטוא אס 6סצ 8 טסטונז6ותטצן 6חו 0-1 0-6 0058 116-ה בת575%6 פַמו81ז6ק) 060 8 ש 06710 זו טקזטוס 23 סיבית ביקורת הזוגיות ביצוע ציוד היקפי פיסי קובץ פיסי רשומה פיסית מצביע מפתח ראשי, עיקרי אחסון ראשי, עיקרי תוכנית גישה אקראית איחסון בגישה אקראית קובץ מאורגן אקראית ראש קריאה/כתיבה זמן אמת רשומה אורך רשומה מפתח הרשומה התאוששות ארגון מחדש (של קובץ) זמן תגובה מבנה טבעתי רשומת שורש (במבנה היררכי) מפתח חיפוש אינדקס משני מפתח משני איחסון משני חיפוש זמן חיפוש סגמנט אינדקס טלקטיבי סדרתי עיבוד סדרתי ארגון סדרתי תוכנה חבילת תוכנה מיון תקן 204 צוזוזגק 6 1תסותקוטסם [8ז6חקוז6ק [68ועחק 6 |84סנפעחק 6 [בסו3עהק זסזחוסק ץ +זהותוזק 6 שזהוחוזק וחת8זפסזק 5 וה 00חגת 6 0065%// 30001 מ128110ה028) 1116 ות60ח3 48 680/16 6ותו [%68 6 ןקה 60016 ץ 60076 60 6082 6500056 16 6 פמות 000 6 ץס ה56870 166% :5600008 ץע 56000007 6 600 5% 6תו 566% ו א66ח] 561601146 5 [ 8ח7006551 [118ת560₪6 ([א./5) 16/2060 00655// [114ת06ף86 6 6 50/0/86 חספ ב זמן התחלה/עצירה אחסון מערכת ניתוח מערכת פיתוח מערכת טבלה כונן סרטים עיבוד רחק נגררת מסילה אינדקס מסילות קובץ תנועות מהירות העברה אינדקס במבנה עץ מבנה עץ עדכון משתמש תוכנית שירות זכרון בפועל מילה אזור עבודה כתיבה (של רשומה לקובץ) 6גך 00ו597)/9 6 56 58 ו ,5)60/ ]1266106 וח6ו5ץ5 6 6ווזכ 806 8ַח700659 6[6ך ץד 0% א66ם] א80%זך 6 זי 6 7805166 א66ח] 66+ך 6 66זך 16 נכון בה זפסיע עזווגוז 86 [81)ז1/ | 6 פחואזס/ 6 255 רשימות רשימות -- מתי ואיך יש למידע ערך? -- מהם מבני נתונים, אינדקסים, טבלאות, שרשרות ועצים? -- מהו ניהול נתונים? -- מהם ההבדלים בין ייצוג לוגי וייצוג פיסי, בין יחידות אחסון שונות, ועוד... -- מהם שיקולי התכנון של קבצים? ארגון נתונים וניהול קבצים נועד להכשיר מנתחי מערכות, מתכננים ומתכנתי מערכות העוסקים בפיתוח תוכנה ואחראים לניהול נתונים (151781079ה11ת46/ 2818]). הספר מותאם לתוכניות הלימודים המופעלות באוניברסיטאות, בבתי ספר מקצועיים, ובקורסים נבחרים למנתחי מערכות. בסיום כל פרק הובאו שאלות לחזרה ולתרגול. על המחבר הייפרמן רז, יליר 1949, תואר ראשון בסטטיסטיקה וכלכלה ותואר שני בחקר ביצועים מטעם האוניברסיטה העברית בירושלים. בוגר קורס מנתחי מערכות של המכון לפריון העבורה והייצור. עובר בחברת "טכנולוגיה מתקדמת" כמנתח מערכות. עד שנת 1981 עבד במרכז שרותי המירע של משרר התקשורת בתפקידים של מנתח מערכות ומנהל תחום מערכות לוגיסטיות. מרצה במרור ללימודי חוץ של הטכניון בנושאי ארגון קבצים, מבנה נתונים ומערכות לניהול בסיסי נתונים. הרצה במספר רב של קורסים בנושאים אלה מטעם משרר התקשורת, המכון לפריון העבודה והייצור ואמק"ד (ארגון משתמשי ציוד קונטרול ראטה). ספרים נוספים בהוצאתנו 1 המחשב האלקטרוני ועיבוד הנתונים, יי עמיהוד: *2. | תכנון ותכנות יישומי מחשבים, יי עמיהוד *3. | הקלט למחשב, סי מצפי *4. | יסודות בניתוח ותכנון מערכות מידע, יי עמיהוד וזי' קורפל *5. | מערכות תקשורת נתונים, אי סקופ * באישור משרדיהחינוך