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

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

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

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

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

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

הגדרה של 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'

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

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

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

  • 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 .

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

תחויבו ביחידת כתיבה אחת על כל חלק של 1KiB של נתוני מסמך או נתוני רשומה באינדקס שנמחקו.

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

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

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

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

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