אני שומע ומדבר הרבה עם אנשים אשר שומעים הרבה על NoSQL, אבל לא מבינים כל כך מה הכוונה של "סכמות". אז החלטתי לכתוב את הפוסט הזה בשבילם.
כמו שכתבתי בעבר, יש הרבה מאוד סוגי מסדי נתונים. התפקיד של מסד נתונים זה לדעת לשמור מידע בשביל שימוש במידע כשיש צורך. זו לפחות ההגדרה הפשוטה ביותר שאני מצליח לחשוב עליה (אשמח לשמוע עוד הסברים אם יש לכם).
דרך אחת לשמור מידע שמאוד מוכרת וידועה זה מסד נתונים טבלאי. הטבלה היא בעצם סכמה המתארת מה סוג המידע שישמר בכל שדה ברשומה. הסכמה אומרת שיש מבנה קבוע לכל טבלה וטבלה, ולכן גם המידע שנשמר בטבלה נשמר בצורה קבועה. הצורה הקבועה זה לא שהמדיע אינו משתנה, אלא הוא חייב תמיד להיות אותו סוג של ערך שהוגדר בטבלה (אלא אם הערך הזה יכול להשתנות כמו SQLite, אבל יש עם זה הרבה בעיות).
לעומת זאת, יש מסדי נתונים ללא סכמה. מה הכוונה ? הכוונה היא שכל רשומה יכולה להכיל מבנה לגמרי שונה של מידע. כלומר רשומה אחת יכולה להיות שם קובץ, מספר בתים והרשאות. רשומה שנייה יכולה להיות מידע של תוכן קובץ במקום פרטי קובץ והרשומה השלישית יכולה להיות בכלל שם בן אדם, דוא"ל, וכתובת האתר שלו.
כאשר אין סכמה למסד נתונים, הטבלה בעצם מזכירה יותר שימוש של ספרייה במערכת קבצים מאשר כל רשומה זה סוג קובץ אחר.
אני מקווה שההסבר כאן עזר לכם להבין טוב יותר מה זה כל אחד. ואני מקווה שתצליחו לדעת מתי מסד נתונים מסויים יודע לענות טוב יותר לצרכים מאשר מסד אחר.