לאחרונה הוכרז כי Yandex פרסמה את קוד המקור עבור מערכת ניהול הנתונים שלה, "YDB" , אשר מיישם תמיכה בניב SQL ובטרנזקציות ACID.
מערכת ניהול הנתונים (DBMS) נבנתה מאפס ופותחה בתחילה במטרה להבטיח עמידות לתקלות , שחזור אוטומטי מתקלות וגמישות. ראוי לציין כי Yandex השיקה אשכולות YDB פעילים, הכוללים יותר מ-10 צמתים, המאחסנים מאות פטה-בייט של נתונים ומטפלים במיליוני עסקאות מבוזרות בשנייה.
חידושים עיקריים של YDB
אחת התכונות המרכזיות של YDB היא השימוש במודל נתונים רלציוני עם טבלאות. YQL ( YDB Query Language) משמשת לשאילתה והגדרת סכמת הנתונים; זהו ניב של SQL המותאם לעבודה עם מסדי נתונים גדולים ומבוזרים . בעת יצירת סכמת אחסון, נתמכת קיבוץ דמוי עץ של טבלאות, בדומה לספריות במערכת קבצים. מסופק API לעבודה עם נתונים בפורמט JSON.
כמו כן ראוי לציין את יכולתו ליצור תצורות עמידות בפני תקלות שממשיכות לתפקד כאשר דיסקים, צמתים, ארונות ואפילו מרכזי נתונים בודדים כושלים. YDB תומך בפריסה ובשכפול סינכרוניים על פני שלושה אזורי זמינות תוך שמירה על תקינות אשכול במקרה של כשל אזור.
תאימות לגישה לנתונים באמצעות שאילתות סריקה, שנועדו לבצע שאילתות אנליטיות אד-הוק על מסד הנתונים, מבוצעות במצב קריאה בלבד ומחזירות זרימת grpc.
יתר על כן, הוא בולט גם באחסון נתונים ישירות על גבי התקני בלוק באמצעות רכיב PDisk המקורי ושכבת VDisk. בנוסף ל-VDisk, DSProxy פועל, אשר מנתח את זמינות הדיסק והביצועים כדי לשלול אותם אם מתגלות בעיות.
מאפיינים בולטים נוספים כוללים:
- ארכיטקטורה גמישה המאפשרת לבנות שירותים שונים על גבי YDB, עד למכשירי בלוק וירטואלי ותורים מתמשכים. התאמה לסוגים שונים של עומס עבודה: OLTP ו-OLAP (שאילתות אנליטיות).
- תמיכה בתצורות מרובות משתמשים (מרובות דיירים) וללא שרתים.
- יכולת אימות לקוחות. משתמשים יכולים ליצור אשכולות ומסדי נתונים וירטואליים משלהם על תשתית משותפת משותפת, תוך התחשבות בצריכת משאבים במונחים של מספר בקשות וגודל נתונים, או על ידי השכרה/שימור משאבי מחשוב ושטח אחסון מסוימים.
- אפשרות להתאים את אורך החיים השימושיים של הרשומות למחיקה אוטומטית של נתונים מיושנים.
- האינטראקציה עם ה-DBMS והגשת בקשות נעשית באמצעות ממשק שורת הפקודה, ממשק האינטרנט המשולב, או YDB SDK, המספק ספריות עבור C++, C# (.NET), Go, Java, Node.js, PHP ו-Python.
- התאושש אוטומטית מתקלות עם עיכוב מינימלי ליישומים ושמור אוטומטית על יתירות שצוינה בעת אחסון נתונים.
- יצירה אוטומטית של אינדקסים על המפתח הראשי ויכולת להגדיר אינדקסים משניים לשיפור היעילות של גישה לעמודות שרירותיות.
- מדרגיות אופקית. ככל שהעומס והגודל של הנתונים המאוחסנים גדלים, ניתן להרחיב את האשכול פשוט על ידי חיבור צמתים חדשים. שכבות מחשוב ואחסון נפרדות, מה שמאפשר לך לשנות את קנה המידה של המחשוב והאחסון בנפרד. ה-DBMS עצמו עוקב אחר חלוקה שווה של הנתונים והעומס, תוך התחשבות במשאבי החומרה הזמינים. ניתן ליישם תצורות מבוזרות גיאוגרפית המכסות מספר מרכזי נתונים באזורים שונים בעולם.
- תמיכה במודל עקביות חזק ועסקאות ACID בעת עיבוד שאילתות המשתרעות על מספר צמתים וטבלאות. כדי לשפר את הביצועים, אתה יכול להשבית באופן סלקטיבי את בדיקת העקביות.
- שכפול נתונים אוטומטי, חלוקה אוטומטית למחיצות (חלוקה, פיצול) כאשר הגודל או העומס גדלים, ואיזון עומס ונתונים אוטומטי בין צמתים.
לבסוף, ראוי לציין כי YDB משמש בפרויקטים של Yandex, הקוד כתוב ב-C/C++ ומופץ תחת רישיון Apache 2.0. ניתן למצוא את קוד המקור, כמו גם פרטים נוספים עליו, בקישור הבא.