סקירה כללית של Bigtable

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

הגישה ל-Bigtable מתבצעת דרך כמה ספריות לקוח, כולל תוסף נתמך לספריית Apache HBase ל-Java. כתוצאה מכך, הוא משתלב עם המערכת האקולוגית הקיימת של Apache, שכוללת תוכנות Big Data בקוד פתוח.

לשרתי הקצה העורפי המתקדמים של Bigtable יש כמה יתרונות מרכזיים:

  • מדרגיות מדהימה. הגודל של Bigtable משתנה באופן יחסי למספר המכונות באשכול. התקנה של HBase בניהול עצמי כוללת צוואר בקבוק בתכנון שמגביל את הביצועים אחרי שמגיעים לסף מסוים. ב-Bigtable אין צוואר בקבוק כזה, ולכן אפשר להגדיל את קנה המידה של האשכול כדי לטפל ביותר פעולות קריאה וכתיבה.
  • ניהול פשוט. מערכת Bigtable מטפלת בשדרוגים ובהפעלות מחדש באופן שקוף, ושומרת באופן אוטומטי על עמידות גבוהה של הנתונים. כדי לשכפל את הנתונים, מוסיפים אשכול שני למופע, והשכפול מתחיל באופן אוטומטי. לא צריך יותר לנהל רפליקות או אזורים. רק מעצבים את סכימות הטבלאות, ו-Bigtable מטפל בכל השאר.
  • שינוי גודל האשכול ללא השבתה. אתם יכולים להגדיל את הגודל של אשכול Bigtable למשך כמה שעות כדי לטפל בעומס גדול, ואז להקטין שוב את הגודל של האשכול – והכול בלי השבתה. אחרי שמשנים את הגודל של אשכול, בדרך כלל לוקח כמה דקות עד שמערכת Bigtable מאזנת את הביצועים בכל הצמתים באשכול.
  • אחסון בשכבות (גרסת Preview). אפשר לאחסן נתונים שניגשים אליהם לעיתים רחוקות ברמת אחסון נפרדת וזולה יותר. אחסון בשכבות מאפשר לכם לבחור את שכבת האחסון שהכי מתאימה לצרכים שלכם לגישה לנתוני Bigtable.
  • התאמה אוטומטית לעומס (autoscaling). אתם יכולים להגדיר את Bigtable כך שיעקוב באופן רציף אחרי קיבולת המעבד של האשכול, וישנה אוטומטית את מספר הצמתים באשכול כשצריך.
  • תקופת ניסיון בחינם. אתם יכולים להתנסות בתכונות וביכולות של Bigtable ללא עלות למשך 10 ימים, עם אפשרות להאריך את תקופת הניסיון ל-90 ימים. ‫Bigtable מספק מופע ניסיון חינמי של Bigtable עם נפח אחסון של עד 500GB ב-SSD ואשכול עם צומת אחת, שמאפשר לכם לבדוק את ביצועי האפליקציה על ידי הפעלת פעולות קריאה וכתיבה בנפח גבוה בטבלאות Bigtable, כדי לראות איך Bigtable מטפל בפעולות עם ביצועים שמגובים על ידי SSD.
  • רמה בזיכרון (גרסת Preview). תוכלו להשיג זמן אחזור של פחות מאלפית השנייה לקריאה וקצב העברת נתונים גבוה לנתונים הקריטיים והרגישים לזמן. שכבת הזיכרון מרחיבה את האחסון הקיים ב-Bigtable, שהוא אחסון מתמשך בכונני SSD, ואת האחסון הרב-שכבתי המשתלם, ומוסיפה להם אחסון בזיכרון (RAM) כדי לספק שכבות נתונים משולבות בשירות מאוחד.

מהדורות Bigtable

מהדורות Bigtable הוא מודל תמחור שמספק יכולות שונות בנקודות מחיר שונות. אתם יכולים לבחור בין מהדורת Enterprise הרגילה לבין מהדורת Enterprise Plus Premium. מידע נוסף זמין במאמר סקירה כללית על מהדורות.

