יצירה וניהול של טבלאות

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

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

לפני שמתחילים

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

  1. מתקינים את ה-CLI של gcloud.

  2. אופציונלי: אם אתם מתכננים להשתמש ב-CLI של cbt, פועלים לפי ההוראות במאמר התקנת ה-CLI של cbt , כולל השלב של יצירת קובץ .cbtrc.

    ההוראות ל-CLI של cbt בדף הזה מניחות שהגדרתם את מזהה הפרויקט ואת מזהה המופע בקובץ .cbtrc. אפשר גם להשתמש בדגלים -project ו--instance כדי להגדיר את הערכים האלה בכל פעם שמריצים פקודה ב-CLI של cbt.

צור טבלה

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

המסוף

כדי ליצור טבלה חדשה במופע:

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על Create table.

  5. מזינים מזהה לטבלה.

  6. אופציונלי: מוסיפים משפחות עמודות.

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

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

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

    2. בשדה Retention time (משך השמירה), מזינים מספר מ-1 עד 7 כדי לציין את מספר הימים שבהם הנתונים של סנכרון שינויים בזרמי נתונים יישמרו.

  8. אופציונלי: אם לא רוצים ש-Bigtable ייצור גיבוי יומי של הטבלה, מבטלים את הסימון בתיבה Enable automated backup (הפעלת גיבוי אוטומטי). מידע נוסף מופיע במאמר בנושא שימוש בגיבוי אוטומטי.

  9. אופציונלי: מפעילים גישה לא תדירה לטבלה כחלק מאחסון מדורג (גרסת Preview):

    1. בוחרים באפשרות הפעלת אחסון מדורג.

    2. בשדה סף הגיל, מזינים את מספר הימים שאחריהם Bigtable מעביר נתונים מאחסון SSD לאחסון עם גישה לא תדירה. המספר חייב להיות 30 או יותר.

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

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

    1. ברשימה Encoding (קידוד), בוחרים סוג קידוד לסכימת מפתח השורה.

    2. אם בחרתם באפשרות DelimitedBytes, בשדה Delimiter, מזינים תו מפריד שמפריד בין הפלחים במפתחות השורות הקיימים. ערך ברירת המחדל הוא סמל הגיבוב (#).

    3. בשדה Segment, מזינים שם לפלח, כמו device_type.

    4. ברשימה Type (סוג), בוחרים את סוג הנתונים של פלח מפתח השורה.

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

    6. אופציונלי: אם לפלח של מפתח השורה יש יותר מחלק אחד, לוחצים על הוספת פלח של מפתח השורה כדי להוסיף עוד שדות.

  12. לוחצים על יצירה.

gcloud

כדי ליצור טבלה, מריצים את הפקודה הבאה. רשימת האפשרויות המלאה זמינה במאמר בנושא gcloud bigtable instances tables create.

gcloud bigtable instances tables create TABLE_ID \
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: מזהה ייחודי של הטבלה החדשה
  • ‫INSTANCE_ID: המזהה של המכונה
  • ‫PROJECT_ID: הפרויקט שיכיל את הטבלה החדשה
  • ‫COLUMN-FAMILIES: רשימה מופרדת בפסיקים של שמות של משפחות עמודות. אפשר להוסיף עוד משפחות עמודות בהמשך.

אופציונלי:

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

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

    --change-stream-retention-period=RETENTION_PERIOD
    

    מחליפים את הערך RETENTION_PERIOD באורך הזמן שבו Bigtable צריך לשמור את נתוני סנכרון שינויים בזרמי נתונים של הטבלה. משך הזמן חייב להיות בין יום אחד לשבעה ימים. היחידות הקבילות הן ימים (d), שעות (h), דקות (m) ושניות (s). דוגמאות: 48h או 6d

  • כדי לאפשר ל-Bigtable ליצור גיבוי יומי של הטבלה ולשמור כל גיבוי למשך תקופת השמירה שמוגדרת כברירת מחדל של שבעה ימים, משתמשים בדגל --enable-automated-backup כשיוצרים את הטבלה.

    gcloud bigtable instances tables create TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --column-families=COLUMN-FAMILIES \
        --enable-automated-backup
    

    כדי להגדיר תקופת שמירה שונה, משתמשים בדגל --automated-backup-retention-period במקום בדגל --enable-automated-backup ומזינים ערך של עד 90 יום. הערך חייב להיות מספר עם יחידת זמן של m, h או d (דקות, שעות או ימים), למשל 15d ל-15 ימים.

    מהדורת Enterprise Plus: כברירת מחדל, גיבוי יומי נוצר בכל האשכולות במופע של הטבלה. כדי להגדיר מיקומי אשכולות שבהם Bigtable צריך ליצור גיבוי יומי של הטבלה, משתמשים בדגל --automated-backup-locations במקום בדגל --enable-automated-backup. צריך לציין רשימה מופרדת בפסיקים של מיקומי אשכולות שבהם צריך להפעיל את הגיבוי האוטומטי. דוגמה: us-central1-a,us-east1-b,europe-west1-c.

  • כדי להפעיל גישה לא תדירה כחלק מאחסון מדורג (גרסת Preview), משתמשים בדגל
    --tiered-storage-infrequent-access-older-than ומחליפים את AGE_THRESHOLD בערך של 30 ימים לפחות. יחידות הזמן הקבילות הן ימים (d), שעות (h), דקות (m) ושניות (s). דוגמה: 32d או 32d12h.

    gcloud beta bigtable instances tables create TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD
    

cbt

משתמשים בפקודה הבאה ומחליפים את TABLE_NAME בשם הטבלה: אי אפשר להשתמש ב-CLI‏ cbt כדי ליצור טבלה עם הפעלה של סנכרון שינויים בזרמי נתונים.

cbt createtable TABLE_ID

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

cbt createtable TABLE_ID families=FAMILY_NAME:never:TYPE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: מזהה ייחודי של הטבלה החדשה
  • ‫FAMILY_NAME: : רשימה מופרדת בפסיקים של שמות של משפחות עמודות. אפשר להוסיף עוד משפחות עמודות בהמשך.
  • ‫TYPE: סוג הצבירה. הערך חייב להיות intsum, intmin, intmax או inthll.

אפשרויות נוספות מפורטות במאמר יצירת טבלה בחומר העזר בנושא cbt CLI.

אם מחקתם טבלה בטעות, אל תנסו ליצור את הטבלה שנמחקה באופן ידני. משתמשים ב-CLI של gcloud bigtable instances tables undelete כדי לשחזר את הטבלה.

אופציונלי: פיצול הטבלה לפי מפתח שורה

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

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

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

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

המסוף

אי אפשר לפצל מראש את השורות כשיוצרים טבלה באמצעותGoogle Cloud המסוף.

gcloud

כדי לפצל טבלה לפי מפתח שורה, מריצים את הפקודה הבאה. רשימת האפשרויות המלאה זמינה במאמר בנושא gcloud bigtable instances tables create.

gcloud bigtable instances tables create TABLE_ID\
    --instance=INSTANCE_ID \
    --project=PROJECT_ID \
    --column-families=COLUMN-FAMILIES \
    --splits=SPLITS

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: מזהה ייחודי של הטבלה החדשה
  • ‫INSTANCE_ID: המזהה של המכונה
  • ‫PROJECT_ID: הפרויקט שיכיל את הטבלה החדשה
  • ‫COLUMN-FAMILIES: רשימה מופרדת בפסיקים של שמות של משפחות עמודות. אפשר להוסיף עוד משפחות עמודות בהמשך.
  • ‫SPLITS: מפתחות השורות שבהן הטבלה אמורה להתפצל בהתחלה, לדוגמה 10,20.

cbt

כדי לפצל מראש טבלה על סמך מפתח השורה, משתמשים בתחביר הבא כדי ליצור את הטבלה. מחליפים את [TABLE_NAME] בשם הטבלה ואת [SPLITS] ברשימה מופרדת בפסיקים של קידומות של מפתחות שורות שבהן רוצים להשתמש לפיצול מראש.

```none
cbt createtable [TABLE_NAME] splits=[SPLITS]
```

לדוגמה, כדי לפצל מראש את הטבלה my-table לפי מפתחות שורה שמתחילים ב-10 וב-20:

```none
cbt createtable my-table splits=10,20
```

שינוי של משפחות עמודות בטבלה

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

הוספת משפחות עמודות

המסוף

הוספת משפחות עמודות לטבלה חדשה

  1. בחלונית Create table (יצירת טבלה), לוחצים על Add a column family (הוספת קבוצת עמודות) לכל קבוצת עמודות שרוצים להוסיף.

  2. בשדה שם קבוצת העמודות, מזינים מזהה ייחודי לקבוצת העמודות.

  3. בוחרים את סוג קבוצת העמודות:

    • סטנדרטי: יוצר משפחת עמודות סטנדרטית המנוהלת על ידי מדיניות איסוף אשפה.
    • ‫Aggregate: יוצרת משפחת עמודות שמצברת נתונים באופן אוטומטי בזמן הכתיבה. אתם יכולים להגדיר מדיניות ספציפית לאיסוף נתונים לא רלוונטיים עבור הצבירה כדי לנהל את מדיניות שמירת הנתונים, כמו קטגוריות זמן.
  4. אם בחרתם באפשרות Aggregate, בשדה Aggregator בוחרים באחת מהאפשרויות הבאות:

    • Sum: מחשבת את סכום כל ערכי התאים.
    • Min: צובר את הערך המינימלי בתא.
    • מקסימום: צובר את הערך המקסימלי בתא.
    • ‫HyperLogLog: צובר את הקרדינליות המשוערת של ערכי התאים.
  5. הגדרת מדיניות איסוף האשפה עבור משפחת העמודות.

  6. לוחצים על סיום.

הוספת משפחות עמודות לטבלה קיימת

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על עריכה בטבלה שרוצים לשנות.

  5. לכל קבוצת עמודות שרוצים להוסיף, מבצעים את הפעולות הבאות:

    1. לוחצים על הוספת משפחת עמודות.
    2. בשדה שם קבוצת העמודות, מזינים מזהה ייחודי של קבוצת העמודות.
    3. בוחרים את סוג קבוצת העמודות:

      • סטנדרטי: יוצר משפחת עמודות סטנדרטית המנוהלת על ידי מדיניות איסוף אשפה.
      • ‫Aggregate: יוצרת משפחת עמודות שמצברת נתונים באופן אוטומטי בזמן הכתיבה. אתם יכולים להגדיר מדיניות ספציפית לאיסוף נתונים לא רלוונטיים עבור הצבירה כדי לנהל את מדיניות שמירת הנתונים, כמו קטגוריות זמן.
    4. אם בחרתם באפשרות Aggregate, בשדה Aggregator, בוחרים באחת מהאפשרויות הבאות:

      • Sum: מחשבת את סכום כל ערכי התאים.
      • Min: צובר את הערך המינימלי בתא.
      • מקסימום: צובר את הערך המקסימלי בתא.
      • ‫HyperLogLog: צובר את הקרדינליות המשוערת של ערכי התאים.
    5. הגדרת מדיניות איסוף האשפה עבור משפחת העמודות.

    6. לוחצים על סיום.

  6. לוחצים על Save.

gcloud

אי אפשר להשתמש ב-CLI של gcloud כדי להוסיף משפחות עמודות לטבלה.

cbt

כדי להוסיף קבוצת עמודות לטבלה, משתמשים בפקודה הבאה:

cbt createfamily TABLE_ID FAMILY_NAME

לדוגמה, כדי להוסיף את קבוצות העמודות cf1 ו-cf2 לטבלה my-table:

cbt createfamily my-table cf1
cbt createfamily my-table cf2

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

cbt createfamily TABLE_ID FAMILY_NAME:never:TYPE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: מזהה הטבלה
  • ‫FAMILY_NAME: : רשימה מופרדת בפסיקים של שמות של משפחות עמודות. אפשר להוסיף עוד משפחות עמודות בהמשך.
  • ‫TYPE: סוג הצבירה. הערך חייב להיות intsum, intmin, intmax או inthll.

מחיקת משפחות עמודות

אפשר למחוק משפחות עמודות בטבלה שלא מופעלת בה הגנה מפני מחיקה.

המסוף

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על עריכה בטבלה שרוצים לשנות.

  5. לכל קבוצת עמודות שרוצים למחוק, מבצעים את הפעולות הבאות:

    1. מעבירים את העכבר מעל השורה של קבוצת העמודות שרוצים למחוק.
    2. לחץ על .
  6. לוחצים על Save.

  7. כדי לאשר שהבנתם שמחיקה של משפחת עמודות היא פעולה בלתי הפיכה וכל הנתונים במשפחת העמודות יימחקו, מקלידים 'מחיקת משפחות עמודות' בשדה הטקסט.

  8. לוחצים על אישור.

gcloud

אי אפשר להשתמש ב-CLI של gcloud כדי למחוק משפחות עמודות מטבלה.

cbt

כדי למחוק קבוצת עמודות מטבלה, משתמשים בפקודה הבאה, ומחליפים את [TABLE_NAME] בשם הטבלה ואת [FAMILY_NAME] בשם קבוצת העמודות:

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

לדוגמה, כדי למחוק את קבוצת העמודות cf2 מהטבלה my-table:

cbt deletefamily my-table cf2

צפייה ברשימת הטבלאות

המסוף

כדי לראות רשימה של טבלאות במופע:

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

gcloud

כדי לראות רשימה של טבלאות, מריצים את הפקודה gcloud bigtable instances tables list.

gcloud bigtable instances tables list --instances=INSTANCE_IDS

מחליפים את מה שכתוב בשדות הבאים:

  • ‫INSTANCE_IDS: רשימה מופרדת בפסיקים של מזהי מופעים.

cbt

כדי להציג רשימת טבלאות במופע, מריצים את הפקודה הבאה:

    cbt ls INSTANCE_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫INSTANCE_ID: המזהה הקבוע של המופע.

C++‎

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

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

namespace cbt = ::google::cloud::bigtable;
namespace cbta = ::google::cloud::bigtable_admin;
using ::google::cloud::StreamRange;
[](cbta::BigtableTableAdminClient admin, std::string const& project_id,
   std::string const& instance_id) {
  std::string instance_name = cbt::InstanceName(project_id, instance_id);

  google::bigtable::admin::v2::ListTablesRequest r;
  r.set_parent(instance_name);
  r.set_view(google::bigtable::admin::v2::Table::NAME_ONLY);

  StreamRange<google::bigtable::admin::v2::Table> tables =
      admin.ListTables(std::move(r));
  for (auto& table : tables) {
    if (!table) throw std::move(table).status();
    std::cout << table->name() << "\n";
  }
}

C#‎

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

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

// Lists tables in intance.
// Initialize request argument(s).
ListTablesRequest request = new ListTablesRequest
{
    ParentAsInstanceName = s_instanceName
};
try
{
    // Make the request.
    PagedEnumerable<ListTablesResponse, Table> response = bigtableTableAdminClient.ListTables(request);

}
catch (Exception ex)
{
    Console.WriteLine($"Error listing tables {ex.Message}");
}

Java

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

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

// Lists tables in the current instance.
try {
  String parent = "projects/" + projectId + "/instances/" + instanceId;
  ListTablesRequest request = ListTablesRequest.newBuilder().setParent(parent).build();
  for (Table table : adminClient.listTables(request).iterateAll()) {
    System.out.println(table.getName());
  }
} catch (NotFoundException e) {
  System.err.println("Failed to list tables from a non-existent instance: " + e.getMessage());
}

Node.js

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

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

// List tables in current project
const [tables] = await adminClient.listTables({parent: instance.name});
tables.forEach(table => {
  console.log(table.name);
});

PHP

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

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

use Google\Cloud\Bigtable\Admin\V2\Client\BigtableInstanceAdminClient;
use Google\Cloud\Bigtable\Admin\V2\Client\BigtableTableAdminClient;
use Google\Cloud\Bigtable\Admin\V2\ListTablesRequest;

/**
 * List tables in an instance
 *
 * @param string $projectId The Google Cloud project ID
 * @param string $instanceId The ID of the Bigtable instance
 */
function list_tables(
    string $projectId,
    string $instanceId
): void {
    $instanceAdminClient = new BigtableInstanceAdminClient();
    $tableAdminClient = new BigtableTableAdminClient();

    $instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);

    printf('Listing Tables:' . PHP_EOL);
    $listTablesRequest = (new ListTablesRequest())
        ->setParent($instanceName);
    $tables = $tableAdminClient->listTables($listTablesRequest)->iterateAllElements();
    $tables = iterator_to_array($tables);
    if (empty($tables)) {
        print('No table exists.' . PHP_EOL);
        return;
    }
    foreach ($tables as $table) {
        print($table->getName() . PHP_EOL);
    }
}

