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

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

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

כדי למחוק מסמכים בכמות גדולה, משתמשים בשירות המנוהל למחיקה בכמות גדולה. שירות המחיקה המנוהלת בכמות גדולה של Cloud Firestore זמין דרך כלי שורת הפקודה gcloud ודרך ה-API בארכיטקטורת REST של Cloud Firestore.

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

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

  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 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]
לדוגמה, נניח שיש כמה מסמכים שמייצגים מסעדות באוסף restaurants ברמה העליונה של מסד הנתונים cymbal. בכל מסמך של מסעדה יש כמה אוספי משנה כמו ratings,‏ reviews ו-outlets. כדי למחוק בכמות גדולה את קבוצות האוספים restaurants ו-reviews, הפקודה נראית כך:

gcloud firestore bulk-delete \
--collection-ids=restaurants,reviews \
--database='cymbal'

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

אחרי שמתחילים פעולת מחיקה בכמות גדולה, 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 עד לסיום הפעולה. באופן דומה, פעולות קריאה ומחיקה שבוצעו במהלך פעולת מחיקה בכמות גדולה מוחלות על השימוש שלכם בתוכנית בחינם לאחר השלמת הפעולה. פעולות מחיקה בכמות גדולה לא משפיעות על השימוש שמוצג בקטע Usage במסוף.

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

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

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

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