למה כדאי להשתמש בו

‫Bigtable הוא פתרון אידיאלי לאפליקציות שזקוקות לתפוקה גבוהה ולסקיילביליות של נתונים מסוג מפתח-ערך, כאשר כל ערך בדרך כלל לא גדול מ-10MB. ‫Bigtable מצטיין גם כמנוע אחסון לפעולות MapReduce באצווה, לעיבוד זרמי נתונים (stream processing) ולניתוח נתונים, וליישומים של למידת מכונה.

אפשר להשתמש ב-Bigtable כדי לאחסן את כל סוגי הנתונים הבאים ולהריץ עליהם שאילתות:

  • נתונים של סדרות זמן,כמו שימוש במעבד (CPU) ושימוש בזיכרון לאורך זמן בכמה שרתים.
  • נתונים שיווקיים,כמו היסטוריית רכישות והעדפות לקוחות.
  • נתונים פיננסיים, כמו היסטוריית עסקאות, מחירי מניות ושערי חליפין.
  • נתונים של האינטרנט של הדברים (IoT), כמו דוחות שימוש ממדי אנרגיה וממכשירי חשמל ביתיים.
  • נתונים של גרפים, כמו מידע על הקשרים בין המשתמשים.

מודל האחסון של Bigtable

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

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

תרשים של מודל האחסון ב-Bigtable

כמה דברים שכדאי לשים לב אליהם באיור הזה:

  • יכול להיות שלא יהיה שימוש בעמודות בשורה מסוימת.
  • לכל תא בשורה ובעמודה נתונות יש חותמת זמן ייחודית (t).

ארכיטקטורה של Bigtable

התרשים הבא מציג גרסה פשוטה של ארכיטקטורת המשאבים הכוללת של Bigtable:

הארכיטקטורה הכוללת של Bigtable.

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

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

טבלת Bigtable מחולקת לחלקים של שורות סמוכות, שנקראים tablets, כדי לאזן את עומס העבודה של השאילתות. (טאבלטים דומים לאזורי HBase). הטבלאות מאוחסנות ב-Colossus, מערכת קבצים שפותחה על ידי Google, בפורמט SSTable. קובץ SSTable מספק מיפוי קבוע, מסודר ובלתי ניתן לשינוי ממפתחות לערכים, כאשר גם המפתחות וגם הערכים הם מחרוזות שרירותיות של בייטים. כל טאבלט משויך לצומת Bigtable ספציפי. בנוסף לקובצי ה-SSTable, כל פעולות הכתיבה מאוחסנות ביומן המשותף של Colossus ברגע שהן מאושרות על ידי Bigtable, וכך משפרות את העמידות.

חשוב לדעת שהנתונים אף פעם לא מאוחסנים בצמתי Bigtable עצמם. לכל צומת יש מצביעים לקבוצה של טבלאות שמאוחסנות ב-Colossus. כתוצאה מכך:

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

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

איזון עומסים

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

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

