כדי למחוק נתונים ממסד הנתונים, משתמשים בשירות המנוהל למחיקה בכמות גדולה. התכונה הזו תומכת במחיקה של סוג אחד או יותר.
בדף הזה מוסבר איך למחוק ישויות בכמות גדולה באמצעות שירות מחיקה בכמות גדולה מנוהל. שירות המחיקה בכמות גדולה במצב Datastore זמין באמצעות כלי שורת הפקודה gcloud ו-API בארכיטקטורת REST של Firestore.
לפני שמתחילים
כדי להשתמש בשירות המנוהל למחיקה בכמות גדולה, צריך לבצע את המשימות הבאות:
- כדי למחוק מסמכים בכמות גדולה, צריך להפעיל חיוב בפרויקט Google Cloud . רק Google Cloud בפרויקטים שמופעל בהם חיוב אפשר להשתמש בפונקציית המחיקה בכמות גדולה.
-
מוודאים שלחשבון יש את ההרשאות הנדרשות למצב Datastore. אם אתם הבעלים של הפרויקט, לחשבון שלכם יש את ההרשאות הנדרשות. אחרת, התפקידים הבאים מעניקים את ההרשאות הנדרשות לפעולות מחיקה בכמות גדולה:
- תפקידים במצב Datastore:
Owner, Cloud Datastore OwnerאוCloud Datastore Bulk Admin
- תפקידים במצב Datastore:
הגדרה של gcloud לפרויקט
אפשר להפעיל פעולות של מחיקה בכמות גדולה דרך Google Cloud המסוף או דרך
gcloudכלי שורת הפקודה. כדי להשתמש ב-gcloud, צריך להגדיר את כלי שורת הפקודה ולהתחבר לפרויקט באחת מהדרכים הבאות:
אפשר לגשת אל
gcloudמהמסוף Google Cloud באמצעות Cloud Shell.מוודאים שהמכשיר
gcloudמוגדר לפרויקט הנכון:gcloud config set project [PROJECT_ID]
מחיקת נתונים בכמות גדולה
בפעולת מחיקה בכמות גדולה, המערכת קודם מוצאת את כל הישויות הרלוונטיות במסד הנתונים ואז מוחקת אותן בקבוצות. עדיין אפשר לשלוח שאילתות לגבי הישויות האלה או לקרוא אותן, אבל התוצאות עשויות להשתנות בהתאם להתקדמות. מחיקה בכמות גדולה לא מוחקת ישויות שנוספו או שונו אחרי שהפעולה מתחילה.
מחיקה בכמות גדולה של סוגים ספציפיים
gcloud
כדי למחוק בכמות גדולה סוגים ספציפיים, משתמשים בדגל --collection-ids.
הדגל משתמש במונחים של Firestore, אבל מזהה של קבוצת אוספים זהה למזהה סוג. הפעולה
מוחקת רק את הסוגים עם המזהים שצוינו.
סוג כולל את כל הישויות והישויות המקוננות (בכל נתיב) עם הסוגים שצוינו.
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]
ניהול פעולות של מחיקה בכמות גדולה
אחרי שמתחילים פעולת מחיקה בכמות גדולה, מצב Datastore מקצה לפעולה שם ייחודי. אפשר להשתמש בשם הפעולה כדי למחוק או לבטל את הפעולה, או כדי לבדוק את הסטטוס שלה.
שמות הפעולות מתחילים בקידומת 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מציג את המספר הכולל המשוער של בייטים וישויות שהפעולה תעבד. יכול להיות שהמדד הזה לא יופיע במצב Datastore אם לא ניתן להעריך אותו.
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 .
על פעולות מחיקה בכמות גדולה נגבים חיובים על קריאות ומחיקות של ישויות, לפי התעריפים שמפורטים בתמחור במצב Datastore. בפעולות מחיקה בכמות גדולה, המערכת קוראת רשומה אחת באינדקס לכל ישות שנמצאה ומבצעת פעולת מחיקה אחת לכל ישות שנמחקה. אתם מחויבים בפעולת קריאה אחת על קריאה של עד 1,000 רשומות אינדקס. לדוגמה, אם תבצעו פעולת מחיקה של 1,500 ישויות, תחויבו על 2 קריאות של ישויות ועל 1,500 מחיקות של ישויות.שימו לב: החיובים במצב Datastore מבוססים על העבודה בפועל שבוצעה. אם הפעולה בוטלה או נכשלה בגלל טעות של המשתמש, תחויבו על ההתקדמות שהושגה. במצב Datastore לא יחויבו קריאות או מחיקות של ישויות שלא נמחקות בסופו של דבר, כמו ישויות שמשתנות אחרי שתהליך המחיקה מתחיל. העלות תשויך ליום שבו הפעולה תושלם.
פעולות מחיקה בכמות גדולה לא מפעילות את ההתראות על Google Cloud התקציב עד שהן מסתיימות. באופן דומה, פעולות קריאה ומחיקה שבוצעו במהלך פעולת מחיקה בכמות גדולה יחולו על השימוש שלכם בתוכנית החינמית אחרי שהפעולה תושלם. פעולות מחיקה בכמות גדולה לא משפיעות על השימוש שמוצג בקטע השימוש במסוף.
צפייה בעלויות של מחיקה בכמות גדולה
פעולות מחיקה בכמות גדולה מחילות את התווית goog-firestoremanaged:bulkdelete על פעולות שמחויבות. בדף דוחות חיוב ב-Cloud, אפשר להשתמש בתווית הזו כדי לראות את העלויות שקשורות לפעולות של מחיקה בכמות גדולה.
שיטות מומלצות
לא מומלץ לדלג על נתונים שנמחקו, כי זה עלול להאט את השאילתות.
אפשרות אחרת
Dataflow הוא שירות מנוהל לפיתוח ולהרצה של תהליכי עבודה לעיבוד נתונים, שמאפשר גם מחיקה בכמות גדולה של נתונים. Dataflow מספק תבנית למחיקה מ-Datastore שאפשר להשתמש בה כדי למחוק ישויות שנבחרו על ידי שאילתת GQL.
מידע נוסף זמין במסמכי Dataflow בנושא הפעלת התבנית למחיקה בכמות גדולה של Datastore.
אם בתרחיש לדוגמה שלכם יש שימוש בשמירת נתונים, כדאי לעיין במאמר בנושא ניהול שמירת נתונים באמצעות מדיניות TTL.