מבוא לעולם ה-Databases
מסד נתונים או Database, הוא אוסף מאורגן של מידע שניתן לבצע עליו מניפולציות כמו עריכה, הוספה, מחיקה, קריאה ועוד. המניפולציה הזו נעשית בעזרת Query Language, כלומר, שאילתה.
ישנם שני סוגים עיקריים של Databases:
- Relational Databases: בהם משתמשים ב-SQL (Structured Query Language) כשפת השאילתה הרשמית.
- Non-Relational Databases או NoSQL: בהם משתמשים במגוון של שפות ופורמטים לביצוע שאילתות. ב-MongoDB משתמשים ב-MQL (MongoDB Query Language).
מבחינה היסטורית, מסדי הנתונים SQL עבדו טוב כאשר הנתונים היו סטטיים ופשוטים. ככל שהטכנולוגיה התקדמה, מסדי הנתונים מבוסס SQL היה פחות מצויד להתמודד עם מבני נתונים שמשתנים במהירות ובמורכבות. מסדי נתונים של NoSQL הפכו למפורסמים בכך שהם הציעו אלטרנטיבה גמישה יותר, שתוכל להתמודד עם מבני נתונים שמשתנים במהירות ובמורכבות.
מבנה נתונים (Data Structure)
מבנה נתונים הן הצורה שבהם הנתונים מסודרים ב-Database. למבנה הנתונים יש חשיבות גבוהה לכמה מהר וקל נוכל לבצע מניפולציות כמו קריאה, עריכה ומחיקה של הנתונים או כל שאילתה אחרת.
מבנה הנתונים ב-SQL
במסדי נתונים מבוססי SQL, המידע מאוחסן בטבלאות, שבהם יש שורות (Rows) ועמודות (Columns).
שורה (Rows)
במסדי נתונים מבוססי SQL, השורה מייצגת רשומה (Record) אחת בטבלה. לכל שורה יש ערך בעבור כל אחת מהעמודות (columns) בטבלה.
עמודות (Columns)
במסדי נתונים מבוססי SQL, העמודה מגדירה את הסוג של המידע (כמו INTEGER, TEXT, DATE וכו') שאמור להיות מאוחסן בה, ובכך אנחנו מבטחים את המידע שמאוחסן אצלנו.
מבנה הנתונים ב-(MongoDB) NoSQL
ב-MongoDB, שהוא סוג של מסד נתונים NoSQL, הנתונים מאוחסנים בפורמט BSON, שהוא גרסה בינארית של JSON. המבנים ב-BSON דומים לאובייקטים ב-JavaScript.
Collection
במסדי הנתונים של NoSQL, כמו MongoDB, ה-collection הוא האנלוגיה לטבלה במסדי הנתונים של SQL. ה-collection מכיל אוספים של מסמכים (documents).
Documents
במסדי הנתונים של NoSQL, כמו MongoDB, ה-document מכיל את המידע בצורת JSON (מאוד דומה לאובייקט JavaScript), ויכול להכיל מידע שונה מ-document אחד ל-document אחר באותו ה-collection.
Fields
השדות הם האנלוגיה לעמודות (columns) במסדי הנתונים של SQL. הם מייצגים את את הסוג של המידע (כמו String, Number, Boolean וכו') שאמור להיות מאוחסן ב-document.
ההרחבה/שינויים (Scaling)
בעולמות ה-database, ההרחבה/שינויים (Scaling) מתייחסת ליכולת של מסד הנתונים להתמודד עם עומס גבוה של נתונים או שאילתות, ולשפר ולחזק את יכולות התגובה והאחסון.
מסדי נתונים מסוג SQL
במסדי נתונים מסוג SQL, הנטייה היא לבצע הרחבה אנכית (Vertical Scaling) לשיפור הביצועים. זה כולל בדרך כלל שיפורים ברמת החומרה, כמו הוספת מעבד, זיכרון RAM וכדומה. אך יש לשים לב שההרחבה יכולה להיות יקרה ומוגבלת על ידי הספק של החומרה.
מסדי נתונים מסוג NoSQL
במסדי נתונים מסוג NoSQL, ניתן לבצע הרחבה אופקית (Horizontal Scaling) לשיפור הביצועים. במקום להתמקד בשיפור החומרה של שרת אחד, המידע מופץ בין מספר שרתים. זה מאפשר למעשה להשתמש במספר שרתים יחסית קטנים ופחות יקרים, כל אחד מהם מאחסן חלק ספציפי של הנתונים, ובכך לשפר את הביצועים מבלי ליצור כפילות.