בולטות NoSQL: מאגרי המסמכים הטובים ביותר

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

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

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

כאן תיארנו שבעה ממאגרי המסמכים הידועים והנפוצים ביותר. ארבעה מתוך השבעה - CouchDB, Couchbase Server, MongoDB ו- RethinkDB - הם פרויקטים של קוד פתוח ללא מעט חסמים מעשיים להתחלה; Couchbase ו- MongoDB זמינים גם במהדורות ארגוניות נתמכות ברישיונות מסחריים. שלושת האחרים - אמזון DynamoDB, גוגל Firebase ו- IBM Cloudant - הם שירותים מתארחים של ספקי ענן גדולים, כאשר שילוב הדוק עם שירותים אחרים בעננים אלה הוא תיקון גדול.

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

L W M S I A O

1. כלי צד שלישי עשויים לספק פונקציונליות זו. 2 . לכל שולחן. 3 . מהדורה ארגונית בלבד. 4 . הצג פונקציות בלבד. 5 . עסקאות רב-מסמכים זמינות גם כן, אך לא על אשכולות מרוסקים.

מפתח: = לינוקס, = Windows, = MacOS, = Solaris, = iOS, = Android, = נייד אחר,
  אמזון DynamoDB קוסמוס DB בסיס מיטה CouchDB Google Firebase IBM Cloudant MarkLogic MongoDB RethinkDB
פלטפורמות ענן בלבד ענן בלבד LWM LWMIAO ענן בלבד ענן בלבד LWMS LWMS LWM
מערכות שאילתות ממשק API של REST פרוטוקול החוט של MongoDB פרוטוקול Memcached, REST API ממשק API של REST ממשק API REST / JavaScript ממשק API של REST ממשק API של REST API מבוסס JSON, API REST חלקי שפת שאילתות ReQL, REST API
שאילתת SQL לא 1 כן באמצעות שפת N1QL לא לא לא כן לא 1 לא
הקלדה חזקה כן כן כן לא כן לא לתכניות XML כן כן
יליד מצטרף לא כן כן לא לא לא כן כן כן
מחיצת רסיסות כן כן כן כן NA כן כן כן כן 2
אשכולות NA כן כן כן NA NA כן כן כן
שכפול כן כן כן כן NA כן כן כן לכל שולחן
עקביות: מיידי לקריאה כן לסך הכל לא לקוחות מחוברים לא כן לפי כתיבה לכל מסמך
עקביות: בסופו של דבר כן כן כן כן לקוחות לא מקוונים כן כן כן מאגר נתונים שלם
מקביליות כן כן כן כן כן כן כן כן כן
פעולות בזיכרון NA NA לא לא NA לא NA כן 3 לא
פרוצדורות מאוחסנות לא JavaScript JavaScript4 JavaScript4 כללים JavaScript4 מודול XQuery JavaScript לא
עסקאות לפי אפליקציה כן מסמכים בודדים מסמכים בודדים כן מסמכים בודדים מסמכים בודדים מסמכים בודדים 5 מסמכים בודדים
גרסה נוכחית NA NA 5.0 (אוקטובר 2017) 2.1.1 (נובמבר 2017) NA NA 9.0 (מאי 2016) 3.4.10 (אוקטובר 2017) 2.3.6 (יולי 2017)
שיחרור ראשוני 2012 2017 2011 2005 2012 2010 2005 2009 2009

אמזון DynamoDB

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

תכונות DynamoDB

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

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

DynamoDB Local

לא תמצא את DynamoDB בגלגול קוד פתוח. זה זמין אך ורק כמבצע מתארח בענן אמזון.

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

Microsoft Azure Cosmos DB

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

תכונות קוסמוס DB

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

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

תכונות אחרות ספציפיות יותר למאגרי מסמכים. למשל, משתמשי MongoDB צריכים להגדיר אינדקסים באוספי מסמכים כדי לייעל את החיפושים. משתמשי קוסמוס DB העובדים עם ממשקי ה- API של MongoDB אינם צריכים להגדיר אינדקס למסמכים, מכיוון שכל מאפיין בתיעוד שהוכנס מתווסף אוטומטית.

שימוש ב- Cosmos DB ב- Microsoft Azure

אין גרסה מתארחת מקומית של Cosmos DB. זה זמין רק כשירות בענן התכלת של מיקרוסופט. עם זאת, ממשקי API לפיתוח עבור Cosmos DB זמינים עבור רוב שפות ארגוניות פופולריות - Java, Node.js, .NET ו- Python.

שרת Couchbase

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

תכונות Couchbase

תכונה אחת המייחדת את Couchbase, לא רק מתחרות NoSQL אחרת אלא מקודמתה CouchDB, היא שפת השאילתות דמוי ה- SQL הנקראת N1QL (מבוטא "ניקל"). N1QL אינו מציע את כל מגוון הפקודות שהייתם מצפים מהטמעת SQL של ​​ANSI, אך הוא מספק מספיק פונקציות שימושיות, כגון פעולות JOIN, למישהו עם ניסיון SQL כדי להשיג תוצאות מעשי.

מערכת השאילתות Couchbase מיועדת לא רק למפתחים, אלא ל- DBAs ולאנליסטים עסקיים העוסקים בדרך כלל במאגרי מידע קונבנציונליים. נראה שתכונות כמו מילת המפתח EXPLAIN הוכנסו במיוחד כדי לפנות לקהל ההוא.

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

