יום שישי , אוקטובר 20 2017
מבזקים
דף הבית > תוכנות > מתי חכם להשתמש ב- ?NoSQL

מתי חכם להשתמש ב- ?NoSQL

מאת דנילו פוצ'יה, אוונגליסט טכני, אמזון ווב סרוויסס (AWS)

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

דנילו פוצייה

דנילו פוצ'יה

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

SQL (Structured Query Language) היא שפת התכנות הסטנדרטית כדי לתקשר עם מסדי נתונים יחסיים. היא משמשת לניהול, אחסון ושליפת נתונים. מודל מסדי נתונים יחסי מנרמל את הנתונים בצורת טבלה והוא מורכב משורות ועמודות. סכמת-על מגדירה את הטבלאות, העמודות והאינדקסים, ואת היחסים בין הטבלאות והרכיבים האחרים של מסד הנתונים. מסדי נתונים RDBMS עובדים עם מערך תכונות שזכו לכינוי ACID (ראשי תיבות של: אטומיות, עקביות, בידוד, עמידות (באנגלית). דוגמא טובה ליישום הנהנה מגישת מסד נתונים יחסי, הוא יישום בנקאות ביתית טיפוסי.

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

'עקביות' מבטיחה כי כל עסקה תביא את מסד הנתונים ממצב תקף אחד למצב תקף אחר, כך שעקביות דורשת שהנתונים יעמדו בכל הכללים למתן תוקף. אם יתרת חשבון עומדת על 1,000 שקל והלקוח מעביר 100 שקל לחשבון אחר, אזי החשבון האחר צריך להציג את התוצאה של ההעברה. אם זה לא קורה, העסקה חייבת להתבטל.

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

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

התפוצצות המידע

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

היתרונות של NoSQL

מסדי נתונים מסוגNon-relational , אינם פועלים על פי סכמה מקיפה כמו מסדי נתונים :SQL בדרך כלל "hash key" משמש כדי להביא ערכים מסוימים, כגון אוסף של עמודות, או JSON מובנה-למחצה XML , או מסמכים אחרים עם מאפיינים נלווים. עם NoSQL (המכונה גם "Not Only SQL"), ניתן לאחסן נתונים לא-מובנים בלי סכמת טבלאות קבועה, מה שמתאים לסוגי נתונים בהם לקשר בין הנתונים אין תפקיד משמעותי. כאשר יישום בעיקר מאנדקס ומבקש נתונים ואינו צריך למזג נתונים או לדרוש טרנזקציות מורכבות, NoSQL היא הבחירה הברורה.

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

תחזוקת שרתי  NoSQL יכול להתבצע בדרך כלל במחיר נמוך יותר מאשר תחזוקת שרתיRDBMS . עבור מערכות RDBMS נדרשים מומחים מיומנים ויקרים. מסדי נתוניםNoSQL לעומתם, דורשים הרבה פחות ניהול, ועם תפקודיות כמו תיקון אוטומטי, הפצת נתונים קלה יותר, ומודלים פשוטים יותר של נתונים, נדרשים פחות ניהול ותחזוקה. בנוסף, שרתי NoSQL עצמם זמינים בדרך כלל במחיר נמוך יותר מאשר השרתים הייעודיים היקרים ומערכות האחסון אותם דורשת SQL. לכן, העלות לכל GB של פתרון NoSQL יכולה להיות הרבה יותר נמוכה מהעלות של פתרון. SQL

עבור כל יישום, פתרון מסד הנתונים המתאים

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

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

 

אודות מערכת ITNEWS מאיר עשת

מנהל/עורך אתר ITNEWS. בוגר כלכלה ומנה"ס באונ' בן גוריון ו- MBA בירושליים. בעבר: כהן כיועץ כלכלי מטעם המדינה בהולנד ובהודו. היה סמנכ"ל שיווק בברדר, משנה למנכ"ל בסטארטאפ TVNGO, מנהל IT מגזין של גלובס בשנתיים האחרונות.