סקירת Couchbase: מאגר חכם NoSQL

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

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

Couchbase Lite הוא מסד נתונים נייד מוטבע שעובד במצב לא מקוון ומסונכרן עם Couchbase Sync Gateway כשהוא מקוון. Sync Gateway מסנכרן עם שרת Couchbase וכן עם מספר מופעי Couchbase Lite.

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

שפת השאילתות Couchbase Server, N1QL, היא ערכת-על SQL המיועדת למסדי נתונים של מסמכי JSON, עם סיומות לניתוח. Couchbase תומך גם בגישה לנתוני ערך מפתח ובחיפוש בטקסט מלא.

חברת Couchbase, החברה שעומדת מאחורי מסד הנתונים, צמחה מהמיזוג של Membase (יצרנית מאגר ערכי מפתח מקובצים במטמון בזיכרון) ו- CouchOne (מפתחי מסד הנתונים של Apache CouchDB) בשנת 2011. החברה החדשה התחילה עם המפתח- שכבת ערך, הוסיפה את שכבת המסמך JSON בשנת 2012 והמשיכה להוסיף מסד נתונים נייד בשנת 2014, שאילתות דמויי SQL בשנת 2015, חיפוש טקסט מלא בשנת 2017 ואנליטיקה בשנת 2018.

חלופות Couchbase ומתחרים

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

חלופות אחרות אחרונות ל- Couchbase כוללות CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB ו- Amazon DynamoDB. דנתי הן באפשרויות ההתייחסות והן באופציות NoSQL בסקירות קודמות.

ארכיטקטורת שרת Couchbase

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

שרת Couchbase תוכנן סביב שלושה עקרונות בסיסיים: זיכרון וארכיטקטורה ממוקדת רשת, בידוד עומסי עבודה וגישה אסינכרונית לכל דבר.

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

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

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

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

כפי שאדון בפירוט רב יותר בהמשך, תוכל לגשת למסמכי שרת Couchbase באמצעות ארבעה מנגנונים: ערך מפתח, שאילתות מבוססות SQL, חיפוש טקסט מלא ואירועי JavaScript. אם למסמכי JSON שלך יש תתי-מסמכים או מערכים, תוכל לגשת אליהם ישירות באמצעות ביטויי נתיב מבלי שתצטרך להעביר ולנתח את כל המסמך. המודל לאירוע יכול להפעיל שינויים בנתונים ( OnUpdate) או טיימרים. בנוסף, תוכלו לגשת למסמכי Couchbase Server באמצעות סנכרון עם Couchbase Mobile.  

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

אפשרויות פריסת שרת Couchbase

באפשרותך להתקין את שרת Couchbase במקום, בענן וב- Kubernetes. מהדורת Enterprise Server Couchbase זמינה בחינם לפיתוח ובדיקה וזמינה במנוי לייצור. מהדורת הקהילה הקודמת של Couchbase Server Community חינמית לכל מטרה. מלבד כמה תכונות שהושמטו, Couchbase Server Edition מהדורה תואמת API עם Couchbase Server Enterprise Edition.

יצרתי הפעלה של נסיעת מבחן ענן ב- Google Cloud Platform, אשר (לאחר עיכוב של חמש דקות בפריסה) הקנה לי אשכול שרת Couchbase בן שלושה צמתים וצומת Sync Gateway, הכל טוב לשלוש שעות. הייתי צריך כשעה כדי לעבור על ארבע ההדרכות של Couchbase, שנתנו לי תחושה לשאילתת השרת.

מפעיל אוטונומי Couchbase

המפעיל האוטונומי של Couchbase, הנתמך רק במהדורת Enterprise, מספק שילוב מקורי של שרת Couchbase עם קוד פתוח Kubernetes ו- Red Hat OpenShift. המפעיל מרחיב את ה- API של Kubernetes על ידי יצירת הגדרת משאבים מותאמת אישית ורישום עצמו כבקר שרת Couchbase מותאם אישית לניהול אשכולות שרת Couchbase. זה מקטין את כמות המאמצים של devops שנדרשת להפעלת אשכולות Couchbase ב- Kubernetes, ומאפשר לך להפוך אוטומטית לניהול משימות שרת Couchbase נפוצות, כגון תצורה, יצירה, שינוי גודל ושחזור של אשכולות שרת Couchbase. המפעיל עובד גם עם Azure Kubernetes Service, Amazon Elastic Kubernetes Service ו- Google Kubernetes Engine.

שכפול מרכזי נתונים (XDCR)

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

XDCR בסיסי נתמך בכל מהדורות שרת ה- Couchbase. סינון XDCR, חנק ופתרון סכסוכים מבוסס חותמת זמן הם כולם תכונות מהדורת Enterprise.

כלי שאילתת Couchbase

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

N1QL

N1QL, מבוטא "ניקל", נראה מאוד כמו SQL רגיל, עם סיומות עבור JSON. מצאתי את זה הרבה יותר קל לאסוף מאשר צינור הצבירה של MongoDB, בהתחשב בכך שאני משתמש ב- SQL כבר עשרות שנים.

