סקירה כללית על רמת הזיכרון
הרמה בזיכרון היא הגדרה ברמת האשכול שמשתמשת בצמתים ייעודיים. לפני שאתם קוראים את הדף הזה, חשוב שתבינו את המושגים מכונות, אשכולות וצמתים. מומלץ גם להכיר את המגבלות.
שכבת הזיכרון של Bigtable היא שכבת זיכרון משולבת כחלק מצומת Bigtable, שמאפשרת חלוקה חלקה של נתונים לשכבות עם אופטימיזציה של עלויות, על סמך דפוסי גישה וצרכים של ביצועים, והכול באמצעות API יחיד. באמצעות גישה ישירה מרוחקת לזיכרון (RDMA), שכבת הזיכרון של Bigtable מקצרת משמעותית את זמני התגובה, מפחיתה את מספר הנקודות החמות ומבטיחה קצב העברת נתונים גבוה לנתונים שרגישים לזמן האחזור. מידע נוסף על הביצועים
מתי כדאי להשתמש בשכבה בזיכרון
מומלץ להפעיל את השכבה בזיכרון בתרחישים הבאים:
- דרישות לזמן אחזור של פחות מאלפית השנייה: עומסי עבודה שדורשים זמני אחזור של פחות מאלפית השנייה, שבדרך כלל מטופלים על ידי הצבת פתרון מטמון בניהול עצמי לפני מסד הנתונים.
- קריאות נקודתיות עם תפוקה גבוהה: אפליקציות עם דרישות תפוקה גבוהה של תנועת קריאה בקבוצות משנה ספציפיות של נתונים.
- הפחתת עומסים בנקודות חמות: עומסי עבודה עם תפוקה גבוהה, שיכולים לכלול עליות חדות בתנועה או נקודות חמות במפתחות שורה מסוימים.
- אופטימיזציה של עלויות: תרחישים שבהם רוצים להפחית את מספר הצמתים של Bigtable על ידי העברת נפחי קריאה גבוהים לשכבה חסכונית יותר בזיכרון.
איך פועלת השכבה בזיכרון
התמיכה בשכבת הזיכרון ניתנת על ידי צומתי אחסון היברידיים. הצמתים המיוחדים האלה מרחיבים את הפרדת המחשוב והאחסון של Bigtable, כך שהיא כוללת שכבת זיכרון עם תפוקה שניתן להתאים לעומס (scaling) באופן אנכי. יכול להיות שיעברו עד 30 דקות עד ש-Bigtable יקצה את הצמתים המיוחדים של שכבת הזיכרון. במהלך התקופה הזו, Bigtable ממשיך להעביר תנועה מאחסון מתמיד.
אפשר להפעיל את שכבת הזיכרון הפנימי ברמת האשכול.
שכבת הזיכרון פועלת באופן הבא:
- קבלת נתונים בשכבת הזיכרון: שכבת הזיכרון מציעה התנהגות של שמירה במטמון מסוג read-through. שורה נכנסת לשכבת הזיכרון עם פעולות קריאה דרך פרופיל אפליקציה שאתם מגדירים לשכבת הזיכרון. פעולת כתיבה מכל פרופיל אפליקציה מעדכנת את שכבת הזיכרון אם נתוני השורה כבר נמצאים בשכבת הזיכרון.
- מדיניות פינוי וביטול תוקף: שכבת הזיכרון הפנימי משתמשת בפינוי לפי Least Recently Used (LRU) ברמת השורה, ומחילה מדיניות ביטול תוקף לפי זמן חיים (TTL) כדי למקסם את יחס ההתאמה של שכבת הזיכרון הפנימי.
- negative caching: שכבת הזיכרון זוכרת אם משאב חסר למשך פרק זמן מסוים כדי למנוע עומס יתר בקצה העורפי.
- אבטחה: שכבת הזיכרון תומכת בהצפנה במנוחה ובזמן העברה (TLS).
- רפליקציה: במכונה עם כמה אשכולות, שכבות הזיכרון של אשכולות שונים לא מסונכרנות. כל שכבת זיכרון קובעת באופן עצמאי אילו נתונים לטעון לזיכרון על סמך תנועת הקריאה שהיא מקבלת, ולכן אשכולות שונים עשויים להכיל מפתחות שורות שונים בשכבות הזיכרון שלהם. Bigtable טוען נתונים לזיכרון משכבת ה-SSD של האשכול המקומי. פעולת כתיבה בשורה מעדכנת אותה בסופו של דבר בכל שכבות הזיכרון שבהן היא נמצאת, בהתאם למודל הרפליקציה הרגיל של Bigtable של מודל עקביות הדרגתי.
- התאמה אנכית אוטומטית לעומס: שכבת הזיכרון הפנימי תומכת בהתאמה אנכית אוטומטית לעומס ברמת הצומת, שפועלת לצד ההתאמה האוטומטית לעומס של Bigtable.
שכבת הזיכרון הפנימי מותאמת לגישה מהירה לנתונים הנוכחיים. כדי לשמור על הביצועים האלה, רק הגרסאות העדכניות ביותר של שורה עם חותמת זמן נמצאות בשכבת הזיכרון. בקשות לגרסאות קודמות של נתונים, שנקראות גם תאים היסטוריים, עוקפות באופן אוטומטי את שכבת הזיכרון ומוצגות מאחסון מתמיד.
עקביות הנתונים
Bigtable מוודא שהנתונים בשכבת הזיכרון תואמים לנתונים הקבועים ב-SSD או בשכבת האחסון לגישה לא תכופה. הארכיטקטורה ההיברידית הזו מאפשרת ל-Bigtable לספק מודל אחסון עקבי בכל שכבות האחסון, כך שתוכלו לגשת לנתונים דרך אותו ממשק סמנטי, גם אם הם נמצאים פיזית ב-RAM וגם אם הם נמצאים באחסון מתמיד. כששכבת הזיכרון של Bigtable מופעלת, נשמרת העקביות של קריאת הנתונים שנכתבו ברמת האשכול.
שינוי קנה מידה אנכי
הפעלת השכבה בזיכרון מאפשרת לכל צומת להשתמש בשינוי קנה מידה אנכי כדי לשנות את קיבולת הקיבולת של השכבה בזיכרון. כשהשכבה בזיכרון מופעלת, כל צומת מתחיל עם קיבולת בסיסית של 40,000 קריאות לשנייה. כדי לנהל עליות חדות בתנועת קריאת הנקודות, הצמתים יכולים לבצע התאמה אוטומטית לעומס במרווחים של 40,000 קריאות לשנייה, עד למקסימום של 120,000 קריאות לשנייה לכל צומת.
התכונה הזו של התאמה אנכית משתלבת עם ההתאמה האוטומטית של Bigtable. אם הקיבולת המקסימלית של שכבת הזיכרון הפנימי מושגת בכל הצמתים באשכול וההתאמה האוטומטית לעומס פעילה, Bigtable מקצה באופן אוטומטי צמתים נוספים כדי להגדיל עוד יותר את התפוקה של שכבת הזיכרון הפנימי.
התאמה אנכית של קנה המידה בצומת חלה רק על קריאות לשנייה ברמת הזיכרון, והיא פועלת גם אם המידרוג האוטומטי ברמת האשכול מופעל וגם אם לא. הגדלת קנה המידה האנכי מעבר לבסיס של 40,000 קריאות לשנייה מחויבת באמצעות החלת מכפיל על העלות השעתית של הצומת. למידע נוסף, ראו תמחור ומגבלות.
מגבלות
המגבלות הבאות חלות על השכבה בזיכרון:
- הרמה בזיכרון דורשת אחסון SSD.
- שכבת הזיכרון תומכת רק בפעולות קריאה של נקודה אחת ברמת השורה.
- הרמה בזיכרון לא משרתת סריקות נתונים ולא תומכת בשאילתות SQL.
- פרופילי אפליקציות בשכבת הזיכרון תומכים רק בניתוב לאשכול יחיד.
- ברמת הזיכרון, גודל השורה מוגבל ל-1 MiB לכל מפתח שורה. Bigtable קורא שורות שחורגות מהמגבלה הזו מאחסון מתמיד.
כדי להשתמש בשכבה בזיכרון, צריך להשתמש בגרסאות הבאות של ספריות הלקוח של Bigtable:
- Java בגרסה 2.77.0 ואילך
- BOM מגרסה 26.80.0 ואילך
- Go בגרסה 1.52.0 ואילך
אין תמיכה בספריות לקוח אחרות.
באשכולות שבהם מופעלים מפתחות הצפנה בניהול הלקוח (CMEK) אין תמיכה ברמה בזיכרון.
הרמה בזיכרון מוגבלת ל-10 צמתים לכל היותר בכל אשכול.