תבנית סנכרון שינויים בזרמי נתונים של Spanner ל-Pub/Sub היא פייפליין בסטרימינג שמעביר בסטרימינג רשומות של שינויים בנתונים של Spanner וכותב אותן לנושאים ב-Pub/Sub באמצעות Dataflow Portable Runner.
כדי להוציא את הנתונים לנושא חדש ב-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 change streams שבה רוצים להשתמש. אם לא מספקים את הטבלה, מערכת 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) לכל התווים המיוחדים (למשל: מירכאות כפולות).
- useSpannerEmulatorHost: האם להשתמש במארח Spanner שהוגדר ב-getSpannerHost() כמארח האמולטור. ברירת המחדל היא false.
- spannerChangeStreamTvfNameList: רשימה של שמות של Spanner Change Stream TVF, מופרדים באמצעות נקודה-פסיק, שאותם רוצים לשאול ולאחד. ברירת המחדל היא ריק.
הרצת התבנית
המסוף
- עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow. כניסה לדף Create job from template
- בשדה שם המשימה, מזינים שם ייחודי למשימה.
- אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא
us-central1.רשימה של אזורים שבהם אפשר להריץ משימת Dataflow מופיעה במאמר מיקומי Dataflow.
- בתפריט הנפתח Dataflow template (תבנית Dataflow), בוחרים בתבנית Cloud Spanner change streams to Pub/Sub (סנכרון שינויים בזרמי נתונים מ-Cloud Spanner ל-Pub/Sub).
- בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
- לוחצים על הפעלת העבודה.
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 לפלט של סנכרון שינויים בזרמי נתונים
המאמרים הבאים
- מידע נוסף על תבניות Dataflow
- כאן אפשר לעיין ברשימת התבניות ש-Google סיפקה.