קהילת Couchbase לעומת Enterprise

שרת Couchbase מגיע במהדורה ארגונית מלאה בתשלום, מהדורת קהילה חופשית לשימוש, ומהדורת קוד פתוח, המהווה את הבסיס לאחרים. הורדות בינאריות למהדורה הארגונית והקהילתית זמינות מאתר Couchbase, וקוד המקור זמין מאתר המפתחים של Couchbase. (אין מאגר GitHub אחד לפרויקט הקוד הפתוח Couchbase מכיוון שהוא אוסף של כמה פרויקטים.)

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

Couchbase Lite

מהדורה נוספת של Couchbase הראויה לציון עבור מפתחי אפליקציות היא Couchbase Lite, גרסה מוטמעת של Couchbase שיכולה להסתנכרן עם מקרים של המהדורה המלאה. Couchbase Lite הוא מרכיב המפתח ב- Couchbase Mobile, מחסנית יישומים לאפליקציות סלולריות הזקוקות לחנות נתונים שמסתנכרנת אוטומטית עם קצה אחורי. Couchbase Mobile זמין עבור iOS, Android, Java. .Net, MacOS ו- tvOS.

CouchDB

פרויקט CouchDB התחיל בשנת 2005 על ידי מפתח לשעבר של IBM ועבר לקרן Apache Software בשנת 2008. לעתים מניחים כי CouchDB הוא הבסיס ל- Couchbase, אך CouchDB ו- Couchbase הם פרויקטים מקבילים עם מטרות שונות.

CouchDB לעומת Couchbase

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

תכונות CouchDB

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

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

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

מדרגיות היוותה כבר זמן רב נקודה חלשה עבור CouchDB, אך לאחרונה טופלה. גרסה 2.0 עוררה טכנולוגיית אשכולות חדשה, באדיבות סיביות שנפתחו על ידי Cloudant / IBM והתמזגה בפרויקט. לבסוף, עבור מי שמכיר את MongoDB ורוצה להשתמש בתחביר של שאילתת הצהרה דומה, פרויקט מנגו, גם הוא מ- Cloudant / IBM, מספק זאת כתוסף חיצוני.

הורדת CouchDB

ניתן להוריד קבצי בינאריה של CouchDB לכל הפלטפורמות הגדולות וקוד המקור מהאתר הרשמי של CouchDB. המקור לפרויקט זמין גם ב- GitHub.

מסד נתונים בזמן אמת של Google Firebase

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

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

תכונות Google Firebase

גוגל רכשה את Firebase בשנת 2014. בשנים שחלפו מאז חיברה את Firebase כדי לנצל תכונות רבות של Google Cloud. פונקציות Google Cloud עבור Firebase, למשל, מאפשרות להפעיל פונקציות JavaScript בענן בתגובה לאירועי Firebase. Google Analytics for Firebase מאפשר לך למשוך נתוני אפליקציות לנייד ל- BigQuery לצורך ניתוח מעמיק יותר.

מכיוון שגיימינג הוא אחד מיישומי היעד של Firebase, ה- SDK המסופקים ל- Firebase כוללים את מסגרת פיתוח המשחקים הפלטפורמתית Unity. למפתחים שעובדים על פרויקטים קונבנציונליים יותר הממוקדים בארגונים או מול צרכנים יש שפע של אפשרויות אחרות: iOS ואנדרואיד מקורי, C ++, אינטרנט כללי / JavaScript וכל שפה אחרת שתומכת ב- REST (Java, Python, אתה שם את זה).

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

Firebase ב- Google Cloud וב- GitHub

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

IBM Cloudant

Cloudant היא למעשה המהדורה המתארחת של IBM של CouchDB. במקור, Cloudant הייתה חברה עצמאית, והציעה מהדורה של CouchDB בשם "BigCouch" שהתארחה בענן SoftLayer של יבמ. בשנת 2014, IBM רכשה את Cloudant על הסף כחלק מהדחיפה הכוללת של IBM לעבר ניתוחים וביג דאטה. 

מעונן לעומת CouchDB

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

חלק מהשיפורים של Cloudant ב- CouchDB מצאו את דרכם חזרה לפרויקט CouchDB הבסיסי, כולל פונקציונליות קנה המידה האופקית של CouchDB 2.0 וממשק שפת שאילתת מנגו. אבל אל תיקח את זה כהוכחה שתכונות Cloudant יטפטפו אוטומטית ל- CouchDB.

ענן על ענן יבמ

Cloudant הוא בעיקר ענן שמציע ב- IBM Cloud, שם ניתן להשתמש בו בשילוב עם מוצרי נתונים אחרים של IBM Cloud כגון dashDB, DataWorks ו- Watson Analytics.

מקומי מעונן

מהדורת מאחורי חומת האש של Cloudant, הנקראת Cloudant Local, מציעה את אותה פונקציונליות כמו ההנפקה המתארחת בענן. ענן מקומי זמין בטעמים של אובונטו ורד האט של x86 לינוקס, כמו גם מערכת z של IBM עצמה המריצה את רד האט או סוזה. מפתחים יכולים להוריד גרסה חינמית, לבדיקה ולהתפתחות בלבד בתמונת Docker.