תבנית Spanner Change Streams to Source Database

צינור עיבוד נתונים בסטרימינג. קריאת נתונים מ-Spanner Change Streams וכתיבתם למקור.

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

פרמטר תיאור
changeStreamName השם של זרם השינויים ב-Spanner שממנו צינור הנתונים קורא.
instanceId השם של מופע Spanner שבו נמצא הזרם לתיעוד שינויים.
databaseId השם של מסד הנתונים של Spanner שהשינויים בו מתועדים.
spannerProjectId שם פרויקט Spanner.
metadataInstance המופע לאחסון המטא-נתונים שמשמשים את המחבר כדי לשלוט בשימוש בנתוני ה-API של זרם השינויים.
metadataDatabase מסד הנתונים שבו מאוחסנים המטא-נתונים שמשמשים את המחבר כדי לשלוט בשימוש בנתוני ה-API של זרם השינויים.
sourceShardsFilePath הנתיב לקובץ ב-Cloud Storage שמכיל מידע על פרופיל החיבור של רסיסי המקור.
startTimestamp אופציונלי: משנים את חותמת הזמן של תחילת הקריאה. ברירת המחדל היא ריק.
endTimestamp אופציונלי: חותמת זמן הסיום של קריאת השינויים. אם לא צוינה חותמת זמן, הקריאה תתבצע ללא הגבלה. ברירת המחדל היא ריק.
shadowTablePrefix אופציונלי: התחילית שמשמשת למתן שמות לטבלאות זמניות. ברירת מחדל: shadow_.
sessionFilePath אופציונלי: נתיב הסשן ב-Cloud Storage שמכיל פרטי מיפוי מ-HarbourBridge.
filtrationMode אופציונלי: מצב הסינון. מציין איך להשמיט רשומות מסוימות על סמך קריטריון. ההגדרות הנתמכות הן: none (לא מסננים כלום), forward_migration (מסננים רשומות שנכתבו באמצעות צינור ההעברה קדימה). ברירת המחדל היא forward_migration.
shardingCustomJarPath אופציונלי: מיקום של קובץ JAR בהתאמה אישית ב-Cloud Storage שמכיל את הלוגיקה של ההתאמה האישית לאחזור מזהה הרסיס. אם מגדירים את הפרמטר הזה, צריך להגדיר גם את הפרמטר shardingCustomJarPath. ברירת המחדל היא ריק.
shardingCustomClassName אופציונלי: שם מחלקה שמוגדר במלואו עם הטמעה של מזהה שבר מותאם אישית. אם מציינים את הפרמטר shardingCustomJarPath, חובה לציין גם את הפרמטר הזה. ברירת המחדל היא ריק.
shardingCustomParameters אופציונלי: מחרוזת שמכילה פרמטרים מותאמים אישית שיועברו למחלקת החלוקה המותאמת אישית. ברירת המחדל היא ריק.
sourceDbTimezoneOffset אופציונלי: הקיזוז מאזור הזמן UTC של מסד הנתונים של המקור. ערך לדוגמה: ‎+10:00. ברירת המחדל: +00:00.
dlqGcsPubSubSubscription אופציונלי: מינוי Pub/Sub שמשמש במדיניות התראות של Cloud Storage לספריית ניסיון חוזר של DLQ כשמפעילים במצב רגיל. השם צריך להיות בפורמט projects/<project-id>/subscriptions/<subscription-name>. אם מגדירים את השם, המערכת מתעלמת מהערכים של deadLetterQueueDirectory ו-dlqRetryMinutes.
skipDirectoryName אופציונלי: רשומות שדילגו עליהן בשכפול הפוך נכתבות בספרייה הזו. שם הספרייה שמוגדר כברירת מחדל הוא skip.
maxShardConnections אופציונלי: המספר המקסימלי של חיבורים שניתן לקבל בשארד נתון. ברירת המחדל: 10000.
deadLetterQueueDirectory אופציונלי: הנתיב שמשמש לאחסון הפלט של תור השגיאות. נתיב ברירת המחדל הוא ספרייה במיקום הזמני של משימת Dataflow.
dlqMaxRetryCount אופציונלי: מספר הפעמים המקסימלי שניתן לנסות שוב לבצע פעולות שנתקלו בשגיאות זמניות באמצעות תור ההודעות המתות. ברירת המחדל היא 500.
runMode אופציונלי: סוג מצב ההפעלה. ערכים נתמכים: regular, retryDLQ. ברירת מחדל: regular. האפשרות retryDLQ מציינת שרק רשומות חמורות בתור להודעות שלא נמסרו ינסו להימסר מחדש.
dlqRetryMinutes אופציונלי: מספר הדקות בין ניסיונות חוזרים של תור הודעות שלא ניתן למסור. ברירת המחדל היא 10.

