ישנם רבים שחושבים שבסיסי הנתונים מסוג No SQL, כדוגמת MongoDB, מהווים את ה"דור החדש" של בסיסי הנתונים. לפי גישה זו, אפליקציות חדשות, שאינן "כבולות" לבסיס נתונים כזה או אחר יכולות פשוט להשתמש בבסיס נתונים מסוג NoSQL וכך להנות מהיתרונות של הקידמה, היעילות והעלויות הנמוכות. ובכן לצערי (או לשמחתי, תלוי איך מסתכלים על זה) זהו מיתוס שאינו נכון. אמנם טכנולוגית ה- NoSQL היא יותר חדשה, אך אין זה אומר שהיא מתאימה לכל אפליקציה. כפי שאסביר במאמר זה, הטכנולוגיה הזו פותחה לתת מענה לסוג מסויים של שימושים בלבד, כך שבחירה לא נכונה יכולה להוביל לחוסר יעילות ובזבוז רב, ובמקרים מסויימים זה פשוט לא יעבוד. במאמר זה אנסה לעשות סדר בבלגן תוך מתן טיפים לבחירה הנכונה בסוג ה- DB המתאים ביותר.
מה זה NoSQL וכיצד הוא שונה מבסיסי נתונים רלציוניים?
ובכן סוג זה של בסיס נתונים נועד לתת מענה יעיל לנפחים גדולים של מידע שאינו מאורגן לפי שיטה מסויימת, כלומר מידע בלתי מובנים (Unstructured) שהינו מגוון מאוד כך שלא ניתן לסדר אותו בטבלאות. דוגמאות לסוגי מידע שכאלה הינם: לייקים ושיתופים ברשתות חברתיות, תגובות של גולשים, תמונות, מידע מסנסורים ועוד. בנוסף, בסיסי נתונים מסוג NoSQL נפוצים יותר במערכות Big Data וכן במערכות זמן אמת.
ההבדל העיקרי בין בסיס נתונים NoSQL ו-רלציוניים הוא שמערכות RDBMS מגדירות באופן נוקשה את האופן שבו כל הנתונים שהוכנסו לבסיס הנתונים חייבים להיות מוקלדים ומורכבים, ואילו בסיס הנתונים NoSQL מבוססים סכימת נתונים בכל צורה שהיא, ומאפשרים לאחסן ולטפל בנתונים בלתי מובנים ומובנים למחצה.
הבדל חשוב נוסף הינו העובדה שבסיסי הנתנים הרלציוניים תומכים ב- vertical scaling בלבד. כלומר כדי לגדול יש להוסיף יכולות לאותה מכונה. ואילו NoSQL תומך ב- horizontal scaling, המאפשר גדילה רוחבית על פני מספר בלתי מוגבל של מכונות.
בסיסי נתונים NoSQL מתחלקים לכמה משפחות עיקריות, כאשר כל אחת מאופיינת במטרות וביצועים שונים:
איזה סוג DB מתאים לפרוייקט שלך?
אלה המאפיינים שעבורם בסיס נתונים רלציוני (SQL) הינו אידאלי:
אלה המאפיינים שעבורם בסיס נתונים לא-רלציונלי (NoSQL) הינו אידאלי:
לסיכום, לכל סוג DB יש את היתרונות והחסרונות שלו. אין איזה סוג שהינו "כל יכול" ו"מחליף את קודמו" אלא כל סוג פותח כדי לתת מענה לסוג מסויים של דרישות. המומחים שלנו שמכירים לעומק את היתרונות והחסרונות של כל טכנולוגיה על בסיס נסיון רב בשטח, יכולים לעזור לכם בבחירת הטכנולוגיה המתאימה ביותר עבורכם.
SQL server allows us to create multiple indexes for each table
כולנו מכירים את אותם מצבים בהם תוכנה\שירות\אפליקציה נופלת ואינה זמינה לפרק זמן מסויים. זה קורה לכולם, גם לחברות ענק.