Python

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

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

tables = instance.list_tables()
print("Listing tables in current project...")
if tables != []:
    for tbl in tables:
        print(tbl.table_id)
else:
    print("No table exists in current project...")

Ruby

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

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

# instance_id = "my-instance"
bigtable.tables(instance_id).all.each do |t|
  puts "Table: #{t.name}"
end

איך צופים במידע על טבלה

המסוף

כדי לראות מידע על טבלה:

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

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

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

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

gcloud

כדי לראות מידע על טבלה, מריצים את הפקודה gcloud bigtable instances tables describe.

gcloud bigtable instances tables describe TABLE_ID \
    --instance=INSTANCE_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: מזהה ייחודי של הטבלה
  • ‫INSTANCE_ID: המזהה של המכונה

cbt

אפשר להשתמש ב-cbt CLI כדי לקבל רשימה של משפחות עמודות קיימות בטבלה.

משתמשים בפקודה הבאה ומחליפים את [TABLE_NAME] בשם הטבלה:

cbt ls [TABLE_NAME]

הגדרת מדיניות Garbage Collection

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

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

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

  • אם יוצרים את משפחת העמודות באמצעות מסוף Google Cloud , כל ספריית לקוח אחרת או cbtCLI , ‏ Bigtable שומר מספר אינסופי של תאים בכל עמודה.

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

