כדי למחוק נתונים ממסד הנתונים, אתם יכולים להשתמש בשירות המנוהל למחיקת נתונים בכמות גדולה. התכונה הזו תומכת במחיקה של קבוצת אוספים אחת או יותר.
שירות מנוהל למחיקת נתונים בכמות גדולה
כדי למחוק מסמכים בכמות גדולה, משתמשים בשירות המנוהל למחיקת נתונים בכמות גדולה. שירות המחיקה המנוהל של Cloud Firestore זמין דרך כלי שורת הפקודה gcloud ודרך API בארכיטקטורת REST של Cloud Firestore.
לפני שמתחילים
כדי להשתמש בשירות המנוהל למחיקת נתונים בכמות גדולה, צריך לבצע את המשימות הבאות:
- כדי למחוק מסמכים בכמות גדולה, צריך להפעיל את החיוב בפרויקט Google Cloud. רק בפרויקטים של Google Cloud עם חיוב מופעל אפשר להשתמש בפונקציונליות של מחיקה בכמות גדולה.
-
צריך לוודא שלחשבון יש את ההרשאות הנדרשות ל-Cloud Firestore. אם אתם הבעלים של הפרויקט, לחשבון שלכם יש את ההרשאות הנדרשות. אחרת, התפקידים הבאים נותנים את ההרשאות שנדרשות לפעולות מחיקה בכמות גדולה:
- תפקידים ב-Cloud Firestore:
Owner,Cloud Datastore OwnerאוCloud Datastore Bulk Admin
- תפקידים ב-Cloud Firestore:
הגדרת gcloud בפרויקט
אפשר להתחיל פעולות של מחיקה בכמות גדולה דרך מסוף Google Cloud או כלי שורת הפקודה gcloud. כדי להשתמש ב-gcloud, מגדירים את כלי שורת הפקודה ומתחברים לפרויקט באחת מהדרכים הבאות:
נכנסים ל-
gcloudממסוף Google Cloud באמצעות Cloud Shell.מוודאים ש-
gcloudמוגדר לפרויקט הנכון:gcloud config set project [PROJECT_ID]
מחיקת נתונים באמצעות השירות המנוהל למחיקת נתונים בכמות גדולה
בפעולת מחיקה בכמות גדולה, המערכת קודם מוצאת את כל המסמכים הרלוונטיים במסד הנתונים ומוחקת אותם בקבוצות. עדיין תוכלו לשלוח שאילתות או לקרוא את המסמכים האלה, אבל התוצאות עשויות להשתנות בהתאם להתקדמות. מחיקה בכמות גדולה לא מוחקת מסמכים שנוספו או שונו אחרי שהפעולה התחילה.
מחיקה בכמות גדולה של קבוצות ספציפיות של אוספים
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, אתם יכולים להשתמש בתווית הזו כדי לראות את העלויות שקשורות לפעולות של מחיקה בכמות גדולה.
שיטות מומלצות
להימנע מדילוג על נתונים שנמחקו, כי זה עלול להאט את השאילתות.