מחיקת נתונים בכמות גדולה

אתם יכולים להשתמש בשירות המנוהל של Cloud Firestore למחיקה בכמות גדולה כדי למחוק נתונים מהמסד הנתונים. התכונה הזו תומכת במחיקה של קבוצת קולקציות אחת או יותר.

בדף הזה נסביר איך למחוק מסמכי Cloud Firestore בכמות גדולה באמצעות השירות המנוהל למחיקה בכמות גדולה. השירות המנוהל של Cloud Firestore למחיקה בכמות גדולה זמין דרך הכלי בשורת הפקודה gcloud ודרך ה-API של Cloud Firestore (REST, ‏ RPC).

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

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

  1. מפעילים את החיוב בפרויקט Google Cloud. רק בפרויקטים של Google Cloud עם חיוב מופעל אפשר להשתמש באפשרות המחיקה בכמות גדולה.
  2. מוודאים שלחשבון יש את ההרשאות הנדרשות ל-Cloud Firestore. אם אתם הבעלים של הפרויקט, לחשבון שלכם יש את ההרשאות הנדרשות. אחרת, התפקידים הבאים מקצים את ההרשאות הנדרשות לביצוע פעולות מחיקה בכמות גדולה:

    • תפקידים ב-Cloud Firestore: Owner,‏ Cloud Datastore Owner או Cloud Datastore Bulk Admin

הגדרת gcloud לפרויקט

אפשר להתחיל פעולות מחיקה בכמות גדולה דרך מסוף Google Cloud או באמצעות הכלי gcloud בשורת הפקודה. כדי להשתמש ב-gcloud, מגדירים את כלי שורת הפקודה ומתחברים לפרויקט באחת מהדרכים הבאות:

מחיקת נתונים בכמות גדולה

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

מחיקת קבוצות ספציפיות של אוספים בכמות גדולה

gcloud

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

gcloud beta firestore bulk-delete \
--collection-ids=[COLLECTION_GROUP_ID_1_OR_KIND_1],[COLLECTION_GROUP_ID_2_OR_KIND_2],[SUBCOLLECTION_GROUP_ID_1_OR_KIND_3] \
--database=[DATABASE]

ניהול פעולות מחיקה בכמות גדולה

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

התחילית של שמות הפעולות היא projects/[PROJECT_ID]/databases/[DATABASE_ID]/operations/, לדוגמה:

projects/my-project/databases/(default)/operations/ASA1MTAwNDQxNAgadGx1YWZlZAcSeWx0aGdpbi1zYm9qLW5pbWRhEgopEg

עם זאת, אפשר להשמיט את הקידומת כשמציינים שם של פעולה לפקודות describe,‏ cancel ו-delete.

הצגת רשימה של כל פעולות המחיקה בכמות גדולה

gcloud

הפקודה operations list מאפשרת לראות את כל הפעולות הפעילות והפעולות שהושלמו לאחרונה, כולל פעולות מחיקה בכמות גדולה:

gcloud firestore operations list

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

gcloud

משתמשים בפקודה operations describe כדי להציג את הסטטוס של פעולת מחיקה בכמות גדולה.

gcloud firestore operations describe [OPERATION_NAME]

אומדן של זמן השלמה

בקשה לסטטוס של פעולה ממושכת מחזירה את המדדים workEstimated ו-workCompleted. כל אחד מהמדדים האלה מוחזר גם במספר הבייטים וגם במספר המסמכים:

  • workEstimated מציג את המספר המשוער הכולל של הבייטים והמסמכים שתהליך יטפל בהם. Cloud Firestore עשוי להשמיט את המדד הזה אם הוא לא יכול לבצע אומדן.

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

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

ביטול פעולה

gcloud

כדי להפסיק פעולה שמתבצעת, משתמשים בפקודה operations cancel:

gcloud firestore operations cancel [OPERATION_NAME]

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

מחיקת פעולה

אפשר להשתמש בפקודה gcloud firestore operations delete כדי להסיר פעולה שהושלמה מרשימת הפעולות האחרונות. כדי לבטל פעולה שפועלת, משתמשים בפעולת הביטול הקודמת.

gcloud firestore operations delete [OPERATION_NAME]

חיוב ותמחור של פעולות מחיקה בכמות גדולה

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

על פעולות מחיקה בכמות גדולה תחויבו על קריאה ומחיקה של מסמכים לפי התעריפים שמפורטים במחירון של Cloud Firestore. פעולות מחיקה בכמות גדולה כוללות קריאה של רשומת אינדקס אחת לכל מסמך שנמצא, ופעולה אחת של מחיקה לכל מסמך שנמחק. אתם מחויבים על פעולת קריאה אחת עבור עד 1,000 רשומות אינדקס שנקראו. לדוגמה, אם תבצעו פעולת מחיקה בכמות גדולה של 1,500 מסמכים, תחויבו ב-2 פעולות קריאה של מסמכים וב-1,500 פעולות מחיקה של מסמכים.

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

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

הצגת העלויות של מחיקה בכמות גדולה

פעולות מחיקה בכמות גדולה מחילות את התווית goog-firestoremanaged:bulkdelete על פעולות שמחויבות. בדף הדוחות של החיוב ב-Cloud, תוכלו להשתמש בתווית הזו כדי להציג עלויות שקשורות לפעולות מחיקה בכמות גדולה.

שיטות מומלצות

אל תדלגו על נתונים שנמחקו, מה שעלול להאט את השאילתות.