יש למעשה שתי גרסאות דומות של N1QL: אחת לשירות שאילתת שרת Couchbase, ואחת לשירות Analytics, שהוא מאפיין Enterprise Edition. N1QL עבור Analytics מבוסס על SQL ++.

חלק רחבות N1QL הם USE KEYS, NEST, UNNEST, ו MISSING. USE KEYSו USE HASHהם שאילתה רמזי JOINהים. NESTו UNNESTלארוז ומערכים לפרוק. MISSINGמהווה חלופה ספציפית ל- JSON NULL; IS NOT MISSINGפירושו שיש ערך ספציפי או NULLבמסמך. מילת המפתח עבור ערכים NOT MISSINGועל NOT NULLהוא KNOWN. שאילתות N1QL יכולות להשתמש בנתיבים, החלים גם על חיפושים בטקסט מלא.

חיפוש טקסט מלא

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

ערכות SDK של Couchbase

כל שירותי Couchbase העיקריים נחשפים לתכנות באמצעות SDK. ערכות SDK זמינות עבור C / C ++, .Net (C #, F # ו- Visual Basic. Net), Go, Java, Node.js, PHP, Python ו- Scala.

בנוסף ל- SDK, Couchbase מציע אינטגרציה הדוקה עם מספר מסגרות: Data Data, .NET LINQ ו- ODM של Node.js העות'מאנית של Couchbase. לדוגמה, שאילתת הדוגמה הבאה משתמשת ב- Linq2Couchbase:

{

     שרתים = רשימה חדשה {חדש אורי ("// localhost: 8091 /")}

});

var context = BucketContext חדש (ClusterHelper.GetBucket ("מדגם נסיעות"));

שאילתת var = (מתוך בהקשר. Query ()

               שם a.Country == "בריטניה"

               תבחר).

               קח (10);

query.ToList (). ForEach (Console.WriteLine);

ClusterHelper.Close ();

Couchbase Mobile

ל- Couchbase Mobile שני חלקים: Couchbase Lite, הפועל במכשיר נייד, ו- Couchbase Sync Gateway, הפועל על צומת שרת. Couchbase Lite פועל ב- iOS, Android, .Net ו- Xamarin ותומך בשפות Swift, Objective-C, Java, Kotlin ו- C ++.

לדוגמה, קוד ה- Java הבא מגדיר שאילתה להפעלה באנדרואיד:

מסד נתונים של מסד נתונים = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

  .select (SelectResult.expression (Expression.property ("שם שדה תעופה")))

  . מ (DataSource.database (database))

  .איפה(

    Expression.property ("סוג"). EqualTo (Expression.string ("שדה תעופה"))

      .and (Expression.property ("שם שדה תעופה"). כמו (Expression.string (קידומת + "%")))

);

מדדי Couchbase

אמנם לא שווה ביצוע ביצוע ביצועים בין שרת Couchbase, אך צד שלישי (Altoros) עשה זאת באמצעות YCSB JSON ומבחני ערך המפתח ובדיקת TPCx-IoT. התרשים שלהלן מיועד למדד המסמכים של JSON. כפי שאתה יכול לראות, שרת Couchbase השיג ביצועים טובים יותר מ- MongoDB וגם של DataStax. אתה יכול להפעיל מחדש את המדדים האלה בעצמך, מכיוון שאלטורוס סיפק את כל התסריטים הנדרשים.

אלטורוס

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

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

-

עלות: מהדורת הקהילה Couchbase Server: חינם. מהדורת Enterprise Couchbase Server: מנויים שנתיים מתומחרים לפי צומת וזמינים בנקודות מחיר שונות בהתאם לליבות ולזכרון ה- RAM הדרושות לצומת. צמתים לפיתוח ובדיקה הם בחינם. פריסות ענן של מהדורת Enterprise זמינות לפי שעות, עם תמחור תוכנה טיפוסי של $ 0.662 / צומת / שעה ב- AWS עבור שרת Couchbase ו- $ 1.641 / צומת / שעה עבור שער הסנכרון הנייד, עם תבנית סטנדרטית המשתמשת בארבעה צמתי שרת ושני צמתים סנכרון בתחילה , עם כיוון אוטומטי. המחירים ניתנים להשוואה בערך ב- Microsoft Azure וב- Google Cloud Platform. אתה יכול גם להביא רישיון משלך ולשלם רק עבור משאבי הענן.

פלטפורמה: שרת Couchbase: Linux, Windows Server 2012 R2 ואילך; קוברנטס, OpenShift; AWS, Azure, GCP. פיתוח ובדיקת שרת Couchbase: MacOS 10.11 ואילך, עדכון יום השנה של Windows 10 ואילך; דוקר. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 ואילך, MacOS 10.12.6 ואילך; AWS, Docker, OpenShift.