סקירה כללית על רמת ביצועים בזיכרון

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

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

מתי כדאי להשתמש בשכבת הנתונים בזיכרון

מומלץ להפעיל את רמת הביניים בזיכרון במקרים הבאים:

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

איך פועל רכיב ה-in-memory

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

אפשר להפעיל את שכבת הנתונים בזיכרון ברמת האשכול.

השכבה בזיכרון פועלת באופן הבא:

  • קבלת נתונים ברמת הזיכרון: רמת הזיכרון מציעה התנהגות של קריאה דרך מטמון. שורות נכנסות לרמת הזיכרון עם פעולות קריאה דרך פרופיל אפליקציה שמוגדר לרמת הזיכרון. פעולת כתיבה מכל פרופיל אפליקציה מעדכנת את רמת הזיכרון אם נתוני השורה כבר נמצאים ברמת הזיכרון.
  • מדיניות בנושא הוצאה מזיכרון וביטול תוקף: השכבה בזיכרון משתמשת בהוצאה מזיכרון לפי Least Recently Used (LRU) ברמת השורה, ובמדיניות ביטול תוקף של 15 דקות Time to Live (TTL).
  • שמירה במטמון של תשובות שליליות: השכבה בזיכרון זוכרת אם משאב חסר למשך תקופה מסוימת, כדי למנוע עומס יתר על העורף.
  • אבטחה: השכבה בזיכרון תומכת בהצפנה במנוחה ובהעברה (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) לא תומכים ברמת הביניים בזיכרון.

המאמרים הבאים