מבלי להכנס להגדרות שניתן למצוא ברחבי האינטרנט, NoSQL מעלה מספר אסוציאציות מהותיות: ראשית הוא Schema-less/אינו רלציוני, ולכן גמיש יותר הן בעיצוב סכמות והן בהכנסת נתונים, שנית הוא קל לביזור ו"סקיילבילי לרוחב", כלומר קל לגדול איתו ולהוסיף NODES חדשים כשצריך, ושלישית הוא פחות ממקסם על consistency (ע"ע CAP Theorem) ומבטיח Eventually Consistent.מה זה לא?
* הוא לא מיועד ל"מה שנקרא BigData". יש תרחישים על Small Scale Data שכדאי להשתמש ב-NoSQL, למשל אם אין סכמה ברורה למידע או שקשה להטיל אותו לטבלאות. מנגד יש תרחישים של Big Data ש-NoSQL הוא Big No עבורם, לדוגמה חישובים סיכומיים על כמות גדולה של מידע נפתרים הרבה פעמים ע"י מודלים רלציונים (Bigtable של גוגל, GreenPlum, Netezza של IBM ובאופן כללי קטגוריית ה-MPP).
* שימוש אינטנסיבי במפה/אינדקסים מסובכים - bmaorlo נתן דוגמאות ספציפיות מדוע mongo טוב לזה, וזה ממש לא נכון שבאופן כללי NoSQL טוב לאינדוקס טקטואלי או ליכולות Geospatial. לצורך העניין Cassandra, HBase, Couchbase הן דוגמאות ל-NoSQL שגרועים בזה. יש גם DBים רלציונים בעלי יכולות טקסטואליות טובות לדוגמה ורטיקה של חברת HP.
מבין התשובות התגובה האחרונה דייקה יותר כשאמרה שבסוף צריך לבחון את הצרכים העסקיים של האפליקציה, את האילוצים הטכנולוגים והפרויקטלים - ומהם לגזור החלטה כאשר אין תשובה אחת נכונה.
לגבי קריאה/כתיבה: קיימים NoSQL עם קצב הכנסה גבוה במיוחד כי התכלית שלהם לאגור מידע מהר ולאפשר עליו שליפות בסיסיות בלייב. לדוגמה Couchbase יכול להגיע לקצבי הכנסה של מיליוני רשומות בשנייה. יכולות התשאול על NoSQL בד"כ מצומצמות יותר, אגרגציות הרבה פעמים מתבצעות בצורה לא יעילה ואין תמיכה ב-JOINים. גם במקרה זה יש הרבה יוצא מן הכלל, אך נראה לי שהעמקתי יותר מדי.
לגבי פרויקטים קטנים: אם מדובר בפרויקט קטן או כחלק מתהליך פיתוח, אפשר להרים mongoDB בקלות על המחשב, להתחבר אליו ולעשות בדיקות. אם במסגרת הפרויקט הקטן אתה מבין שאתה יוכל לתאר את העולם היטב ע"י טבלאות, תבחר ב-DB רלציוני דוגמת mysql. אם הפרויקט הוא גדול, אז כאמור ההחלטה נהיית מורכבת ובד"כ לא תהיה כ"כ פשוטה.