הפעלת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Spanner Change Streams to Source Database template.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

‫CLI של gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_to_SourceDb \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --parameters \
       changeStreamName=CHANGE_STREAM_NAME,\
       instanceId=INSTANCE_ID,\
       databaseId=DATABASE_ID,\
       spannerProjectId=SPANNER_PROJECT_ID,\
       metadataInstance=METADATA_INSTANCE,\
       metadataDatabase=METADATA_DATABASE,\
       sourceShardsFilePath=SOURCE_SHARDS_FILE_PATH,\

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

  • JOB_NAME: שם ייחודי של המשימה לפי בחירתכם
  • VERSION: הגרסה של התבנית שבה רוצים להשתמש

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

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • REGION_NAME: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • CHANGE_STREAM_NAME: השם של זרם השינויים שממנו רוצים לקרוא
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • SPANNER_PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • METADATA_INSTANCE: מופע Cloud Spanner לאחסון מטא-נתונים כשקוראים משינויים
  • METADATA_DATABASE: מסד הנתונים ב-Cloud Spanner שבו מאוחסנים המטא-נתונים כשקוראים משינויים
  • SOURCE_SHARDS_FILE_PATH: הנתיב לקובץ GCS שמכיל את פרטי הרסיס של המקור

API

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

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launchParameter": {
     "jobName": "JOB_NAME",
     "parameters": {
       "changeStreamName": "CHANGE_STREAM_NAME",
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "spannerProjectId": "SPANNER_PROJECT_ID",
       "metadataInstance": "METADATA_INSTANCE",
       "metadataDatabase": "METADATA_DATABASE",
       "sourceShardsFilePath": "SOURCE_SHARDS_FILE_PATH",
     },
     "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_to_SourceDb",
     "environment": { "maxWorkers": "10" }
  }
}

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

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

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

    • latest כדי להשתמש בגרסה העדכנית של התבנית, שזמינה בתיקיית ההורה ללא תאריך בדלי – gs://dataflow-templates-REGION_NAME/latest/
    • שם הגרסה, כמו 2023-09-12-00_RC00, כדי להשתמש בגרסה ספציפית של התבנית, שאפשר למצוא אותה בתיקיית האב המתאימה עם התאריך בדלי – gs://dataflow-templates-REGION_NAME/
  • LOCATION: האזור שבו רוצים לפרוס את עבודת Dataflow, לדוגמה: us-central1
  • CHANGE_STREAM_NAME: השם של זרם השינויים שממנו רוצים לקרוא
  • INSTANCE_ID: מזהה המופע של Cloud Spanner.
  • DATABASE_ID: מזהה מסד הנתונים ב-Cloud Spanner.
  • SPANNER_PROJECT_ID: מזהה הפרויקט ב-Cloud Spanner.
  • METADATA_INSTANCE: מופע Cloud Spanner לאחסון מטא-נתונים כשקוראים משינויים
  • METADATA_DATABASE: מסד הנתונים ב-Cloud Spanner שבו מאוחסנים המטא-נתונים כשקוראים משינויים
  • SOURCE_SHARDS_FILE_PATH: הנתיב לקובץ GCS שמכיל את פרטי הרסיס של המקור