NOSQL VS. Relational DB - מה הדאטה בייס המתאים ביותר לפרויקט הבא שלך?

כותב: תומר לב,  ארכיטקט DATA, מנכ"ל ובעלים DATASITE 

ישנם רבים שחושבים שבסיסי הנתונים מסוג No SQL, כדוגמת MongoDB, מהווים את ה"דור החדש" של בסיסי הנתונים. לפי גישה זו, אפליקציות חדשות, שאינן "כבולות" לבסיס נתונים כזה או אחר יכולות פשוט להשתמש בבסיס נתונים מסוג NoSQL וכך להנות מהיתרונות של הקידמה, היעילות והעלויות הנמוכות. ובכן לצערי (או לשמחתי, תלוי איך מסתכלים על זה)  זהו מיתוס שאינו נכון. אמנם טכנולוגית ה- NoSQL היא יותר חדשה, אך אין זה אומר שהיא מתאימה לכל אפליקציה. כפי שאסביר במאמר זה, הטכנולוגיה הזו פותחה לתת מענה לסוג מסויים של שימושים בלבד, כך שבחירה לא נכונה יכולה להוביל לחוסר יעילות ובזבוז רב, ובמקרים מסויימים זה פשוט לא יעבוד. במאמר זה אנסה לעשות סדר בבלגן תוך מתן טיפים לבחירה הנכונה בסוג ה- DB המתאים ביותר.

מה זה NoSQL וכיצד הוא שונה מבסיסי נתונים רלציוניים?

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

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

הבדל חשוב נוסף הינו העובדה שבסיסי הנתנים הרלציוניים תומכים ב- vertical scaling בלבד. כלומר כדי לגדול יש להוסיף יכולות לאותה מכונה. ואילו NoSQL תומך ב- horizontal scaling, המאפשר גדילה רוחבית על פני מספר בלתי מוגבל של מכונות.

בסיסי נתונים NoSQL מתחלקים לכמה משפחות עיקריות, כאשר כל אחת מאופיינת במטרות וביצועים שונים:

  • Document Databases – בסיס נתונים בו המסמך הוא המפתח והתוכן של המסמך, באשר הוא, הוא הערך. דוגמה לבסיס נתונים זה הינו MongoDB.
  • Graph Stores – בנויים על סכימה שמכילה קשרים בין נתוים ובין אובייקטים במטרה להציג את הנתונים ואת הניתוח באמצעות גרפים חזותיים. סוג זה של בסיס נתונים משמש לרשתות חברתיות ולמערכות למניעת הונאה. דוגמה לבסיסי נתונים זה הינו Neo4J.
  • Key Value Store – מאחסנות זוגות של ערכי מפתח ומספקות פונקציונליות בסיסית לאחזור הערך המשויך למפתח ידוע. הפשטות בשמירת נתונים באופן הזה הופכת את מערכות אלה למותאמות היטב ל embedded databases, כאשר הנתונים המאוחסנים אינם מורכבים במיוחד ומהירותם היא בעלת חשיבות עליונה. דוגמה לבסיס נתונים זה הינו Redis.
  • Wide-Column Stores – בסיס נתונים מבוססי עמודות (במקום שורות), בו משמשים בעיקר לשאילתות על מערכי מידע גדולים במיוחד. דוגמה לבסיס נתונים זה הינו Cassandra.

איזה סוג DB מתאים לפרוייקט שלך?

אלה המאפיינים שעבורם בסיס נתונים רלציוני (SQL) הינו אידאלי:

  • מידע מובנה (structured) – אם המידע שבפרוייקט הינו מובנה, כלומר מבנה הנתונים צפוי מראש (שדות, טבלאות, וכו') עם הרבה מאוד קשרים בין מערכים של דאטה, אז ככל הנראה אתם זקוקים לבסיס נתונים רלציוני.
  • שלמות המידע (ACID) – ACID הינו ראשי תיבות של Atomicity, Consistency, Isolation, Durability. המשמעות הינה מנגנונים השומרים על שלמות ונכונות הנתונים תוך הגדרה מדויקת של תהליכים טרנזקציניים. לכן אם שלמות ונכונות המידע חיוניים עבור הפרוייקט שלכם סוג זה של יכולות יכול להתאים יותר.
  • שימוש ב- Joinים – אם אתם זקוקים לאחזר סטים שונים של מידע השמורים בטבלאות שונות, תוכלו לעשות זאת בקלות בבסיס הנתונים הרלציוני. לעומת זאת ב- document databases אין אפשרות לבצע זאת כך ותאלצו לבצע מספר שאילתות כדי לאחזר סטים שונים של מידע.

אלה המאפיינים שעבורם בסיס נתונים לא-רלציונלי (NoSQL) הינו אידאלי:

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

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