גיבוי ושחזור של טבלה

הוראות לגיבוי טבלה ולשחזור מטבלה מגובת לטבלה חדשה מפורטות במאמר בנושא ניהול גיבויים.

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

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

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

  • הפעלת סנכרון שינויים בזרמי נתונים בטבלה קיימת
  • השבתה של סנכרון שינויים בזרמי נתונים
  • עדכון תקופת השמירה של סנכרון שינויים בזרמי נתונים

מחיקת טבלה

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

המסוף

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על בטבלה שרוצים למחוק.

  5. לוחצים על Delete.

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

  7. לוחצים על Delete.

gcloud

  1. כדי למחוק טבלאות, מריצים את הפקודה gcloud bigtable instances tables delete.

    gcloud bigtable instances tables delete TABLE_ID --instance=INSTANCE_ID
    

    מחליפים את מה שכתוב בשדות הבאים:

    • ‫TABLE_ID: המזהה הייחודי של הטבלה
    • ‫INSTANCE_ID: המזהה של המכונה
  2. בטרמינל, מזינים y כדי לאשר את מחיקת הטבלה.

cbt

כדי למחוק טבלה, משתמשים בפקודה הבאה ומחליפים את [TABLE_NAME] בשם הטבלה:

cbt deletetable [TABLE_NAME]

