תבנית Pub/Sub ל-Java Database Connectivity ‏ (JDBC)

תבנית Pub/Sub to Java Database Connectivity ‏ (JDBC) היא צינור עיבוד נתונים של סטרימינג שקולט נתונים ממנוי Pub/Sub קיים כמחרוזות JSON, וכותב את הרשומות שמתקבלות ל-JDBC.

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

  • המינוי ל-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.
  • מקור ה-JDBC צריך להתקיים לפני שמריצים את צינור הנתונים.
  • נושא להודעות ללא מוצא של הפלט ב-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.

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

פרמטר תיאור
driverClassName שם המחלקה של מנהל ההתקן של JDBC. לדוגמה, com.mysql.jdbc.Driver.
connectionUrl מחרוזת כתובת ה-URL של חיבור JDBC. לדוגמה, jdbc:mysql://some-host:3306/sampledb. אפשר להעביר את הערך הזה כמחרוזת שמוצפנת באמצעות מפתח Cloud KMS ואז מקודדת ב-Base64. מסירים את התווים של הרווחים מהמחרוזת שמקודדת ב-Base64.
driverJars נתיבי Cloud Storage מופרדים בפסיקים למנהלי התקנים של JDBC. לדוגמה, gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar.
username אופציונלי: שם המשתמש שישמש לחיבור JDBC. אפשר להעביר את הערך הזה מוצפן באמצעות מפתח Cloud KMS כמחרוזת בקידוד Base64.
password אופציונלי: הסיסמה שתשמש לחיבור JDBC. אפשר להעביר את הערך הזה מוצפן באמצעות מפתח Cloud KMS כמחרוזת בקידוד Base64.
connectionProperties אופציונלי: מחרוזת מאפיינים לשימוש בחיבור JDBC. הפורמט של המחרוזת צריך להיות [propertyName=property;]*. לדוגמה, unicode=true;characterEncoding=UTF-8.
statement הצהרה להרצה מול מסד הנתונים. בהצהרה צריך לציין את שמות העמודות בטבלה, בכל סדר שהוא. רק הערכים של שמות העמודות שצוינו נקראים מ-JSON ומוסיפים אותם להצהרה. לדוגמה, INSERT INTO tableName (column1, column2) VALUES (?,?)
inputSubscription מינוי הקלט של Pub/Sub שממנו יתבצע הקריאה, בפורמט projects/<project>/subscriptions/<subscription>.
outputDeadletterTopic נושא Pub/Sub להעברת הודעות שלא ניתן למסור. לדוגמה, projects/<project-id>/topics/<topic-name>.
KMSEncryptionKey אופציונלי: מפתח הצפנה של Cloud KMS לפענוח שם המשתמש, הסיסמה ומחרוזת החיבור. אם מועבר מפתח Cloud KMS, צריך להעביר את שם המשתמש, הסיסמה ומחרוזת החיבור כשהם מוצפנים.
extraFilesToStage נתיבים ב-Cloud Storage או סודות ב-Secret Manager שמופרדים בפסיקים, לקבצים שרוצים להכין להעברה בעובד. הקבצים האלה יישמרו בספרייה /extra_files בכל עובד. לדוגמה, gs://<my-bucket>/file.txt,projects/<project-id>/secrets/<secret-id>/versions/<version-id>.

הפעלת התבנית

המסוף

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

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

  5. בתפריט הנפתח Dataflow template (תבנית של העברת נתונים), בוחרים באפשרות the Pub/Sub to JDBC template.
  6. בשדות הפרמטרים שמופיעים, מזינים את ערכי הפרמטרים.
  7. לוחצים על הפעלת העבודה.

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/Pubsub_to_Jdbc \
    --region REGION_NAME \
    --parameters \
driverClassName=DRIVER_CLASS_NAME,\
connectionUrl=JDBC_CONNECTION_URL,\
driverJars=DRIVER_PATHS,\
username=CONNECTION_USERNAME,\
password=CONNECTION_PASSWORD,\
connectionProperties=CONNECTION_PROPERTIES,\
statement=SQL_STATEMENT,\
inputSubscription=INPUT_SUBSCRIPTION,\
outputDeadletterTopic=OUTPUT_DEADLETTER_TOPIC,\
KMSEncryptionKey=KMS_ENCRYPTION_KEY

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

  • 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
  • DRIVER_CLASS_NAME: שם המחלקה של ה-driver
  • JDBC_CONNECTION_URL: כתובת ה-URL של חיבור JDBC
  • DRIVER_PATHS: נתיבי Cloud Storage של מנהלי התקנים של JDBC, מופרדים באמצעות פסיקים
  • CONNECTION_USERNAME: שם המשתמש של חיבור ה-JDBC
  • CONNECTION_PASSWORD: הסיסמה לחיבור JDBC
  • CONNECTION_PROPERTIES: מאפייני החיבור של JDBC, אם יש צורך
  • SQL_STATEMENT: הצהרת ה-SQL שתופעל על מסד הנתונים
  • INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub שממנו יתבצע קריאה
  • OUTPUT_DEADLETTER_TOPIC: Pub/Sub להעברת הודעות שלא ניתן למסור
  • KMS_ENCRYPTION_KEY: מפתח ההצפנה של Cloud KMS

API

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

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "jobName": "JOB_NAME",
   "parameters": {
       "driverClassName": "DRIVER_CLASS_NAME",
       "connectionUrl": "JDBC_CONNECTION_URL",
       "driverJars": "DRIVER_PATHS",
       "username": "CONNECTION_USERNAME",
       "password": "CONNECTION_PASSWORD",
       "connectionProperties": "CONNECTION_PROPERTIES",
       "statement": "SQL_STATEMENT",
       "inputSubscription": "INPUT_SUBSCRIPTION",
       "outputDeadletterTopic": "OUTPUT_DEADLETTER_TOPIC",
       "KMSEncryptionKey":"KMS_ENCRYPTION_KEY"
   },
   "environment": { "zone": "us-central1-f" },
}

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

  • 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
  • DRIVER_CLASS_NAME: שם המחלקה של ה-driver
  • JDBC_CONNECTION_URL: כתובת ה-URL של חיבור JDBC
  • DRIVER_PATHS: נתיבי Cloud Storage של מנהלי התקנים של JDBC, מופרדים באמצעות פסיקים
  • CONNECTION_USERNAME: שם המשתמש של חיבור ה-JDBC
  • CONNECTION_PASSWORD: הסיסמה לחיבור JDBC
  • CONNECTION_PROPERTIES: מאפייני החיבור של JDBC, אם יש צורך
  • SQL_STATEMENT: הצהרת ה-SQL שתופעל על מסד הנתונים
  • INPUT_SUBSCRIPTION: מינוי הקלט של Pub/Sub שממנו יתבצע קריאה
  • OUTPUT_DEADLETTER_TOPIC: Pub/Sub להעברת הודעות שלא ניתן למסור
  • KMS_ENCRYPTION_KEY: מפתח ההצפנה של Cloud KMS

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