PracticU

מבנה נתונים ב-MongoDB

בלי כתוביותעם כתוביות
PracticU › קורס NoSQL - MongoDB › מבנה נתונים ב-MongoDB
מילון מושגים:
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
JSON - פורמט טקסט קריא לייצוג נתונים מובְנים כזוגות מפתח-ערך, נפוץ להחלפת מידע בין שרת ללקוח.
סכמה - המבנה הלוגי של מסד נתונים: הגדרת הטבלאות, העמודות, הסוגים והקשרים ביניהם.
רשומה - שורה בטבלת מסד נתונים שמרכזת את כל השדות של פריט אחד, למשל כל הפרטים של לקוח יחיד.
עמודה - שדה בטבלת מסד נתונים שמחזיק ערך מסוג מסוים עבור כל שורה, למשל שם או תאריך.
Join - פעולת SQL שמשלבת שורות משתי טבלאות או יותר על בסיס קשר ביניהן.
MySQL - מערכת ניהול מסדי נתונים יחסיים בקוד פתוח, נפוצה מאוד באתרים וביישומי אינטרנט.

מבנה נתונים ב-MongoDB
איך נראה מבנה הנתונים ב-MongoDB לעומת מסד רלציוני? ההרצאה מציגה את המסמכים, את המערכים ותת-המסמכים, ואת התרגום של המונחים מעולם הטבלאות.
הרעיונות העיקריים
1. מסד רלציוני: מסתמכים על תרשים ERD של טבלאות וישויות, ועל קשרים ביניהן (one-to-one, one-to-many, many-to-many, ולפעמים טבלה מקשרת).
2. מסמך אחד: ב-MongoDB שופכים את הנתונים למסמך, אוסף של מפתחות וערכים בפורמט JSON. הערך יכול להיות מחרוזת, מספר, קואורדינטות גיאוגרפיות או תת-מבנה JSON.
3. מערכים: שדה אינו חייב להיות אטומי. התמחויות מרובות או כמה רכבים של אדם אחד נכנסים כמערך בסוגריים מרובעים, במקום טבלה נוספת בקשר.
4. תת-מסמכים: בתוך מערך יכולים להיות תת-מסמכים עם שדות כמו model, year ו-value. כדי להגיע אליהם נכנסים למסמך, לשדה ואז לפרט.
5. הירארכיה רלציונית: שרת, אינסטנס, מסד נתונים, סכמה, טבלה ושורה.
6. המונחים ב-MongoDB: מסד נתונים נשאר database, טבלה הופכת ל-collection, ורשומה הופכת ל-document. עמודה היא שדה (field), כי אין יותר מבנה דו-ממדי מחייב, וכל מסמך יכול להיות שונה באילוצים ובסדר.
7. במקום Join: עושים embedded documents, כלומר מסמך בתוך מסמך כמערך, או לינקים בין מסמכים.
8. מפתח: _id הוא שדה חובה שמזהה כל מסמך באופן חד ערכי. יש גם אינדקסים.
9. חיבור לשרת: mongod מפעיל את השרת, ו-mongo פותח client כשהשרת כבר פועל. ב-MySQL הפקודות הן mysqld ו-mysql.
אחרי ההרצאה אפשר לתרגם טבלה, שורה ועמודה למושגי MongoDB, ולהסביר איך מערך ותת-מסמך מחליפים טבלה מקשרת.
השיעור הבא בקורס: מאפיינים מרכזיים של MongoDB

פרקי ההרצאה: מבנה נתונים ב-MongoDB

  1. 00:00

    תרשים ERD וקשרים בעולם הרלציוני

  2. 00:36

    Document אחד עם Key ו-Value

  3. 01:16

    היררכיה ותת JSON

  4. 02:13

    סוגי ערכים ומערך בתוך שדה

  5. 03:10

    מערך של תת מסמכים

  6. 04:42

    היררכיית שרת, Instance ודאטאבייס

  7. 05:41

    Collection ו-Document ב-MongoDB

תמלול ההרצאה: מבנה נתונים ב-MongoDB

הטקסט המלא של הדקות הראשונות בהרצאה «מבנה נתונים ב-MongoDB» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:25

    הפיתוח קלאס, ואנחנו גם שומרים, שימו לב, את הקשרים הרלציוניים ביניהם, מה שבעצם מחבר בין הטבלאות, מה שעוקף לנו את הנכונות שיש בין טבלה לטבלה, את הקשר ואת ההיררכיה אם זה one-to-one, one-to-many או ש-many-to-many אם אנחנו בונים

  3. 00:45

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

  4. 01:10

    אז עבור ה-ID הערך כאן בהתאמה 1, 2, 3, 4 עד 8 וכולי. ומהו ה-Name? ומהו ה-Address? ומגוון של נתונים יכולים להיכנס לכאן תחת כל תגית ותגית, תחת כל איבר ואיבר בתוך קובץ ה-JSON.

  5. 01:29

    קובץ ה-JSON גם מאפשר לנו היררכיה של הנתונים עצמם. כלומר ב-interest כפי שניתן כאן בשדה אני לא חייב מיד להכניס ערך אלא אני יכול לפתוח גם בתוכו תת מבנה של אותו json כלומר תת json שמכיל גם הוא איזשהו שם של השדה עצמו ואת הערך שלו איזשהו key והvalue שלו.

  6. 01:58

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

  7. 02:21

    כל אחד מהשדות, הם יכולות להכיל הכל. נוסף לכך, נושא מאוד מעניין, בתוך שדה מסוים אנחנו יכולים להכניס מערך.

  8. 02:32

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

  9. 02:45

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

  10. 03:07

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

  11. 03:39

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

  12. 04:00

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

  13. 04:16

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

  14. 04:47

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

  15. 05:11

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

  16. 05:33

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

  17. 05:58

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

לקורס המלא: קורס MongoDB אונליין

ההרצאה הקודמת: יתרונות של MongoDB

ההרצאה הבאה: מאפיינים מרכזיים של MongoDB

הרצאות קשורות מקורסים אחרים

  • יצירת מסד נתונים - MongoDB
  • מסד נתונים NoSQL - MongoDB
  • מבנה טבלאות
  • HTML - מבנה דף

קורסים נוספים במסלול

  • קורס DBA אפליקטיבי - שפת SQL למתחילים
  • קורס SSIS
  • קורס BI - ניתוח מסדי נתונים - Qlik Sense
  • קורס Power BI