תבנית סנכרון שינויים בזרמי נתונים של Spanner ל-Pub/Sub היא צינור עיבוד נתונים בסטרימינג שמעביר בסטרימינג רשומות של שינויים בנתוני Spanner וכותב אותן לנושאים ב-Pub/Sub באמצעות Dataflow Runner V2.
כדי להוציא את הנתונים לנושא חדש ב-Pub/Sub, צריך קודם ליצור את הנושא. אחרי היצירה, Pub/Sub יוצר ומצרף מינוי לנושא החדש באופן אוטומטי. אם מנסים להוציא נתונים לנושא ב-Pub/Sub שלא קיים, צינור עיבוד הנתונים של Dataflow זורק חריגה, והצינור נתקע כי הוא מנסה ליצור חיבור באופן רציף.
אם נושא Pub/Sub הנדרש כבר קיים, אפשר להוציא נתונים לנושא הזה.
מידע נוסף זמין במאמרים מידע על סנכרון שינויים בזרמי נתונים, יצירת חיבורים לסנכרון שינויים בזרמי נתונים באמצעות Dataflow ושיטות מומלצות לשימוש בסנכרון שינויים בזרמי נתונים.
הדרישות לגבי צינורות עיבוד נתונים
- מופע Spanner צריך להתקיים לפני שמריצים את צינור הנתונים.
- מסד הנתונים של Spanner צריך להתקיים לפני שמריצים את צינור הנתונים.
- מופע המטא-נתונים של Spanner צריך להתקיים לפני שמריצים את צינור העיבוד.
- מסד הנתונים של המטא-נתונים של Spanner צריך להתקיים לפני שמריצים את צינור העיבוד.
- סנכרון שינויים בזרמי נתונים של Spanner חייב להתקיים לפני שמריצים את צינור הנתונים.
- הנושא ב-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.
פרמטרים של תבניות
פרמטרים נדרשים
- spannerInstanceId: מכונת Spanner שממנה יתבצע קריאה של סנכרון שינויים בזרמי נתונים.
- spannerDatabase: מסד הנתונים של Spanner שממנו ייקראו סנכרון שינויים בזרמי נתונים.
- spannerMetadataInstanceId: מופע Spanner לשימוש בטבלת המטא-נתונים של מחבר הנתונים של סנכרון שינויים בזרמי נתונים.
- spannerMetadataDatabase: מסד הנתונים של Spanner שבו יש להשתמש עבור טבלת המטא-נתונים של מחבר סנכרון שינויים בזרמי נתונים.
- spannerChangeStreamName: השם של סנכרון שינויים בזרמי נתונים ב-Spanner שממנו רוצים לקרוא.
- pubsubTopic: נושא Pub/Sub לפלט של סנכרון שינויים בזרמי נתונים.
פרמטרים אופציונליים
- spannerProjectId: הפרויקט שממנו יקראו את נתוני סנכרון שינויים בזרמי נתונים. בפרויקט הזה נוצר גם טבלת המטא-נתונים של המחבר של סנכרון שינויים בזרמי נתונים. ברירת המחדל של הפרמטר הזה היא הפרויקט שבו צינור Dataflow פועל.
- spannerDatabaseRole: תפקיד מסד הנתונים ב-Spanner שבו יש להשתמש כשמריצים את התבנית. הפרמטר הזה נדרש רק אם משתמש ה-IAM שמריץ את התבנית הוא משתמש עם בקרת גישה ברמת דיוק גבוהה. לתפקיד במסד הנתונים צריכה להיות הרשאת
SELECTבסנכרון שינויים בזרמי נתונים והרשאתEXECUTEבפונקציית הקריאה של סנכרון שינויים בזרמי נתונים. מידע נוסף זמין במאמר בנושא בקרת גישה ברמת גרנולריות גבוהה לסנכרון שינויים בזרמי נתונים (https://cloud.google.com/spanner/docs/fgac-change-streams). - spannerMetadataTableName: שם טבלת המטא-נתונים של מחבר Spanner לשימוש בסנכרון שינויים בזרמי נתונים. אם לא מספקים את הטבלה, Spanner יוצר באופן אוטומטי את טבלת המטא-נתונים של מחבר הסטרימינג במהלך השינוי של צינור הנתונים. כשמעדכנים צינור קיים, צריך לציין את הפרמטר הזה. אין להשתמש בפרמטר הזה במקרים אחרים.
- startTimestamp: תאריך ושעת ההתחלה (https://tools.ietf.org/html/rfc3339), כולל, לשימוש בקריאת סנכרון שינויים בזרמי נתונים. לדוגמה, ex- 2021-10-12T07:20:50.52Z. ברירת המחדל היא חותמת הזמן של תחילת הצינור, כלומר השעה הנוכחית.
- endTimestamp: תאריך ושעת הסיום (https://tools.ietf.org/html/rfc3339), כולל, לשימוש בקריאת סנכרון שינויים בזרמי נתונים. לדוגמה, ex- 2021-10-12T07:20:50.52Z. ברירת המחדל היא זמן אינסופי בעתיד.
- spannerHost: נקודת הקצה של Cloud Spanner שאליה מתבצעת קריאה בתבנית. היא משמשת לבדיקה בלבד. לדוגמה,
https://spanner.googleapis.com. ברירת המחדל היא: https://spanner.googleapis.com. - outputDataFormat: הפורמט של הפלט. הפלט עטוף בהרבה PubsubMessages ונשלח לנושא Pub/Sub. הפורמטים המותרים הם JSON ו-AVRO. ברירת המחדל היא JSON.
- pubsubAPI: Pub/Sub API שמשמש להטמעה של צינור עיבוד הנתונים. ממשקי ה-API המותרים הם
pubsubioו-native_client. במספר קטן של שאילתות לשנייה (QPS), ל-native_clientיש זמן אחזור קצר יותר. במספר גדול של QPS, pubsubioמספק ביצועים טובים ויציבים יותר. ערך ברירת המחדל הואpubsubio. - pubsubProjectId: הפרויקט של נושא Pub/Sub. ברירת המחדל של הפרמטר הזה היא הפרויקט שבו צינור Dataflow פועל.
- rpcPriority: עדיפות הבקשה לשיחות Spanner. הערכים המותרים הם HIGH, MEDIUM ו-LOW. ברירת המחדל היא: HIGH).
- includeSpannerSource: קובע אם לכלול את מזהה מסד הנתונים ומזהה המופע של Spanner כדי לקרוא את סנכרון שינויים בזרמי נתונים בהודעת הפלט. ברירת המחדל היא: false.
- outputMessageMetadata: ערך המחרוזת של השדה המותאם אישית outputMessageMetadata בהודעת הפלט של pub/sub. ברירת המחדל היא ריק, והשדה outputMessageMetadata מאוכלס רק אם הערך הזה לא ריק. כשמזינים את הערך כאן, צריך להוסיף תו בריחה (escape) לכל התווים המיוחדים (למשל: מירכאות כפולות).
הפעלת התבנית
המסוף
- עוברים לדף Dataflow Create job from template (יצירת משימה מתבנית). כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימת האזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Cloud Spanner change streams to Pub/Sub template.
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
gcloud
במעטפת או בטרמינל, מריצים את התבנית:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Spanner_Change_Streams_to_PubSub \ --region REGION_NAME \ --parameters \ spannerInstanceId=SPANNER_INSTANCE_ID,\ spannerDatabase=SPANNER_DATABASE,\ spannerMetadataInstanceId=SPANNER_METADATA_INSTANCE_ID,\ spannerMetadataDatabase=SPANNER_METADATA_DATABASE,\ spannerChangeStreamName=SPANNER_CHANGE_STREAM,\ pubsubTopic=PUBSUB_TOPIC
מחליפים את מה שכתוב בשדות הבאים:
-
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: מזהה מכונת Spanner -
SPANNER_DATABASE: מסד נתונים של Spanner -
SPANNER_METADATA_INSTANCE_ID: מזהה מכונת מטא-נתונים של Spanner -
SPANNER_METADATA_DATABASE: מסד נתונים של מטא-נתונים ב-Spanner -
SPANNER_CHANGE_STREAM: Spanner change stream -
PUBSUB_TOPIC: נושא ה-Pub/Sub לפלט של סנכרון שינויים בזרמי נתונים
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", "pubsubTopic": "PUBSUB_TOPIC" }, "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Spanner_Change_Streams_to_PubSub", } }
מחליפים את מה שכתוב בשדות הבאים:
-
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: מזהה מכונת Spanner -
SPANNER_DATABASE: מסד נתונים של Spanner -
SPANNER_METADATA_INSTANCE_ID: מזהה מכונת מטא-נתונים של Spanner -
SPANNER_METADATA_DATABASE: מסד נתונים של מטא-נתונים ב-Spanner -
SPANNER_CHANGE_STREAM: Spanner change stream -
PUBSUB_TOPIC: נושא ה-Pub/Sub לפלט של סנכרון שינויים בזרמי נתונים