ביטול מחיקה של טבלה

אם מוחקים טבלה בטעות, אפשר להשתמש בפקודה bigtable instances tables undelete של gcloud CLI כדי לבטל את המחיקה או לשחזר את הטבלה. אל תנסו ליצור מחדש את הטבלה שנמחקה באופן ידני.

כדי לבטל מחיקה של טבלה, מריצים את הפקודה הבאה במסוף:

gcloud bigtable instances tables undelete TABLE_ID --instance=INSTANCE_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: המזהה הייחודי של הטבלה
  • ‫INSTANCE_ID: המזהה של המכונה

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

ההגבלות הבאות חלות:

  • אפשר לבטל את המחיקה של טבלה במשך שבעה ימים ממועד המחיקה.
  • אי אפשר לבטל מחיקה של טבלה באמצעות מסוף Google Cloud , ספריות הלקוח של Cloud Bigtable או cbt CLI.
  • אי אפשר לבטל את המחיקה של טבלה ממופע שנמחק.
  • אי אפשר לבטל את המחיקה של טבלה שהופעל בה CMEK.
  • כשמשחזרים טבלה שנמחקה, Bigtable לא משחזר קישורים של מדיניות IAM עם הרשאות גרנולריות לטבלה שנמחקה.

אפשר גם לבדוק את הסטטוס של הפעולה undelete ביומני הביקורת.