במקביל, כדאי לקבץ שורות קשורות כך שהן יהיו אחת ליד השנייה, כדי שיהיה יעיל יותר לקרוא כמה שורות בו-זמנית. לדוגמה, אם אתם מאחסנים סוגים שונים של נתוני מזג אוויר לאורך זמן, מפתח השורה יכול להיות המיקום שבו נאספו הנתונים, ואחריו חותמת זמן (לדוגמה, WashingtonDC#201803061617). סוג כזה של מפתח שורה יקבץ את כל הנתונים ממיקום אחד לטווח רציף של שורות. במיקומים אחרים, השורה תתחיל במזהה אחר. במקומות רבים שבהם נאספים נתונים באותו קצב, פעולות הכתיבה עדיין יתחלקו באופן שווה בין הטאבלטים.

פרטים נוספים על בחירת מפתח שורה מתאים לנתונים מופיעים במאמר בחירת מפתח שורה.

Compute

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

למשימות קריאה עם תפוקה גבוהה, אפשר להשתמש ב-Data Boost ל-Bigtable לצורך חישוב. התכונה Data Boost מאפשרת לשלוח משימות קריאה ושאלות גדולות באמצעות מחשוב ללא שרתים, בזמן שאפליקציית הליבה ממשיכה להשתמש בצמתי אשכול למחשוב. מהדורת Enterprise Plus מרחיבה את היכולות של המשימות האלה וכוללת תמיכה ב-SQL וגישה לנתונים ב-HDD ובאחסון מדורג. מידע נוסף זמין במאמר סקירה כללית על Bigtable Data Boost.

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

סוגי נתונים נתמכים

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

שימוש בזיכרון ובדיסק

בקטעים הבאים מתואר איך כמה רכיבים של Bigtable משפיעים על השימוש בזיכרון ובדיסק של המופע.

עמודות שלא בשימוש

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

מגדירי עמודות

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

מידע נוסף על מסנני עמודות זמין במאמר בנושא עמודות.

דחיסות

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

דחיסה מבצעת מחיקות שזוהו על ידי תהליך איסוף האשפה. למידע נוסף, ראו איסוף אשפה</0xEE>�. למידע נוסף על דחיסות באחסון מדורג, ראו כיצד אחסון מדורג פועל</0xEE>��. 

שינויים ומחיקות

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

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

דחיסת נתונים

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

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

עמידות הנתונים

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

העמידות משתפרת עוד יותר כשמשתמשים בשכפול. ‫Bigtable שומר עותק נפרד של הנתונים במיקום שבוחרים לכל אשכול של מופע משוכפל.

מודל העקביות

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

אבטחה

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

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

הצפנה

כברירת מחדל, כל הנתונים שמאוחסנים ב- Google Cloud, כולל הנתונים בטבלאות Bigtable, מוצפנים במצב מנוחה באמצעות אותן מערכות מוקשחות לניהול מפתחות שבהן אנחנו משתמשים לנתונים המוצפנים שלנו.

אם אתם רוצים יותר שליטה במפתחות שמשמשים להצפנת נתונים במנוחה ב-Bigtable, אתם יכולים להשתמש במפתחות הצפנה בניהול הלקוח (CMEK).

גיבויים

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

סימון נתונים שהשתנו (CDC)

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

ניתוב בקשות באמצעות פרופילי אפליקציות

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

  • פרופילים רגילים של אפליקציות: משתמשים בצמתים של אשכולות שהוקצו כדי לטפל בבקשות. הם תומכים במדיניות הניתוב הבאה:

    • ניתוב לאשכול יחיד: כל הבקשות נשלחות לאשכול יחיד.

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

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

  • פרופילים של אפליקציות Data Boost: שימוש במחשוב בלי שרת במקום בצמתים של האשכול כדי לבודד משימות קריאה עם תפוקה גבוהה מתעבורת הנתונים של אפליקציית הליבה. הפרופילים האלה מוגבלים למדיניות ניתוב של אשכול יחיד.

אפשרויות אחרות לאחסון ולמסדי נתונים

‫Bigtable הוא לא מסד נתונים רלציוני מסורתי. למרות שהוא תומך בשאילתות SQL, יכול להיות שתרחישים מסוימים יתאימו יותר לאפשרות אחרת של מסד נתונים.

  • אם אתם צריכים לאחסן אובייקטים מובְנים מאוד במסד נתונים של מסמכים, עם תמיכה בטרנזקציות ACID ובשאילתות דומות ל-SQL, כדאי לשקול שימוש ב-Firestore.
  • כדי לסנכרן נתונים בין משתמשים בזמן אמת, כדאי להשתמש ב-Firebase Realtime Database.
  • אם אתם צריכים שאילתות אינטראקטיביות במערכת עיבוד אנליטי אונליין (OLAP), כדאי לשקול שימוש ב-BigQuery.

מידע נוסף על אפשרויות אחרות של מסדי נתונים מופיע בסקירה הכללית של שירותי מסדי נתונים. ב- Google Cloud יש גם אפשרויות אחסון שונות.

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