סקירה כללית של NoSQL
ראשי התיבות NoSQL הוטבעו ב-1998. אנשים רבים חושבים ש-NoSQL הוא מונח גנאי שנוצר כדי לחטט ב-SQL. במציאות, המונח פירושו לא רק SQL. הרעיון הוא ששתי הטכנולוגיות יכולות להתקיים יחד ולכל אחת יש את המקום שלה. תנועת NoSQL הייתה בחדשות בשנים האחרונות מכיוון שרבים ממובילי ה-Web 2.0 אימצו טכנולוגיית NoSQL. חברות כמו פייסבוק, טוויטר, Digg, Amazon, LinkedIn וגוגל כולן משתמשות ב-NoSQL בדרך זו או אחרת. בוא נפרק את NoSQL כדי שתוכל להסביר את זה ל-CIO שלך או אפילו לעמיתיך לעבודה.
NoSQL נוצר מתוך צורך
אחסון נתונים: הנתונים הדיגיטליים המאוחסנים בעולם נמדדים באקסבייטים. אקס-בייט שווה למיליארד גיגה-בייט (GB) של נתונים. לפי Internet.com, כמות הנתונים המאוחסנים שנוספו ב-2006 הייתה 161 אקס-בייט. רק 4 שנים מאוחר יותר ב-2010, כמות הנתונים המאוחסנים תהיה כמעט 1,000 ExaBytes, שהיא עלייה של למעלה מ-500%. במילים אחרות, יש הרבה נתונים המאוחסנים בעולם והם רק ימשיכו לגדול.
נתונים מחוברים: הנתונים ממשיכים להיות מחוברים יותר. יצירת האינטרנט מטופחת בהיפר-קישורים, לבלוגים יש פינגבקים ולכל מערכת רשת חברתית גדולה יש תגיות שקושרות דברים יחד. מערכות עיקריות בנויות להיות מחוברות זו לזו.
מבנה נתונים מורכב: NoSQL יכול להתמודד עם מבני נתונים מקוננים היררכיים בקלות. כדי להשיג את אותו הדבר ב-SQL, תזדקק למספר טבלאות יחסים עם כל מיני מפתחות. בנוסף, קיים קשר בין ביצועים למורכבות הנתונים. הביצועים יכולים להתדרדר ב-RDBMS מסורתי כאשר אנו מאחסנים את כמויות הנתונים העצומות הנדרשות ביישומי רשתות חברתיות רשת סמנטית.
מה זה NoSQL?
אני מניח שאחת הדרכים להגדיר NoSQL היא לשקול מה זה לא. זה לא SQL וזה לא יחסי. כפי שהשם מרמז, זה לא תחליף ל-RDBMS אלא מחמיא לו. NoSQL מיועד למאגרי נתונים מבוזרים לצרכי נתונים בקנה מידה גדול מאוד. חשבו על פייסבוק עם 500,000,000 המשתמשים שלה או על טוויטר שצוברת טרה-ביטים של נתונים בכל יום.
במסד נתונים של NoSQL, אין סכמה קבועה ואין הצטרפות. RDBMS "מגדיל" על ידי קבלת חומרה מהירה יותר ויותר והוספת זיכרון. NoSQL, לעומת זאת, יכול לנצל את ה"תרחבות". הרחקה מתייחסת לפיזור העומס על פני מערכות סחורות רבות. זהו הרכיב של NoSQL שהופך אותו לפתרון זול עבור מערכי נתונים גדולים.
קטגוריות NoSQL
עולם ה-NoSQL הנוכחי מתאים ל-4 קטגוריות בסיסיות.
-
חנויות מפתח-ערכים מבוססים בעיקר על נייר דינמו של אמזון שנכתב ב-2007. הרעיון המרכזי הוא קיומה של טבלת hash שבה יש מפתח ייחודי ומצביע לפריט נתונים מסוים. מיפויים אלה מלווים בדרך כלל במנגנוני מטמון כדי למקסם את הביצועים.
- עמוד חנויות משפחתיות נוצרו כדי לאחסן ולעבד כמויות גדולות מאוד של נתונים המופצים על גבי מכונות רבות. עדיין יש מפתחות אבל הם מצביעים על מספר עמודות. במקרה של BigTable (מודל NoSQL Family Column של גוגל), שורות מזוהות על ידי מפתח שורה כאשר הנתונים ממוינים ומאוחסנים על ידי מפתח זה. העמודות מסודרות לפי משפחת העמודות.
- מסדי נתונים של מסמכים היו בהשראת הערות לוטוס והם דומים לחנויות ערך מפתח. המודל הוא בעצם מסמכים מנוסחים שהם אוספים של אוספי מפתח-ערך אחרים. המסמכים המובנים למחצה מאוחסנים בפורמטים כמו JSON.
- מאגר גרפיםs בנויים עם צמתים, יחסים בין הערות ומאפיינים של צמתים. במקום טבלאות של שורות ועמודות והמבנה הנוקשה של SQL, נעשה שימוש במודל גרף גמיש שיכול לשנות קנה מידה על פני מכונות רבות.
נגני NoSQL עיקריים
השחקנים הגדולים ב-NoSQL צצו בעיקר בגלל הארגונים שאימצו אותם. חלק מטכנולוגיות NoSQL הגדולות כוללות:
- דִינָמוֹ: Dynamo נוצר על ידי Amazon.com והוא מסד הנתונים הבולט ביותר של Key-Value NoSQL. אמזון הייתה זקוקה לפלטפורמה מבוזרת ניתנת להרחבה עבור עסקי המסחר האלקטרוני שלה, אז היא פיתחה את דינמו. Amazon S3 משתמש ב-Dynamo כמנגנון האחסון.
- קסנדרה:קסנדרה היה בקוד פתוח על ידי פייסבוק והוא מסד נתונים NoSQL מונחה עמודות.
- שולחן גדול: BigTable הוא מסד הנתונים הקנייני של גוגל מונחה עמודות. גוגל מתירה את השימוש ב-BigTable אך רק עבור Google App Engine.
- SimpleDB: SimpleDB הוא מסד נתונים נוסף של אמזון. בשימוש עבור Amazon EC2 ו-S3, זה חלק משירותי האינטרנט של Amazon שגובה עמלות בהתאם לשימוש.
- CouchDB:CouchDB יחד עם MongoDB הם מסדי נתונים NoSQL מוכווני מסמכים בקוד פתוח.
- Neo4J:Neo4j הוא מסד נתונים של גרפים בקוד פתוח.
שאילתות NoSQL
השאלה כיצד לבצע שאילתות במסד נתונים NoSQL היא מה שרוב המפתחים מתעניינים בו. אחרי הכל, נתונים המאוחסנים במסד נתונים ענק לא עוזרים לאף אחד אם אתה לא יכול לאחזר ולהראות אותם למשתמשי קצה או לשירותי אינטרנט. מסדי נתונים של NoSQL אינם מספקים שפת שאילתה הצהרתית ברמה גבוהה כמו SQL. במקום זאת, שאילתת מסדי נתונים אלה היא ספציפית למודל נתונים.
רבות מפלטפורמות NoSQL מאפשרות ממשקי RESTful לנתונים. ממשקי API אחרים של שאילתות הצעות. ישנם כמה כלי שאילתות שפותחו המנסים לבצע שאילתות במספר מסדי נתונים של NoSQL. כלים אלה פועלים בדרך כלל על פני קטגוריית NoSQL אחת. דוגמה אחת היא SPARQL. SPARQL הוא מפרט שאילתה הצהרתי המיועד עבור מסדי נתונים של גרפים. הנה דוגמה לשאילתת SPARQL המאחזרת את כתובת האתר של בלוגר מסוים (באדיבות IBM):
קצף PREFIX:
בחר את כתובת האתר
מ
איפה {
?תורם foaf: שם "Jon Foobar" .
?תורם foaf: בלוג ?כתובת אתר .
}
העתיד של NoSQL
ארגונים שיש להם צרכי אחסון נתונים מסיביים מסתכלים ברצינות על NoSQL. ככל הנראה, הקונספט לא מקבל כל כך אחיזה בארגונים קטנים יותר. בסקר שנערך על ידי שבוע המידע, 44% ממומחי ה-IT העסקיים לא שמעו על NoSQL. יתרה מכך, רק 1% מהנשאלים דיווחו ש-NoSQL הוא חלק מהכיוון האסטרטגי שלהם. ברור של-NoSQL יש את מקומו בעולם המחובר שלנו, אבל הוא יצטרך להמשיך ולהתפתח כדי לקבל את המשיכה ההמונית שרבים חושבים שהיא יכולה להיות.