שינוי ההגנה מפני מחיקה

אם אתם חשבון משתמש בתפקיד שכולל את ההרשאה bigtable.tables.update, כמו roles/bigtable.admin, אתם יכולים להפעיל או להשבית את ההגנה מפני מחיקה של טבלה. הגנה מפני מחיקה מונעת את המחיקה של הטבלה, של כל משפחות העמודות בטבלה ושל המופע שמכיל את הטבלה.

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

המסוף

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על לצד מזהה הטבלה.

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

gcloud

כדי להפעיל הגנה מפני מחיקה של טבלה, מריצים את הפקודה gcloud bigtable instances table update:

```sh
gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --deletion-protection
```

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

```sh
gcloud bigtable instances tables update TABLE_ID \
    --instance=INSTANCE_ID \
    --no-deletion-protection
```

מחליפים את מה שכתוב בשדות הבאים:

+ TABLE_ID: the unique identifier for the table
+ INSTANCE_ID: the ID of the instance

cbt

אי אפשר להשתמש ב-CLI של cbt כדי להפעיל או להשבית את ההגנה מפני מחיקה.

שינוי סף הגיל של אחסון עם גישה לא תדירה

אפשר לשנות את סף הגיל של גישה לא תדירה שכלולה באחסון מדורג בכל שלב.

