תבנית של סנכרון שינויים בזרמי נתונים של Spanner ל-Cloud Storage

תבנית ה-Spanner change streams to Cloud Storage היא צינור להעברת נתונים (pipeline) של סטרימינג שמעביר רשומות של שינויים בנתוני Spanner וכותב אותם לקטגוריה של Cloud Storage באמצעות Dataflow Runner v2.

התבנית הזו מאפשרת להגדיר את משך הזמן של כל חלון. צינור הנתונים מקבץ את הרשומות של שינוי הנתונים ב-Spanner לחלונות על סמך חותמת הזמן שלהן. כל הרשומות עם חותמות זמן ששייכות לחלון מובטח שיהיו בחלון, ולא יכול להיות שהן יגיעו באיחור. אפשר גם להגדיר מספר של רסיסי פלט. הצינור יוצר קובץ פלט אחד ב-Cloud Storage לכל חלון ולכל רסיס. בקובץ פלט, הרשומות לא מסודרות. אפשר לכתוב את קובצי הפלט בפורמט JSON או AVRO, בהתאם להגדרות המשתמש.

שימו לב: כדי לצמצם את זמן האחזור ברשת ואת עלויות ההעברה ברשת, מומלץ להריץ את עבודת Dataflow מאותו אזור שבו נמצא מופע Spanner או קטגוריה של Cloud Storage. אם משתמשים במקורות, ביעדים, במיקומים של קבצים זמניים או במיקומים של קבצים להעברה שנמצאים מחוץ לאזור של העבודה, יכול להיות שהנתונים יישלחו בין אזורים. מידע נוסף על אזורי Dataflow

מידע נוסף על סנכרון שינויים בזרמי נתונים, איך יוצרים צינורות עיבוד נתונים של Dataflow לסנכרון שינויים בזרמי נתונים ושיטות מומלצות

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

  • מופע Spanner חייב להתקיים לפני שמריצים את צינור הנתונים.
  • מסד הנתונים של Spanner צריך להתקיים לפני שמריצים את צינור הנתונים.
  • מופע המטא-נתונים של Spanner צריך להתקיים לפני שמריצים את צינור העיבוד.
  • מסד הנתונים של המטא-נתונים של Spanner צריך להתקיים לפני שמריצים את צינור העיבוד.
  • סנכרון שינויים בזרמי נתונים של Spanner חייב להתקיים לפני שמריצים את צינור הנתונים.
  • קטגוריית הפלט של Cloud Storage צריכה להתקיים לפני שמריצים את צינור העיבוד.

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

פרמטרים נדרשים

  • spannerInstanceId: מזהה מופע Spanner שממנו ייקראו נתונים של סנכרון שינויים בזרמי נתונים.
  • spannerDatabase: מסד הנתונים של Spanner שממנו יקראו נתונים של סנכרון שינויים בזרמי נתונים.
  • spannerMetadataInstanceId: מזהה מופע Spanner לשימוש בטבלת המטא-נתונים של מחבר סנכרון שינויים בזרמי נתונים.
  • spannerMetadataDatabase: מסד הנתונים של Spanner שבו יש להשתמש עבור טבלת המטא-נתונים של מחבר סנכרון שינויים בזרמי נתונים.
  • spannerChangeStreamName: השם של סנכרון שינויים בזרמי נתונים ב-Spanner שממנו רוצים לקרוא.
  • gcsOutputDirectory: הנתיב והקידומת של שם הקובץ לכתיבת קובצי פלט. חייב להסתיים בלוכסן. הפורמט של DateTime משמש לניתוח נתיב הספריות עבור מעצבי תאריכים ושעות. לדוגמה, gs://your-bucket/your-path.

