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

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

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

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

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

דילוג לתוכן