המסוף

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על עריכה בטבלה שרוצים לשנות.

  5. בשדה סף הגיל, מזינים את מספר הימים החדש שאחריו Bigtable מעביר נתונים מאחסון ה-SSD לאחסון עם גישה לא תדירה. המספר חייב להיות 30 או יותר.

gcloud

כדי לשנות את סף הגיל של אחסון עם גישה לא תדירה, מריצים את הפקודה gcloud beta bigtable instances tables update עם הדגל --tiered-storage-infrequent-access-older-than:

    gcloud beta bigtable instances tables update TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: המזהה של הטבלה שרוצים לעדכן.
  • ‫INSTANCE_ID: מזהה המכונה.
  • ‫PROJECT_ID: הפרויקט שמכיל את הטבלה שרוצים לעדכן.
  • ‫AGE_THRESHOLD: סף הגיל, שחייב להיות 30 ימים לפחות. היחידות הקבילות הן ימים (d), שעות (h), דקות (m) ושניות (s). לדוגמה: מ-32d ל-33d.

השבתת אחסון לגישה לא תדירה

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

המסוף

  1. במסוף Google Cloud , פותחים את רשימת מופעי Bigtable.

    פתיחת רשימת המופעים

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

  3. בחלונית הימנית, לוחצים על טבלאות.

    בדף Tables מוצגת רשימה של טבלאות במופע.

  4. לוחצים על עריכה בטבלה שרוצים לשנות.

  5. מבטלים את הסימון בתיבת הסימון הפעלת אחסון בשכבות.

  6. לוחצים על Save.

gcloud

כדי להשבית את האחסון בגישה לא תדירה, משתמשים בפקודה gcloud beta bigtable instances tables update עם הדגל --clear-tiered-storage-config:

    gcloud beta bigtable instances tables update TABLE_ID \
        --instance=INSTANCE_ID \
        --project=PROJECT_ID \
        --clear-tiered-storage-config

מחליפים את מה שכתוב בשדות הבאים:

  • ‫TABLE_ID: המזהה של הטבלה שרוצים לעדכן
  • ‫INSTANCE_ID: המזהה של המכונה
  • ‫PROJECT_ID: הפרויקט שמכיל את הטבלה שרוצים לעדכן

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