סקירה כללית על רמת ביצועים בזיכרון
השכבה בזיכרון היא הגדרה ברמת האשכול שמשתמשת בצמתים מיוחדים. לפני שקוראים את הדף הזה, חשוב להבין מהם מופעים, אשכולות וצמתים. מומלץ גם לקרוא על המגבלות.
Bigtable in-memory הוא רמת זיכרון משולבת כחלק מצומת Bigtable, שמאפשרת שכבות נתונים חלקות ומותאמות לעלויות על סמך דפוסי גישה ודרישות ביצועים, והכול דרך ממשק API יחיד. באמצעות גישה ישירה לזיכרון מרוחק (RDMA), רמת הביצועים של Bigtable בזיכרון מקצרת באופן משמעותי את זמני התגובה, מצמצמת את נקודות העומס ומבטיחה תפוקה גבוהה של נתונים שרגישים לזמן האחזור. מידע נוסף זמין במאמר בנושא הסבר על הביצועים.
מתי כדאי להשתמש בזיכרון
מומלץ להפעיל את רמת הביניים בזיכרון במקרים הבאים:
- דרישות זמן אחזור של פחות מאלפית השנייה: עומסי עבודה שדורשים זמני אחזור של קריאה של פחות מ-1ms, בדרך כלל באמצעות הצבת פתרון מטמון בניהול עצמי לפני מסד נתונים.
- קריאות נקודתיות עם תפוקה גבוהה: אפליקציות עם דרישות תפוקה גבוהה של תעבורת קריאה בדגימות משנה ספציפיות של נתונים.
- הפחתת ההשפעה של נקודות חמות: עומסי עבודה עם תפוקה גבוהה שעשויים לכלול עליות פתאומיות בתנועה או נקודות חמות במפתחות שורות מסוימים.
- אופטימיזציה של העלויות: תרחישים שבהם רוצים להפחית את מספר הצמתים של Bigtable על ידי העברת נפחי קריאה גבוהים לרמה חסכונית יותר בזיכרון.
איך פועל רכיב ה-in-memory
תמיכה בזיכרון מסופקת על ידי צמתים היברידיים לאחסון. הצמתים המיוחדים האלה מרחיבים את הפירוק של המחשוב והאחסון ב-Bigtable וכוללים שכבת זיכרון עם תפוקה שניתנת להרחבה אנכית. יכול להיות שיחלפו עד 30 דקות עד שהצמתים המיוחדים יוקצו בזיכרון. במהלך התקופה הזו, Bigtable ממשיך להציג תנועה מאחסון קבוע.
אפשר להפעיל את שכבת הנתונים בזיכרון ברמת האשכול.
השכבה בזיכרון פועלת באופן הבא:
- קבלת נתונים בשכבת הזיכרון: הזיכרון מציע התנהגות של קריאה דרך מטמון. שורה עוברת לרמת הזיכרון עם פעולות קריאה דרך פרופיל אפליקציה שמוגדר לזיכרון. פעולת כתיבה מפרופיל אפליקציה כלשהו מעדכנת את רמת הזיכרון אם נתוני השורה כבר נמצאים ברמת הזיכרון.
- מדיניות פינוי וביטול תוקף: בזיכרון נעשה שימוש בפינוי לפי LRU (השימוש האחרון הכי ישן) ברמת השורה, ובמדיניות ביטול תוקף של 15 דקות ל-TTL (זמן החיים).
- negative caching: הזיכרון שומר אם משאב חסר למשך תקופה מסוימת כדי למנוע עומס יתר בבק-אנד.
- אבטחה: בזיכרון יש תמיכה בהצפנה במנוחה ובהעברה (TLS).
- שכפול: במופע מרובה אשכולות, רמות הזיכרון של אשכולות שונים לא מסונכרנות. כל רמת זיכרון קובעת באופן עצמאי אילו נתונים לטעון לזיכרון על סמך תנועת הקריאה שהיא מקבלת, לכן יכול להיות שבאשכולות שונים יהיו מפתחות שורות שונים ברמות הזיכרון שלהם. Bigtable טוען נתונים לזיכרון משכבת ה-SSD של האשכול המקומי. פעולת כתיבה לשורה מעדכנת אותה בסופו של דבר בכל רמות הזיכרון שבהן היא נמצאת, בהתאם למודל השכפול הרגיל של Bigtable של עקביות סופית.
- התאמה אנכית של קבוצות Pod לעומס: רמת הביניים בזיכרון תומכת בהתאמה אנכית של קבוצות Pod לעומס ברמת הצומת, שפועלת לצד התאמה אוטומטית של Bigtable לעומס.
רמת הזיכרון האופטימלית לגישה לנתונים עדכניים עם ביצועים גבוהים. כדי לשמור על הביצועים האלה, רק הגרסאות העדכניות ביותר של שורה עם חותמת זמן נמצאות בשכבת הזיכרון. בקשות לגרסאות קודמות של נתונים, שנקראות גם תאים היסטוריים, מדלגות אוטומטית על רמת הזיכרון ומוגשות מאחסון קבוע.
עקביות הנתונים
ב-Bigtable, הנתונים בזיכרון עקביים עם הנתונים הקבועים ב-SSD או ברמת אחסון עם גישה לא תדירה. הארכיטקטורה ההיברידית הזו מאפשרת ל-Bigtable לספק מודל אחסון עקבי בכל רמות האחסון, כך שתוכלו לגשת לנתונים שלכם דרך אותו ממשק סמנטי, בלי קשר למיקום הפיזי שלהם ב-RAM או באחסון קבוע. כשמפעילים את Bigtable בזיכרון, נשמרת עקביות של קריאה וכתיבה ברמת האשכול.
שינוי גודל אנכי
הפעלת רמת הביניים בזיכרון מאפשרת לכל צומת להשתמש בשינוי גודל אנכי כדי לשנות את קיבולת התפוקה בזיכרון. כל צומת כולל 8 GB של RAM לרמת הביניים בזיכרון, ומתחיל עם קיבולת בסיסית של 40,000 קריאות בשנייה. כדי לנהל עליות פתאומיות בתנועה של קריאות נקודתיות, הצמתים יכולים להתרחב אוטומטית במרווחים של 40,000 קריאות לשנייה, ולהגיע למקסימום של 120,000 קריאות לשנייה לכל צומת.
תכונת ההרחבה האנכית הזו משולבת עם שינוי הגודל האוטומטי של Bigtable. אם הקיבולת המקסימלית בזיכרון מגיעה לכל הצמתים באשכול והתכונה 'התאמה אוטומטית לעומס' פעילה, Bigtable מקצה באופן אוטומטי צמתים נוספים כדי לשפר עוד יותר את התפוקה בזיכרון.
הגדלת הקיבולת האנכית בצומת חלה רק על קריאות בזיכרון לשנייה, והיא פועלת גם אם המידרוג האוטומטי ברמת האשכול מופעל וגם אם לא. חיוב על הגדלת הקיבולת (vertical scaling) מעבר ל-40,000 קריאות בסיסיות בשנייה מתבצע על ידי הכפלת העלות השעתית של הצומת. מידע נוסף זמין במאמרים בנושא תמחור ומגבלות.
מגבלות
המגבלות הבאות חלות על רמת הביניים בזיכרון:
- אחסון בזיכרון דורש אחסון SSD.
- התכונה 'בזיכרון' תומכת רק בפעולות קריאה נקודתיות ברמת השורה.
- הנתונים בזיכרון לא משמשים לסריקות נתונים או לתמיכה בשאילתות SQL.
- פרופילי אפליקציות בזיכרון תומכים רק בניתוב של אשכול יחיד.
- מגבלות בזיכרון: גודל השורה הוא עד 1 MiB לכל מפתח שורה. Bigtable קורא שורות שחורגות מהמגבלה הזו מאחסון קבוע.
- כדי להשתמש באפשרות 'בזיכרון' צריך גרסה 2.77.0 ואילך של ספריית הלקוח של Bigtable ל-Java או גרסה 26.80.0 ואילך של BOM. אין תמיכה בספריות לקוח אחרות.
- אשכולות של מפתחות הצפנה בניהול הלקוח (CMEK) לא תומכים בזיכרון.