בבסיסי נתונים מונחה עצמים (OODBs), משתמשים יכולים להגדיר פעולות על מסד נתונים מסוים, המורכב מאובייקטים שיכולים להיות ממגוון רחב של סוגים ועבורם מוגדרות פעולות. הם יכולים לטפל ביעילות במידע בינארי כגון אובייקטי מולטימדיה. יתרון נוסף של OODB הוא שניתן לתכנת אותו עם הבדלים פרוצדורליים קלים מבלי להשפיע על המערכת כולה.
דרישות מוקדמות ליצירת התקן
ההיסטוריה של מסדי נתונים OODB מונחה עצמים מתחילה בסוף המאה הקודמת. הם נוצרו כדי לענות על הצרכים של יישומים חדשים. ההנחה הייתה שמסדי נתונים מונחה עצמים יחוללו מהפכה במערכות התוכנה במהלך שנות ה-90. כעת ברור שזה לא המצב. עם זאת, תחייתו של תפיסה זו באמצעות קהילות התוכנה החופשית וזיהוי יישומים מתאימים עבורה מניע סקירה של המאפייניםOODB, המהווה אלטרנטיבה לבסיסי הנתונים הרלוונטיים בכל מקום.
מונחה אובייקט מספק את הגמישות להתמודד עם חלק מהדרישות או כולן ואינו מוגבל לסוגי הנתונים ולשפות השאילתות של מסדי נתונים מסורתיים. תכונה מרכזית של OODBs היא היכולת שהם מספקים למפתח, המאפשרת לו לציין גם את המבנה של אובייקטים מורכבים וגם את פעולות האפליקציה. סיבה נוספת ליצירת OODBs היא השימוש הגובר בשפות לפיתוח תוכנה.
מסדי נתונים הפכו לבסיס של מערכות מידע רבות, אבל מסדי נתונים מסורתיים קשים לשימוש כאשר היישומים שניגשים אליהם כתובים ב-C++, Smalltalk או Java. לדוגמה, מסדי נתונים מונחה עצמים של 1C תוכננו בצורה כזו שניתן לשלב אותם ישירות עם יישומים המשתמשים בשפות מונחה עצמים על ידי אימוץ המושגים שלהם: Visual Studio. Net, C ++, C, Microsoft SQL Server ו אחרים.
היתרון העיקרי של OODB הוא ביטול מוחלט של הצורך ב-RMs1 (עכבה) עם שיפורים בביצועים הבאים.
פגמים:
- מנגנוני ייעוץ פרימיטיביים מאוד, אין פלטפורמה מקובלת בתקן עצמי.
- לא ניתן לאחסן נהלים מכיוון שניתן לגשת לאובייקטים רק בלקוח.
- חוסר בגרות בשוק.
- אין קיבוץ פיזי של אובייקטים.
פרדיגמת אובייקט
מסדי נתונים מונחי-אובייקט הם מסדי נתונים ניתנים לתכנות המאחסנים נתונים מורכבים והקשרים ביניהם ישירות מבלי להקצות שורות ועמודות, מה שהופך אותם למתאימים יותר ליישומים שעובדים עם אצווה גדולה. לאובייקטים יש קשרים רבים-לרבים והם נגישים באמצעות מצביעים המשויכים אליהם כדי ליצור קשרים. כמו כל תכנות, OODB מספק סביבת פיתוח יישומים ומאגר מתמשך מוכן לניצול. הוא מאחסן ומתפעל מידע שניתן לבצע דיגיטציה בצורה של אובייקטים, מספק גישה מהירה ומספק יכולות עיבוד נהדרות.
מושגים בסיסיים בשימוש במסד נתונים מונחה עצמים:
- אובייקט זהות;
- סוג קונסטרוקטור;
- תאימות לשפות;
- סוג היררכיות וירושה;
- עיבוד אובייקטים מורכבים;
- פולימורפיזם ועומס יתר אופרטור;
- יצירת גרסאות.
כדי לשקול באופן מלא את כל ההיבטים המאפיינים מסד נתונים מונחה עצמים, חשוב לשים לב לכל פרדיגמות האובייקט החשובות:
- Encapsulation הוא מאפיין המאפשר לך להסתיר מידע עבור אובייקטים אחרים, ובכך למנוע גישה שגויה או התנגשויות.
- ירושה היא מאפיין שבאמצעותו אובייקטים יורשים התנהגות בהיררכיית מחלקה.
- פולימורפיזם הוא תכונה של פעולה שאיתה ניתן להחיל אותהסוגים שונים של חפצים.
- הממשק או החתימה של פעולה כוללים את השם וסוגי הנתונים של הארגומנטים או הפרמטרים שלה.
- היישום או השיטה של פעולה מוגדרים בנפרד וניתנים לשינוי מבלי להשפיע על הממשק. יישומי משתמש יכולים לעבוד עם נתונים על ידי קריאה לפעולות שצוינו דרך השמות והארגומנטים שלהם, ללא קשר לאופן הטמעתם.
שיעורים ופונקציונליות
כאשר בוחנים את הרעיון של מחלקות ב-OODB, יש צורך להבחין בין המונחים "מחלקה" ו"סוג". טיפוס משמש לתיאור קבוצה של אובייקטים בעלי התנהגות דומה. במובן זה, זה תלוי באילו פעולות ניתן לקרוא על האובייקט. מחלקה היא אוסף של אובייקטים שחולקים את אותו מבנה פנימי, ולכן היא מגדירה מימוש, בעוד שסוג מתאר כיצד להשתמש בו.
המונח מופע מתייחס לעובדה שניתן להשתמש באינסטציה של מחלקה כדי לייצר קבוצה של אובייקטים בעלי אותו מבנה והתנהגות כמו שנקבעו על ידי המחלקה.
תכונה שחשובה מאוד לאבולוציה של אובייקטים היא שהיא יכולה לשנות את המחלקה שלה, כולל תכונות ופעולות, תוך שמירה על זהות. זה ידרוש מנגנון לטפל בשלמות הסמנטית שנוצרה.
ירושה של מסד נתונים מונחה עצמים של ארגון מאפשרת להגדיר מחלקה כתת-מחלקה של מחלקה-על שכבר קיימת. זה יירש את כל התכונות והשיטות מהאחרון ויכול להגדיר באופן אופציונלישֶׁלוֹ. מושג זה הוא מנגנון חשוב לתמיכה בשימוש חוזר. ניתן להגדיר את אותם חלקים במבנה של שתי מחלקות שונות רק פעם אחת במחלקת-על משותפת, וכך ייכתב פחות קוד. יש כמה מערכות שמאפשרות למחלקה להיות תת-מחלקה של יותר ממעמד-על אחד. תכונה זו נקראת ירושה מרובה בניגוד לירושה בודדת.
דוגמה למסד נתונים מונחה עצמים
לעתים קרובות שימושי להשתמש באותו שם עבור שיטות שונות אך דומות של מחלקת העל של מדיה ממחלקות התמונות והווידאו. קבצים רבים יכולים להיראות על ידי צופים שונים. לעתים קרובות הם צריכים לצפות בכל התמונות והסרטונים בשיטת "הצג", ויש להפעיל את התוכנית המתאימה. כאשר הפונקציה נקראת ומועבר קישור לסרטון, נגן המדיה מופעל. כדי ליישם תכונה זו, קודם כל, יש צורך להגדיר את פעולת "המצגת" במחלקת העל המדיה הנפוצה מתוך מחלקות התמונה והווידאו. כל אחת מתת-המחלקות מגדירה מחדש את פעולת החיפוש לצרכים הספציפיים שלה. כתוצאה מכך נוצרות שיטות שונות שיש להן אותו שם פעולה. במקרה זה, לשימוש בפונקציה זו יש יתרון חשוב.
OODB structure
הפרדיגמה מונחה עצמים מבוססת על עטיפה של נתונים וקוד הקשורים לכל אובייקט במודול יחיד. מבחינה רעיונית, כל האינטראקציות בינה לבין שאר המערכת מתבצעות באמצעות הודעות. מכאן הממשקביניהם נקבע על פי הסט המותר.
באופן כללי, כל אובייקט משויך לסט:
- משתנים המכילים נתוני אובייקט ותואמים למאפיינים של מודל ER.
- הודעות שהוא משיב להן. לכל אחד יכול להיות פרמטר אחד או יותר.
- שיטות, שכל אחת מהן היא קוד שמיישם הודעות ומחזיר ערך בתגובה לו.
העברת הודעות בסביבת OO אינה מרמזת על שימוש ב-SMS פיזי ברשתות מחשבים. להיפך, היא מתייחסת לחילופי בקשות בין אובייקטים, ללא קשר לפרטים הנכונים של יישומם. לפעמים ביטוי קורא לשיטה כדי להפעיל את העובדה שהודעה נשלחה לאובייקט, ומשתמש בביצוע של השיטה המתאימה.
זהות אובייקט
מערכת מסד הנתונים מונחה עצמים מספקת זיהוי ייחודי לכל אובייקט עצמאי המאוחסן במסד הנתונים. זה מיושם בדרך כלל באמצעות מזהה אובייקט ייחודי שנוצר על ידי מערכת או OID. ערך ה-OID אינו נראה למשתמש החיצוני, אך המערכת משתמשת בו באופן פנימי לניהול קישורים בין אובייקטים.
התכונה העיקרית של OID היא להיות בלתי משתנה. ערך OID עבור אובייקט מסוים לעולם לא אמור להשתנות. זה משמר את הזהות של העולם האמיתי המיוצג. כמו כן, עדיף להשתמש בכל OID פעם אחת בלבד, גם אם הוא מוסר ממסד הנתונים, אין להקצות את ה-OID שלו לאחר. זה גם נחשב לעתים קרובות לא הולם לבסס את זה על פיסיהכתובת של האובייקט באחסון, שכן ארגון מחדש שלהם במסד הנתונים יכול לשנות את ה-OID. עם זאת, מערכות מסוימות משתמשות בכתובת הפיזית כ-OID כדי להגביר את היעילות של אחזור אובייקטים. מסגרת מונחה עצמים כופה אוטומטית אילוצים יחסיים, בדרך כלל ישימים יותר: תחום, מפתח, שלמות אובייקט ושלמות התייחסותית.
שלושה בנאים ראשיים
ב-OODB, ניתן ליצור ערכים או מצבים של אובייקטים מורכבים מאחרים באמצעות בנאים מסוגים מסוימים. אחת הדרכים לייצג אותם היא לחשוב על כל אחד כטריפלט (i, c, v), כאשר i הוא המזהה הייחודי של האובייקט (OID), c הוא הבנאי, כלומר, מצביע לאיך הערך של האובייקט הוא נוצר, ו-v הוא הערך או המצב של האובייקט. ייתכן שיהיו מספר בנאים בהתאם למודל הנתונים ולמערכת ה-OO.
שלושה בוני מסד נתונים בסיסיים מונחה עצמים:
- atoms;
- tuples;
- sets.
שימושים נפוצים נוספים הם רשימות ותרשימים. ישנו גם תחום D, המכיל את כל הערכים האטומיים הבסיסיים הזמינים ישירות במערכת. הם כוללים בדרך כלל מספרים שלמים, מספרים ממשיים, מחרוזות תווים, תאריכים וכל סוג אחר של נתונים שהמערכת מטפלת בהם ישירות. גם מבנה האובייקטים וגם הפעולות כלולים בהגדרות המחלקה.
תאימות עם שפות תכנות
מושגי הליבה של מסדי נתונים מונחה עצמים משמשים בככלי עיצוב וקודם לעבודה עם מסד הנתונים.
ישנן מספר שפות אפשריות שבהן ניתן לשלב מושגים אלה:
- הרחבת שפה לעיבוד נתונים כמו SQL על ידי הוספת סוגים מורכבים ו-OOP. מערכות מספקות הרחבות מונחות עצמים למערכות יחסיות, הנקראות מערכות יחסיות מונחה עצמים.
- שימוש בשפת תכנות קיימת מונחה עצמים והרחבתה לעבודה עם מסדי נתונים. הן נקראות שפות תכנות מתמשכות ומאפשרות למפתחים לעבוד ישירות עם נתונים מבלי לעבור שפת עיבוד נתונים כמו SQL. הם נקראים מתמידים מכיוון שהנתונים ממשיכים להתקיים לאחר סיום התוכנית שיצרה אותם.
כאשר מחליטים באיזו אפשרות להשתמש, זכור ששפות מתמשכות נוטות להיות חזקות, וקל יחסית לעשות טעויות תכנות שפוגעות במסד הנתונים. המורכבות של השפות מקשה על אופטימיזציות אוטומטיות ברמה גבוהה, כגון הפחתת קלט/פלט דיסק. ביישומים רבים, היכולת לבצע שאילתות הצהרתיות חשובה, אך שפות קבועות כיום אינן מאפשרות שאילתות כאלה ללא בעיות.
היררכיה של סוגי הירושה
סכימות מסד נתונים מונחות-אובייקט דורשות בדרך כלל מספר רב של מחלקות. עם זאת, מספר מחלקות דומות זו לזו. כדי לאפשר ייצוג ישיר של קווי הדמיון ביניהן, עליך לשיםאותם לתוך היררכיה של התמחויות. מושג זה דומה למודלים של ER. התמחויות מחלקות נקראות תת מחלקות, שמגדירות תכונות ושיטות נוספות למחלקה קיימת. אובייקטים שנוצרו עם תת-מחלקות יורשים הכל מהאב. ייתכן שחלק מהמאפיינים שעברו בירושה הושאלו מאלו הגבוהים יותר בהיררכיה.
אובייקטים נחשבים מורכבים מכיוון שהם דורשים כמות גדולה של שטח אחסון ואינם חלק מסוגי הנתונים הסטנדרטיים שניהול מסד נתונים מונחה עצמים (OODBS) מציע בדרך כלל. מכיוון שגודל האובייקטים הוא משמעותי, SOOBMS עשוי לקבל חלק מאובייקט ולספק אותו לאפליקציה לפני רכישת האובייקט כולו. הוא יכול גם להשתמש בשיטות חיץ ומטמון כדי לקבל חלקים מאובייקט מבעוד מועד, לפני שאפליקציה יכולה לגשת אליהם.
OODB מאפשר למשתמשים ליצור סוגים חדשים הכוללים גם מבנה וגם פעולות, במקרה זה מערכת הסוג הניתנת להרחבה. ניתן ליצור ספריות מסוגים חדשים על ידי הגדרת המבנה והפעולות שלהן. רבים מהם יכולים לאחסן ולקבל אובייקט מובנה גדול בצורה של מחרוזות ותווים או ביטים, המועברים "כפי שהם" לתוכנית היישום לצורך פרשנות.
השיטה יכולה לגשת ישירות לתכונות של אובייקט היעד לפי שם, כולל כל תכונות שהועברו בירושה ממחלקות אב, אך עליה לגשת לתכונות של אובייקטים אחרים עם אותות משניים. המושג מאפשר לך לשייך את אותו שם או סמל לאותו מפעילשניים או יותר יישומים שונים שלו, בהתאם לסוג האובייקטים שהוא חל עליהם.
בניית אפליקציות
יישומי מסד נתונים רבים המשתמשים במערכות OO דורשים גרסאות מרובות של אותו אובייקט. בדרך כלל, פעילויות תחזוקה מיושמות על מערכת תוכנה כאשר הדרישות שלהן משתנות, וכרוכה בשינוי חלק ממודולי הפיתוח והיישום. אם המערכת כבר פועלת ואם צריך לשנות מודול אחד או יותר, על המפתח ליצור גרסה חדשה של כל אחד מהם על ידי ביצוע שינויים.
שים לב שיכולות להיות יותר משתי גרסאות של אובייקט, למקרה שתידרשו שתיים בנוסף למודול המקורי. ניתן לעדכן גרסאות משלו של אותו מודול תוכנה בו-זמנית. זה נקרא עיצוב מסד נתונים מונחה עצמים מקביל. עם זאת, תמיד מגיע שלב שבו צריך למזג אותם כדי שה-OODB ההיברידי ישלב את השינויים שבוצעו כך שהם תואמים.
תנאים מוכווני אובייקט
כל מערכות המחשב חייבות להיות בעלות מאפיינים של הארכיטקטורה שלהן כדי להיחשב. לדוגמה, למערכת חייבות להיות טבלאות כדי להיחשב ליחסי. OODB אינו יוצא מן הכלל ומכיל כמה מאפיינים בסיסיים של ארכיטקטורת האובייקט. עם זאת, בעולם האמיתי, רבים מהמאפיינים הללו נידונים וחלקם, כגון ירושה מרובה, נחשבים לשיפורים למודל מסד הנתונים מונחה עצמים ולאכחלק מקו הבסיס. לדוגמה, בשפה מונחה עצמים Smalltalk, ירושה מרובה אינה נתמכת, למרות שהיא נחשבת לחלק מארכיטקטורת האובייקט.
שיטות למחלקה מגדירות קבוצה של פעולות שניתן לבצע על אובייקט. לדוגמה, כאשר הוא מוחל על אובייקט, הוא מחזיר ערך או מבצע פעולה כלשהי לעדכון הערכים. לפעמים שיטות לא מחזירות אותו. אם השיטה הייתה מתוכננת לעדכן את מספר הנוסעים לרכב, לא יוחזר ערך, אבל רכיב הנתונים ביעד ישנה אותו.
אובייקטים הם מושג בסיסי ב-OODB. בעיקרו של דבר, אובייקטים הם ייצוג מופשט של דברים בעולם האמיתי המאוחסנים בו. אובייקט הוא מופע של מחלקה במובן זה שהוא אינו נכלל בהגדרתו.
אתה יכול לחשוב על אובייקט כעל חבילה עצמאית הכוללת שלושה חלקים:
- מידע אישי משלו, ערכי נתונים.
- נהלים פרטיים שיעשו מניפולציות על ערכים באמצעות הגדרת המחלקה.
- פתח ממשק כדי שהאובייקט הזה יוכל לתקשר עם אחרים.
OODB דוגמאות
שימוש ב-OODB מפשט את ההמשגה כי זה טבעי יותר לייצג את המידע שצריך לאחסן. כדי לדגמן את המבנה או ההיגיון של מסד נתונים, השימוש בדיאגרמות מחלקות מאפשר להציג מחלקות עם היחסים המבניים והתורשה שלהן. על מנת לדמות חלק מהדינמיקה, האינטראקציה וההתנהגות בין אובייקטים, דיאגרמת רצף תשמש כדי לייצג את האינטראקציה בין אובייקטים הממוקמים במערכת יחסים זמנית, ומתארת את המצבים האפשריים כך שניתן למצוא אותם בהינתן המצב המשתנה לאחר התרחשות האירוע.
דוגמה למסד נתונים מונחה עצמים מוצגת למטה.
יש להם שם וחיים, שיכולים להיות זמניים או קבועים. מפתח OODB הוא היכולת שהם מספקים למפתח לציין כמה מבנים ופעולות יוחלו עליהם. ישנה גמישות ותמיכה לטיפול בסוגי נתונים מורכבים. אתה יכול ליצור מחלקות ותתי מחלקות, למשל, לבסיס הלקוחות יכול להיות תת מחלקה של הקישור של הלקוח הזה, והוא יירש את כל התכונות והמאפיינים של המחלקה המקורית, גישה זו מאפשרת לך לעבד נתונים מורכבים במהירות ובגמישות.