פרמטרים אופציונליים

  • spannerProjectId: המזהה של הפרויקט ב-Google Cloud שמכיל את מסד הנתונים של Spanner שממנו רוצים לקרוא את נתוני סנכרון שינויים בזרמי נתונים. בפרויקט הזה נוצר גם טבלת המטא-נתונים של המחבר של סנכרון שינויים בזרמי נתונים. ברירת המחדל של הפרמטר הזה היא הפרויקט שבו צינור Dataflow פועל.
  • spannerDatabaseRole: תפקיד מסד הנתונים ב-Spanner שבו יש להשתמש כשמריצים את התבנית. הפרמטר הזה נדרש רק אם משתמש ה-IAM שמריץ את התבנית הוא משתמש עם בקרת גישה ברמת דיוק גבוהה. לתפקיד במסד הנתונים צריכה להיות הרשאת SELECT בסנכרון שינויים בזרמי נתונים והרשאת EXECUTE בפונקציית הקריאה של סנכרון שינויים בזרמי נתונים. מידע נוסף זמין במאמר בנושא בקרת גישה ברמת גרנולריות גבוהה לסנכרון שינויים בזרמי נתונים (https://cloud.google.com/spanner/docs/fgac-change-streams).
  • spannerMetadataTableName: שם טבלת המטא-נתונים של מחבר Spanner לשימוש בסנכרון שינויים בזרמי נתונים. אם לא מספקים את המידע הזה, נוצרת באופן אוטומטי טבלת מטא-נתונים של סנכרון שינויים בזרמי נתונים ב-Spanner במהלך ההרצה של צינור הנתונים. כשמעדכנים צינור קיים, צריך לציין ערך לפרמטר הזה. אחרת, אל תשתמשו בפרמטר הזה.
  • startTimestamp: תאריך ושעת ההתחלה, כולל, לקריאת סנכרון שינויים בזרמי נתונים, בפורמט Ex-2021-10-12T07:20:50.52Z. ברירת המחדל היא חותמת הזמן של תחילת הצינור, כלומר השעה הנוכחית.
  • endTimestamp: תאריך ושעה לסיום, כולל, לשימוש בקריאת סנכרון שינויים בזרמי נתונים. לדוגמה, Ex-2021-10-12T07:20:50.52Z. ברירת המחדל היא זמן אינסופי בעתיד.
  • spannerHost: נקודת הקצה של Cloud Spanner שאליה מתבצעת קריאה בתבנית. היא משמשת לבדיקה בלבד. לדוגמה, https://spanner.googleapis.com. ברירת המחדל היא: https://spanner.googleapis.com.
  • outputFileFormat: הפורמט של קובץ הפלט ב-Cloud Storage. הפורמטים המותרים הם TEXT ו-AVRO. ברירת המחדל היא AVRO.
  • windowDuration: משך החלון הוא המרווח שבו הנתונים נכתבים לספריית הפלט. הגדרת משך הזמן על סמך קצב העברת הנתונים של צינור עיבוד הנתונים. לדוגמה, כדי להשיג תפוקה גבוהה יותר, יכול להיות שיהיה צורך להקטין את גודל החלון כדי שהנתונים יתאימו לזיכרון. ברירת המחדל היא 5m (חמש דקות), והמינימום הוא 1s (שנייה אחת). הפורמטים המותרים הם: [int]s (לשניות, לדוגמה: 5s),‏ [int]m (לדקות, לדוגמה: 12m),‏ [int]h (לשעות, לדוגמה: 2h). לדוגמה, 5m.
  • rpcPriority: עדיפות הבקשה לשיחות Spanner. הערך חייב להיות HIGH,‏ MEDIUM או LOW. ברירת המחדל היא HIGH.
  • outputFilenamePrefix: הקידומת שתוצב בכל קובץ עם חלון. לדוגמה, output-. ברירת המחדל היא: output.
  • numShards: המספר המקסימלי של רסיסי פלט שנוצרים במהלך הכתיבה. מספר גבוה יותר של רסיסים פירושו תפוקה גבוהה יותר לכתיבה ב-Cloud Storage, אבל עלולות להיות עלויות גבוהות יותר של צבירת נתונים ברסיסים כשמעבדים קבצים של פלט Cloud Storage. ברירת המחדל היא 20.

הפעלת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Cloud Spanner change streams to Google Cloud Storage template.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage \
    --region REGION_NAME \
    --parameters \
spannerInstanceId=SPANNER_INSTANCE_ID,\
spannerDatabase=SPANNER_DATABASE,\
spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\
spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\
spannerChangeStreamName=SPANNER_CHANGE_STREAM,\
gcsOutputDirectory=GCS_OUTPUT_DIRECTORY

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

  • 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
  • SPANNER_INSTANCE_ID: מזהה המכונה של Cloud Spanner
  • SPANNER_DATABASE: מסד נתונים של Cloud Spanner
  • SPANNER_METADATA_INSTANCE_ID: מזהה מופע של מטא נתונים ב-Cloud Spanner
  • SPANNER_METADATA_DATABASE: מסד נתונים של מטא נתונים ב-Cloud Spanner
  • SPANNER_CHANGE_STREAM: Cloud Spanner change stream
  • GCS_OUTPUT_DIRECTORY: מיקום הקובץ של פלט סנכרון שינויים בזרמי נתונים

API

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

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "spannerInstanceId": "SPANNER_INSTANCE_ID",
          "spannerDatabase": "SPANNER_DATABASE",
          "spannerMetadataInstanceId": "SPANNER_METADATA_INSTANCE_ID",
          "spannerMetadataDatabase": "SPANNER_METADATA_DATABASE",
          "spannerChangeStreamName": "SPANNER_CHANGE_STREAM",
          "gcsOutputDirectory": "GCS_OUTPUT_DIRECTORY"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_Google_Cloud_Storage",
   }
}

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

  • 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
  • SPANNER_INSTANCE_ID: מזהה המכונה של Cloud Spanner
  • SPANNER_DATABASE: מסד נתונים של Cloud Spanner
  • SPANNER_METADATA_INSTANCE_ID: מזהה מופע של מטא נתונים ב-Cloud Spanner
  • SPANNER_METADATA_DATABASE: מסד נתונים של מטא נתונים ב-Cloud Spanner
  • SPANNER_CHANGE_STREAM: Cloud Spanner change stream
  • GCS_OUTPUT_DIRECTORY: מיקום הקובץ של פלט סנכרון שינויים בזרמי נתונים

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