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

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

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

  • המינוי ל-Pub/Sub צריך להתקיים לפני שמריצים את צינור הנתונים.
  • מקור ה-JDBC צריך להתקיים לפני שמריצים את צינור הנתונים.
  • נושא ה-dead-letter של הפלט ב-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. עוברים לדף Create job from template (יצירת משימה מתבנית) ב-Dataflow.
  2. כניסה לדף Create job from template
  3. בשדה שם המשימה, מזינים שם ייחודי למשימה.
  4. אופציונלי: בשדה Regional endpoint (נקודת קצה אזורית), בוחרים ערך מהתפריט הנפתח. אזור ברירת המחדל הוא us-central1.

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

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

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --template-file-gcs-location gs://dataflow-templates-REGION_NAME/VERSION/flex/ \
    --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

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