תבנית למחיקה בכמות גדולה ב-Datastore [יצאה משימוש]

התבנית הזו הוצאה משימוש והיא תוסר ברבעון השלישי של 2023. מומלץ לעבור לתבנית Firestore Bulk Delete .

תבנית Datastore Bulk Delete היא צינור שקורא ישויות מ-Datastore באמצעות שאילתת GQL נתונה, ואז מוחק את כל הישויות התואמות בפרויקט היעד שנבחר. אפשר להגדיר את צינור העיבוד כך שיעביר את ישויות Datastore שמקודדות ב-JSON לפונקציה המוגדרת על ידי המשתמש ב-JavaScript. אפשר להשתמש בפונקציה הזו כדי לסנן ישויות על ידי החזרת ערכי null.

הדרישות לגבי צינורות עיבוד נתונים

  • צריך להגדיר את Datastore בפרויקט לפני שמריצים את התבנית.
  • אם קוראים ומוחקים ממופעים נפרדים של Datastore, ל-Worker Service Account של Dataflow צריכה להיות הרשאה לקרוא ממופע אחד ולמחוק מהמופע השני.
  • צריך להפעיל את האפשרות Database writes (כתיבה למסד נתונים) במופע Datastore.

פרמטרים של תבניות

פרמטר תיאור
datastoreReadGqlQuery שאילתת GQL שמציינת אילו ישויות יתאימו למחיקה. שימוש בשאילתה עם מפתחות בלבד עשוי לשפר את הביצועים. לדוגמה: ‎SELECT __key__ FROM MyKind‎.
datastoreReadProjectId מזהה הפרויקט של מופע Datastore שממנו רוצים לקרוא ישויות (באמצעות שאילתת GQL) שמשמשות להתאמה.
datastoreDeleteProjectId מזהה הפרויקט של מופע Datastore שממנו רוצים למחוק ישויות תואמות. הוא יכול להיות זהה ל-datastoreReadProjectId אם רוצים לקרוא ולמחוק באותו מופע של Datastore.
datastoreReadNamespace (אופציונלי) מרחב השמות של הישויות המבוקשות. מגדירים את הערך '' כדי להשתמש במרחב השמות שמוגדר כברירת מחדל.
datastoreHintNumWorkers (אופציונלי) רמז למספר העובדים הצפוי בשלב של הגבלת קצב העלייה של Datastore. ברירת המחדל היא 500.
javascriptTextTransformGcsPath (אופציונלי) כתובת ה-URI של Cloud Storage של קובץ .js שמגדיר את הפונקציה בהגדרת המשתמש (UDF) ב-JavaScript שבה רוצים להשתמש. לדוגמה, gs://my-bucket/my-udfs/my_file.js. ‫
javascriptTextTransformFunctionName (אופציונלי) השם של פונקציית JavaScript בהגדרת המשתמש (UDF) שרוצים להשתמש בה. לדוגמה, אם קוד הפונקציה ב-JavaScript הוא myTransform(inJson) { /*...do stuff...*/ }, אז שם הפונקציה הוא myTransform. דוגמאות ל-UDF ב-JavaScript זמינות במאמר UDF Examples. אם הפונקציה הזו מחזירה ערך לא מוגדר או null עבור ישות Datastore נתונה, הישות הזו לא נמחקת.

הרצת התבנית

המסוף

  1. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

    רשימה של אזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.

  5. בתפריט הנפתח תבנית של Dataflow, בוחרים בתבנית מחיקה בכמות גדולה של ישויות ב-Datastore.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

במעטפת או בטרמינל, מריצים את התבנית:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates/VERSION/Datastore_to_Datastore_Delete \
    --region REGION_NAME \
    --parameters \
datastoreReadGqlQuery="GQL_QUERY",\
datastoreReadProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID,\
datastoreDeleteProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID

מחליפים את מה שכתוב בשדות הבאים:

  • ‫JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • ‫REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • ‫VERSION: הגרסה של התבנית שרוצים להשתמש בה

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫GQL_QUERY: השאילתה שתשמש להתאמת ישויות למחיקה
  • ‫DATASTORE_READ_AND_DELETE_PROJECT_ID: מזהה הפרויקט של מופע Datastore. בדוגמה הזו מתבצעות גם קריאה וגם מחיקה מאותו מופע של Datastore.

API

כדי להפעיל את התבנית באמצעות API בארכיטקטורת REST, שולחים בקשת HTTP POST. מידע נוסף על ה-API ועל היקפי ההרשאות שלו זמין במאמר projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates/VERSION/Datastore_to_Datastore_Delete
{
   "jobName": "JOB_NAME",
   "parameters": {
       "datastoreReadGqlQuery": "GQL_QUERY",
       "datastoreReadProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID",
       "datastoreDeleteProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID"
   },
   "environment": { "zone": "us-central1-f" }
   }
}

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט שבו רוצים להריץ את משימת Google Cloud Dataflow
  • ‫JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • ‫LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • ‫VERSION: הגרסה של התבנית שרוצים להשתמש בה

    אפשר להשתמש בערכים הבאים:

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית. אפשר למצוא את הגרסה הזו בתיקיית ההורה המתאימה עם התאריך בדלי – gs://dataflow-templates/
  • ‫GQL_QUERY: השאילתה שתשמש להתאמת ישויות למחיקה
  • ‫DATASTORE_READ_AND_DELETE_PROJECT_ID: מזהה הפרויקט של מופע Datastore. בדוגמה הזו מתבצעות גם קריאה וגם מחיקה מאותו מופע של Datastore.

המאמרים הבאים