ABA


"מה היתרון בשימוש ב NOSQL על פני SQL?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21684 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21684
כמה עוד לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.11.09
234 הודעות, 11 פידבק
   16:44   15.05.16   
אל הפורום  
  מה היתרון בשימוש ב NOSQL על פני SQL?  
 
   אני מנסה לחשוב מתי מפתח תוכנה מחליט שהוא צריך להשתמש ב NOSQL במה שהוא מתכנן לבנות
אני יודע של- NOSQL יש את שלושת ה V של מהירות, גיוון ונפח.. אבל בכל זאת אשמח אם מישהו יכול לפרט על איזה מקרים שהם "צועקים" על שימוש ב NOSQL
NOSQL מהיר יותר מ SQL בקריאה וגם בכתיבה או שבקריאה יותר איטי?
תודה, אלון


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  NoSQL מיועד למה שנקרא BigData, כלומר כאשר יש כמויות עצומות של מידע. ohadeytan 16.05.16 11:02 1
     תודה רבה על התשובה כמה עוד 17.05.16 10:14 2
  בנוסף למה שהבחור מעלי אמר bmaorlo  17.05.16 10:39 3
     אחלה תשובה, תודה רבה כמה עוד 18.05.16 11:34 4
  בסופו של דבר זה עניין של העדפה לרוב, חשוב להבין את השוני בין שניהם איציק2 18.05.16 23:47 5
     תודה תודה כמה עוד 19.05.16 09:03 6
  ברוב התשובות שקיבלת יש הרבה אי-דיוקים Deuce  28.05.16 01:06 7
     זה לא מדוייק... יוחאי 28.05.16 20:14 8

       
ohadeytan לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.8.06
617 הודעות, 3 פידבק
   11:02   16.05.16   
אל הפורום  
  1. NoSQL מיועד למה שנקרא BigData, כלומר כאשר יש כמויות עצומות של מידע.  
בתגובה להודעה מספר 0
 
   אז הוא מהיר יותר גם בכתיבה וגם בקריאה.
מוותרים על יכולות מתקדמות ונוחות של SQL בשביל ביצועים.
מדובר בעיקר על מצבים בהם לא ניתן להחזיק את כל המידע על מכונה אחת וצריך לבזר אותו על מערכת שלמה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כמה עוד לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.11.09
234 הודעות, 11 פידבק
   10:14   17.05.16   
אל הפורום  
  2. תודה רבה על התשובה  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
bmaorlo 
חבר מתאריך 13.4.03
4770 הודעות
   10:39   17.05.16   
אל הפורום  
  3. בנוסף למה שהבחור מעלי אמר  
בתגובה להודעה מספר 0
 
   לא רק לbig data, ויותר מזה יש שרתי nosql שלא יעמדו בbig data.

הכלל אצבע אומר שתשתמש מתי שאתה צריך, ולא בגלל שהעולם עובר לטרנד הזה או משהו כזה. אני לא מוותר על בסיס נתונים רציונלי לארגן את המידע שלי, וכן משתמש ב nosql מתי שאני צריך.

מתי אני צריך
caching , שליפה משרתי ram כלשהם לפי מפתח key index הרבה יותר מהיר מאשר מבסיס נתונים רציונלי. אבל חשוב לשים לב שהאפליקציה שלי יכולה לעבוד גם בלעדיהם.

שימוש אינטנסיבי במפה, לmongo יש פיצר נחמד שהוא נותן לחפש לפי פוליגונים, זה עזר לי הרבה שבניתי חיפש לפי מפה, ועבר הרבה יותר מהר מmysql .

אינדקסים מסובכים - לפעמים אני משתמש באינדקס מורכב על מנת להוציא ממנו נתונים שיעזרו לי לחפש ברציונלי במהירות, לדוגמא אני צריך לחפש את כל המקומות שבפריז שהשם שלהם מתחיל באות a ונגמר באות g , למונגו יש אחלה אינדקסים לזה, ממונגו אני מקבל רק את הids של מה שאני הולך אחכ לחפש בmysql בשאילתא פשוטה על ids.

מקווה שזה עזר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כמה עוד לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.11.09
234 הודעות, 11 פידבק
   11:34   18.05.16   
אל הפורום  
  4. אחלה תשובה, תודה רבה  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   23:47   18.05.16   
אל הפורום  
  5. בסופו של דבר זה עניין של העדפה לרוב, חשוב להבין את השוני בין שניהם  
בתגובה להודעה מספר 0
 
   SQL נותן לך הבטחה של שלמות המידע, מה שאומר שהוא מבטיח לך שכל המידע שתרצה להכניס אליו ייכנס ואם משהו בדרך לא יצליח להיכנס הוא יכשיל את כל הבקשה, או במילים אחרות טרנזקציה.
NOSQL לא מאפשר לך לעשות את זה, מצד שני הוא כן מבטיח אטומיות על מסמך.

לרוב כשמדובר על פרויקטים רגישים, כמו כאלה שמתעסקים בכסף, משתמשים בSQL.
תחשוב על זה לדוג' מערכת בנקאית שתשתמש בMONGO, ביצעת העברה מהחשבון שלך לחשבון שלי, שלחת פקודה לMONGO להוריד כסף מהמסמך שמייצג את החשבון שלך, ואז שלחת פקודה למונגו להוסיף את הסכום למסמך שמייצג את החשבון שלי. אם אחת הפעולות נכשלה, אז או שיצרת כסף יש מאין או שהעלמת כסף במקרה השני.
SQL מאפשר לך לבצע את 2 הפעולות הללו ולהתייחס אליהן כפעולה אחת וכך לשמור על "אטומיות" בין פעולות מרובות באמצעות טרנזקציה.

דוגמא לNOSQL היא כשאתה צריך לבצע פעולות פשוטות יחסית, היתרון שאני רואה במונגו זה שהוא גורם לך לחשוב בצורה פשוטה. בלי שאילתות מסובכות, אתה מנסה לעשות כמה שפחות פעולות על הDB (כדי לשמור על אטומיות), לא צריך בנאדם מומחה גדול (לרוב) שיתחזק לך את הסיפור, זה פשוט עובד. אפשרי תמיד להרחיב אותו ויש לך דרייברים נוחים להרבה שפות (במקרה שלי #C).

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כמה עוד לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 18.11.09
234 הודעות, 11 פידבק
   09:03   19.05.16   
אל הפורום  
  6. תודה תודה  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   01:06   28.05.16   
אל הפורום  
  7. ברוב התשובות שקיבלת יש הרבה אי-דיוקים  
בתגובה להודעה מספר 0
 
מבלי להכנס להגדרות שניתן למצוא ברחבי האינטרנט, 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. אם הפרויקט הוא גדול, אז כאמור ההחלטה נהיית מורכבת ובד"כ לא תהיה כ"כ פשוטה.






                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
יוחאי
חבר מתאריך 30.12.15
163 הודעות
   20:14   28.05.16   
אל הפורום  
  8. זה לא מדוייק...  
בתגובה להודעה מספר 7
 
   זה סופר מדוייק..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net