PracticU

השוואה בין SQL Server לבין MongoDB

בלי כתוביותעם כתוביות
PracticU › קורס NoSQL - MongoDB › השוואה בין SQL Server לבין MongoDB
מילון מושגים:
MongoDB - מסד נתונים מסוג NoSQL שמאחסן נתונים כמסמכים בפורמט דמוי JSON, בלי מבנה טבלאי קשיח.
Join - פעולת SQL שמשלבת שורות משתי טבלאות או יותר על בסיס קשר ביניהן.
מפתח זר - עמודה בטבלה שמפנה למפתח הראשי בטבלה אחרת, ובכך יוצרת קשר בין הטבלאות.
Agile - גישת פיתוח איטרטיבית וגמישה, שבה העבודה מתקדמת במחזורים קצרים עם משוב והתאמה מתמשכים.
סוג נתונים - הגדרה של סוג הערך שמשתנה או עמודה יכולים להחזיק, למשל מספר שלם, טקסט או תאריך.
קוד פתוח - תוכנה שקוד המקור שלה זמין לציבור לצפייה, לשימוש ולשינוי, לרוב לפי רישיון מתאים.
CLR - סביבת הריצה של .NET שמריצה את הקוד, מנהלת את הזיכרון ומטפלת בשגיאות (Common Language Runtime).
פרוצדורה מאוחסנת - קטע קוד SQL שמור במסד הנתונים שאפשר להפעיל לפי שם, לביצוע חוזר של פעולות על הנתונים.

השוואה בין SQL Server לבין MongoDB
סיכום של ההיכרות עם מסדי נתונים לא רלציוניים: ההרצאה משווה נקודה אחר נקודה בין SQL Server, מסד נתונים רלציוני, לבין MongoDB, מסד נתונים שמבוסס על מסמכים.
ההבדלים העיקריים
1. גיל ואחסון: SQL Server פותח כבר ב-1989, ו-MongoDB קיים רק מ-2009. ב-SQL Server הנתונים בטבלאות, וב-MongoDB הם נשמרים כמסמכים (Document Oriented) בתוך collections.
2. קשרים ו-Join: ב-SQL Server מחברים טבלאות באמצעות Join ו-foreign key. ב-MongoDB אין אובייקטים של טבלאות, אין קשרים מחייבים בין collections ואין Join, ואפשר לכל היותר לבצע lookup.
3. טרנזקציות: ב-SQL Server הטרנזקציה היא ACID: אטומית, עקבית, מבודדת ועמידה. ב-MongoDB אין טרנזקציות ואין התחייבות לאף אחד מהתנאים האלה.
4. שיטת עבודה Agile: מול SQL Server קודם מאפיינים את הארכיטקטורה, אחר כך ממלאים נתונים, ורק אז עוברים לאפליקציה ולבדיקות. ב-MongoDB אפשר לעבוד במקביל כצוות אחד של מפתחים, בודקים ומנתחים.
5. סכמה וסקיילביליות: הסכמה ב-SQL Server קשיחה. ב-MongoDB היא גמישה ואינה מחייבת טיפוס נתונים, גודל עמודה או שדות חובה. SQL Server מתרחב רק אנכית, ו-MongoDB מתרחב אופקית, כך שכמה שרתים פועלים כיחידה אחת.
6. שפה ו-MapReduce: ב-MongoDB יש MapReduce ועבודה עם JavaScript ופקודות JSON, וב-SQL Server רק SQL.
7. אינדקסים וטריגרים: אינדקסים משניים (Non-Clustered Index) קיימים בשניהם. טריגרים מפותחים מאוד ב-SQL Server, ברמת DML, DDL והשרת, וגם תזמון בסגנון Agent. ב-MongoDB הם נוספו רק ב-Atlas, ויוצגו בהמשך הקורס.
8. קונקרנציה ואמינות: ב-SQL Server יש אחידות ואמינות גבוהה של הנתונים לאורך זמן, וב-MongoDB אין התחייבות כזו.
9. רישוי ומימוש: SQL Server של מיקרוסופט הוא מסחרי, ו-MongoDB הוא open source. שניהם כתובים ב-C++.
10. פלטפורמות ושפות: SQL Server עבד עד 2017 רק ב-Windows ומאז גם ב-Linux, ו-MongoDB עובד מלכתחילה על Windows, Linux ו-macOS. ל-MongoDB מגוון רחב יותר של דרייברים, ו-SQL Server מתחבר ל-.NET דרך CLR ולשפות נוספות.
11. XML ו-JSON: SQL Server תומך גם ב-XML וגם ב-JSON, ו-MongoDB עובד רק עם JSON.
שימו לב
החיבור של SQL Server ל-.NET דרך CLR אינו מובנה בתוך ה-SQL: מתוך stored procedure מפעילים רכיב חיצוני שנכתב ב-C#.
אחרי ההרצאה אפשר להסביר באילו תחומים כל אחד משני המסדים חזק יותר, ולפי זה להחליט מה מתאים לפרויקט.
השיעור הבא בקורס: ענן של Atlas - MongoDB

פרקי ההרצאה: השוואה בין SQL Server לבין MongoDB

  1. 00:00

    גיל המערכות ומבנה האחסון

  2. 00:45

    Join ו-Foreign Key מול Collections

  3. 01:22

    טרנזקציות ACID ב-SQL Server

  4. 02:21

    היעדר טרנזקציות ב-MongoDB

תמלול ההרצאה: השוואה בין SQL Server לבין MongoDB

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

  1. 00:02

    כסיכום לדיון המקדמי שעברנו עד כה, בואו נשווה בין דאטאבס רלציוני כ-SQL Server לעומת דאטאבס של דוקר ו-NTP, דאטאבס שמייצג את הבידאטה, במקרה שלנו את מונגו-DB. ניכנס כאן לקישור שמציג את הדברים עצמם ונעבור אחר ההבדלים.

  2. 00:21

    כאן אנחנו מדברים במונגו-DB על דאטאבס קצת צעיר יותר לעומת הדאטאבס הרלציוני של SQL Server שפותח כבר בשנת 1989 לעומת דאטאבס שאנחנו מכירים אותו רק בעשור האחרון החל משנת 2009. מבחינת ה-Storage שאותו אנחנו שומרים כאן מדובר על דאטאבס כפי שדיברנו על דאטאבס רלציוני RDMS ב-SQL Server לעומת דאטאבס שנשמר לנו כ-Document Oriented שנשמר לנו בתוך

  3. 00:54

    מסמכים עצמם. האם אנחנו מבצעים פעולות של Join? אז ב-SQL Server אנחנו מחברים Join בין טבלאות שילוב של טבלאות עצמם אז ב sql server אנחנו שומרים קישורים בין האובייקטים עצמם כדי לבצע join מבוצעים על ידי foreign key על ידי קשרים בין הטבלאות במונגו

  4. 01:20

    db אין לנו בכלל אובייקטים יש לנו collections ואין ביניהם קשרים ואילוצים מחייבים ו-joינים ביניהם אנחנו לא עושים טרנזקציה ב-SQL Server מחויבת להיות טרנזקציה מסוג אסיד טרנזקציה שהיא אטומית טרנזקציה שהיא קונסיסטנטית דהיינו שהיא משאירה

  5. 01:45

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

  6. 02:08

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

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

ההרצאה הקודמת: מאפיינים מרכזיים של MongoDB

ההרצאה הבאה: ענן של Atlas - MongoDB

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

  • השוואה בין #C לבין JAVA
  • התקנת מסד הנתונים - SQL Server - MSSQL
  • Server Transaction
  • השוואה בין גרסאות - Log ו-Show

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

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