משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יבינו מתי Document Database מתאים יותר מ-SQL, ויבצעו CRUD בסיסי עם MongoDB.Driver.

בסוף השיעור הסטודנטים צריכים: להסביר את ההבדל בין Collection ל-Table, לבצע Insert/Find בסיסיים, ולזהות מתי MongoDB מתאים ומתי SQL עדיף.

דגש קריטי: הימנעו מהצגת MongoDB כ"טוב יותר מ-SQL" — זה כלי שונה לבעיה שונה, לא שדרוג. הדגישו זאת מפורשות.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהראו קטלוג מוצרים מגוון — “איך זה בטבלת SQL אחידה?”
הבעיה: סכמה קשיחה לא מתאימה15 דקותNULL בעמודות לא-רלוונטיות, או טבלאות נפרדות לכל סוג
הרעיון: Document/Collection20 דקותגמישות, דוגמת מוצרים שונים באותה Collection
BSON10 דקותהרחבת JSON עם טיפוסים
הדגמה חיה: Insert/Find25 דקותMongoDB.Driver, דמיון ל-LINQ
דיון: מתי מה10 דקותPolyglot Persistence — לא תחרות
תרגול מודרך5 דקותתרגיל 1

דגשים להעברת השיעור

  • ההנחיה הכי חשובה בשיעור הזה: אל תיצרו רושם ש-NoSQL “מחליף” SQL. הציגו את שניהם ככלים משלימים לבעיות שונות — הדגישו את זה יותר מפעם אחת.
  • דוגמת קטלוג המוצרים (חולצה מול מחשב) היא הכי משכנעת — ודאו שסטודנטים מבינים למה זה בעייתי בטבלת SQL אחידה לפני שמציגים את הפתרון.
  • הדגמה חיה עם MongoDB.Driver בפועל (לא רק שקופיות) חשובה — הריצו Insert+Find על MongoDB אמיתי (לוקאלי או Atlas).

מושגים

Document — רשומה גמישה דמוית-JSON. Collection — קבוצת Documents, בלי סכמה אחידה מחייבת. BSON — JSON בינארי עם טיפוסים נוספים.


תרגיל חשיבה

שאלת פתיחה: “אתם מתכננים DB לחנות שמוכרת גם ביגוד וגם אלקטרוניקה. בטבלת SQL אחת, כמה עמודות NULL תהיו לכם על כל מוצר בממוצע? מה MongoDB פותר כאן?”

מהלך: תנו לסטודנטים לחשב בערך — מוצר ביגוד עם עמודות CPU/RAM ריקות, מוצר אלקטרוניקה עם Size/Color ריקות. הובילו לתובנה שזה לא רק “מכוער” — זה גם מבזבז מקום ומקשה על ולידציה הגיונית (מתי CPU ריק זה תקין ומתי זו שגיאה?).

מה המרצה מראה בסוף: הריצו Insert של שני מוצרים שונים לגמרי במבנה לאותה Collection ב-MongoDB אמיתי, ואז Find שמחזיר את שניהם — הראו שאין שום שגיאה או “התנגשות סכמה”, כי היא פשוט לא נאכפת ברמת ה-DB.