מוחק
במאמר הזה מוסבר איך למחוק נתונים שמאוחסנים בטבלאות של Bigtable, מפורט מתי כדאי להשתמש בכל אחת מהשיטות, ומוצגות דוגמאות. לפני שקוראים את הדף הזה, כדאי לעיין בסקירה הכללית על Bigtable ולהבין את המושגים שקשורים לתכנון סכימה.
כדי לשמור על עקביות, התיאורים בדף הזה מתייחסים לשיטות ה-API שמשמשות לכל סוג של בקשה. עם זאת, מומלץ מאוד להשתמש תמיד באחת מספריות הלקוח של Bigtable כדי לגשת לממשקי ה-API של Bigtable, במקום להשתמש ב-REST או ב-RPC.
הדוגמאות בדף הזה מבוססות על נתונים לדוגמה שדומים לנתונים שאולי מאוחסנים ב-Bigtable.
כדי לדעת כמה פעמים אפשר להשתמש בפעולות שמתוארות בדף הזה בכל יום, אפשר לעיין במאמר בנושא מכסות ומגבלות.
איך Bigtable מוחק נתונים
כששולחים בקשת מחיקה, התאים מסומנים למחיקה ואי אפשר לקרוא אותם. הנתונים מוסרים עד שבוע לאחר מכן במהלך דחיסה, תהליך שמתבצע ברקע ומבצע אופטימיזציה רציפה של הטבלה. מטא-נתונים של מחיקה יכולים לגרום לנתונים לתפוס קצת יותר נפח אחסון (כמה קילובייט לכל שורה) למשך כמה ימים אחרי ששולחים בקשת מחיקה, עד לביצוע הדחיסה הבאה.
תמיד אפשר לשלוח בקשת מחיקה, גם אם נפח האחסון של האשכול חרג מהמגבלה והגישה לקריאה ולכתיבה חסומה.
מחיקת טווח של שורות
אם רוצים למחוק כמות גדולה של נתונים שמאוחסנים בשורות סמוכות, משתמשים ב-dropRowRange. הפעולה הזו מוחקת את כל השורות בטווח שורות שמזוהה על ידי שורת התחלה וסיום או על ידי קידומת של מפתח שורה.
ערכי מפתח השורה שאתם מספקים כשאתם מוחקים טווח של שורות נחשבים לנתוני שירות. למידע על אופן הטיפול בנתוני השירות, אפשר לעיין בהודעת הפרטיות שלGoogle Cloud .
אחרי שהמחיקה מסתיימת בהצלחה ומקבלים תגובה, אפשר לכתוב נתונים בבטחה לאותו טווח שורות.
הפעולה dropRowRange כפופה להגבלות הבאות:
- אי אפשר להשמיט טווח של שורות מתצוגה מורשית.
- אי אפשר להפעיל את השיטה
dropRowRangeבאופן אסינכרוני. אם שולחים בקשתdropRowRangeלטבלה בזמן שמתבצעת בקשה אחרת, Bigtable מחזיר שגיאתUNAVAILABLEעם ההודעהA DropRowRange operation is already ongoing. כדי לפתור את השגיאה, צריך לשלוח שוב את הבקשה. - במקרים של מופעים שמשתמשים בשכפול, יכול להיות שייקח ל-Bigtable הרבה זמן להשלים את הפעולה בגלל השהיית שכפול מוגברת ושימוש מוגבר במעבד. כדי למחוק נתונים ממופע שמשתמש בשכפול, משתמשים ב-Data API כדי לקרוא ואז למחוק את הנתונים.
בדוגמאות הקוד הבאות אפשר לראות איך להשמיט טווח של שורות שמתחילות בקידומת של מפתח השורה phone#5c10102:
Java
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחיקת נתונים באמצעות שיטות Data API
אם אתם צריכים למחוק כמויות קטנות של נתונים לא רציפים, לעיתים קרובות האפשרות הכי טובה היא למחוק את הנתונים באמצעות שיטה שמפעילה את Cloud Bigtable API (Data API). משתמשים בשיטות האלה אם רוצים למחוק נתונים בנפח של MB ולא GB בבקשה. הדרך היחידה למחוק נתונים מעמודה (לא ממשפחת עמודות) היא באמצעות Data API.
שיטות של Data API שולחות קריאה ל-MutateRows עם אחד משלושת סוגי השינויים הבאים:
- DeleteFromColumn
- DeleteFromFamily
- DeleteFromRow
בקשת מחיקה באמצעות Data API היא אטומית: או שהבקשה מצליחה וכל הנתונים נמחקים, או שהבקשה נכשלת ולא מוסרים נתונים.
ברוב המקרים, מומלץ להימנע משימוש בשיטות CheckAndMutate למחיקת נתונים. במקרים נדירים שבהם נדרש מודל עקביות חזק, כדאי להשתמש בגישה הזו, אבל חשוב לזכור שהיא דורשת הרבה משאבים ועלולה להשפיע על הביצועים.
כדי להשתמש ב-MutateRows למחיקת נתונים, שולחים בקשת readRows עם מסנן כדי לקבוע מה רוצים למחוק, ואז שולחים את בקשת המחיקה. רשימת המסננים הזמינים מופיעה במאמר מסננים.
בדוגמאות שבקטע הזה מניחים שכבר קבעתם אילו נתונים למחוק.
מחיקה מעמודה
בדוגמאות הקוד הבאות אפשר לראות איך מוחקים את כל התאים בעמודה בשורה:
Java
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python asyncio
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחיקה מקבוצת עמודות
בדוגמאות הקוד הבאות אפשר לראות איך מוחקים תאים מקבוצת עמודות בשורה:
Java
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python asyncio
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחיקה משורה
בדוגמאות הקוד הבאות אפשר לראות איך מוחקים את כל התאים משורה:
Java
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python asyncio
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחיקה באמצעות סטרימינג ועיבוד באצווה
בדרך כלל, הדרך הכי טובה למחוק כמויות גדולות של נתונים היא לשלוח בקשות מחיקה בסטרימינג ובאצווה. האסטרטגיה הזו יכולה להיות שימושית אם יש לכם דרישות לשמירת נתונים ברמת פירוט גבוהה יותר מאלה שמדיניות איסוף האשפה מאפשרת.
אם האפליקציה שלכם כתובה ב-Java, אתם יכולים להפעיל את בקרת זרימת הכתיבה של פעולות בכמות גדולה כשאתם שולחים מחיקות בכמות גדולה ל-Bigtable. מידע נוסף זמין במאמרים בקרה על זרימת נתונים בכתיבה של נתונים בכמות גדולה והפעלת בקרה על זרימת נתונים בכתיבה של נתונים בכמות גדולה.
בדוגמאות הקוד הבאות מתחילים להזרים נתונים (קריאת שורות), יוצרים מהם חבילה, ואז עוברים על החבילה ומוחקים את כל התאים בעמודה data_plan_01gb1 במשפחת העמודות cell_plan:
המשך
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Java
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Python asyncio
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
Node.js
מידע על התקנת ספריית הלקוח של Bigtable ושימוש בה מופיע במאמר ספריות הלקוח של Bigtable.
כדי לבצע אימות ב-Bigtable, צריך להגדיר את Application Default Credentials. מידע נוסף זמין במאמר הגדרת אימות לספריות לקוח.
מחיקת נתונים בתצוגה מורשית
אפשר למחוק נתונים מטבלה על ידי שליחת בקשת מחיקה לתצוגה מורשית. צריך להשתמש באחת מהאפשרויות הבאות:
- CLI של gcloud
- לקוח Bigtable ל-Java
כשמוחקים נתונים מתצוגה מורשית, צריך לציין את מזהה התצוגה המורשית בנוסף למזהה הטבלה.
הנתונים שאפשר למחוק מתצוגה מפורטת מוגבלים על ידי ההגדרה של התצוגה המפורטת. אפשר למחוק רק נתונים שכלולים בתצוגה המורשית. אם מנסים למחוק נתונים שלא נכללים בהגדרת התצוגה המורשית או שחלים עליהם הכללים הבאים, תוחזר השגיאה PERMISSION_DENIED:
- אי אפשר למחוק טווח של שורות מתצוגה מורשית באמצעות
DropRowRangeב-Admin API. - אי אפשר למחוק משורה.
- מחיקה מעמודה נתמכת כל עוד היא מתבצעת בשורות שמופיעות בתצוגה המורשית.
- מותר למחוק מעמודה משפחתית רק אם העמודה המשפחתית שצוינה מוגדרת כך שכל הקידומות של מסווגי העמודות (
qualifier_prefixes="") מותרות בתצוגה המורשית.
לדוגמה, אם תנסו למחוק משורה מסוימת, והשורה הזו מכילה עמודות בטבלה הבסיסית שלא נמצאות בתצוגה המורשית שלכם, הבקשה תיכשל.