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

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

הצינור מקבץ רשומות של שינויים ב-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: הנתיב והקידומת של שם הקובץ לכתיבת קובצי פלט. חייב להסתיים בלוכסן. הפורמט של התאריך והשעה משמש לניתוח נתיב הספרייה. לדוגמה, gs://your-bucket/your-path.

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

  • spannerProjectId: המזהה של פרויקט Google Cloud שמכיל את מסד הנתונים של Spanner שממנו רוצים לקרוא את נתוני ה-Change Streams. בפרויקט הזה נוצר גם טבלת המטא-נתונים של המחבר של זרמי השינויים. ברירת המחדל של הפרמטר הזה היא הפרויקט שבו צינור ה-Dataflow פועל.
  • spannerDatabaseRole: תפקיד מסד הנתונים ב-Spanner שבו יש להשתמש כשמריצים את התבנית. הפרמטר הזה נדרש רק אם משתמש ה-IAM שמריץ את התבנית הוא משתמש עם בקרת גישה ברמת דיוק גבוהה. לתפקיד במסד הנתונים צריכה להיות ההרשאה SELECT בזרם השינויים וההרשאה EXECUTE בפונקציית הקריאה של זרם השינויים. מידע נוסף זמין במאמר בנושא בקרת גישה ברמת גרנולריות גבוהה לסנכרון שינויים בזרמי נתונים (https://cloud.google.com/spanner/docs/fgac-change-streams).
  • spannerMetadataTableName: השם של טבלת המטא-נתונים של מחבר Spanner change streams שבה רוצים להשתמש. אם לא מספקים את המידע הזה, נוצרת באופן אוטומטי טבלת מטא-נתונים של סנכרון שינויים בזרמי נתונים ב-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.
  • spannerChangeStreamTvfNameList: רשימה של שמות של Spanner Change Stream TVF, מופרדים באמצעות נקודה-פסיק, שאותם רוצים לשאול ולאחד. ברירת המחדל היא ריק.
  • outputFilenamePrefix: הקידומת שתוצב בכל קובץ עם חלונות. לדוגמה, output-. ברירת המחדל היא: output.
  • numShards: המספר המקסימלי של רסיסי פלט שנוצרים בזמן כתיבה. מספר גבוה יותר של רסיסים פירושו תפוקה גבוהה יותר לכתיבה ב-Cloud Storage, אבל יכול להיות שעלות צבירת הנתונים תהיה גבוהה יותר ברסיסים כשמעבדים קבצים של פלט Cloud Storage. ברירת המחדל היא 20.

הרצת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Cloud Spanner change streams to Google Cloud Storage (סנכרון שינויים בזרמי נתונים מ-Cloud Spanner אל Google Cloud Storage).
  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: מיקום הקובץ של פלט נתוני השינויים

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