טעינת נתונים מ-PostgreSQL ל-BigQuery
כדי לתזמן העברות נתונים חוזרות מ-PostgreSQL ל-BigQuery, אתם יכולים ליצור הגדרת העברה שבה תציינו אילו אובייקטים של נתונים להעביר ובאיזו תדירות לתזמן את העברת הנתונים. אחרי שמגדירים את ההעברה, שירות העברת הנתונים ל-BigQuery מעביר את הנתונים העדכניים לטבלה ב-BigQuery לפי לוח הזמנים שצוין.
במאמר מבוא להעברות נתונים מ-PostgreSQL מוסבר איך פועלת העברה מ-PostgreSQL.
מגבלות
העברות נתונים של PostgreSQL כפופות למגבלות הבאות:
- המספר המקסימלי של העברות בו-זמניות למסד נתונים יחיד של PostgreSQL נקבע לפי המספר המקסימלי של חיבורים בו-זמניים שמסד הנתונים של PostgreSQL תומך בהם. מספר העבודות להעברה בו-זמנית צריך להיות מוגבל לערך שקטן ממספר החיבורים המקסימלי בו-זמנית שנתמך על ידי מסד הנתונים של PostgreSQL.
הגדרת העברה אחת יכולה לתמוך רק בהרצה אחת של העברת נתונים בזמן נתון. אם העברת נתונים שנייה מתוזמנת לפעול לפני שההעברה הראשונה מסתיימת, רק העברת הנתונים הראשונה תושלם, וכל העברת נתונים אחרת שחופפת להעברה הראשונה תדלג.
כדי להימנע מדילוג על העברות במסגרת הגדרת העברה יחידה, מומלץ להגדיר את תדירות החזרה כדי להגדיל את משך הזמן בין העברות של נתונים בכמות גדולה.
במהלך העברת נתונים, המחבר של PostgreSQL מזהה עמודות מפתח שנוספו לאינדקס וחולקו למחיצות כדי להעביר את הנתונים בקבוצות במקביל. לכן, כדי לשפר את הביצועים ולהפחית את שיעור השגיאות בהעברות הנתונים, מומלץ לציין עמודות של מפתחות ראשיים או להשתמש בעמודות שנוספו לאינדקס בטבלה. כמה נקודות שכדאי לחשוב עליהן:
- אם יש לכם אילוצים של מפתחות ראשיים או מפתחות נוספים לאינדקס, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- בהעברות נתונים של PostgreSQL שלא משתמשים בהן במפתח ראשי או בעמודות שנוספו לאינדקס, אי אפשר להעביר יותר מ-2,000,000 רשומות לכל טבלה.
- אם יש לכם אילוצים של מפתחות ראשיים או מפתחות נוספים לאינדקס, אפשר ליצור קבוצות מקבילות רק בעמודות מהסוגים הבאים:
מגבלות על העברה מצטברת
העברות מצטברות של PostgreSQL כפופות למגבלות הבאות:- אפשר לבחור רק
TIMESTAMPעמודות כעמודות של סימן מים. - הטמעה מצטברת נתמכת רק בנכסים עם עמודות סימן מים תקינות.
- הערכים בעמודה של סימן המים חייבים להיות בעלייה מונוטונית.
- העברות מצטברות לא יכולות לסנכרן פעולות מחיקה בטבלת המקור.
- הגדרת העברה אחת יכולה לתמוך רק בהעברה מצטברת או בהעברה מלאה.
- אי אפשר לעדכן אובייקטים ברשימה
assetאחרי ההפעלה הראשונה של ההטמעה המצטברת. - אי אפשר לשנות את מצב הכתיבה בהגדרות ההעברה אחרי ההפעלה הראשונה של ההעברה מצטברת.
- אי אפשר לשנות את העמודה של סימן המים או את המפתח הראשי אחרי ההפעלה הראשונה של הטמעת נתונים מצטברת.
- טבלת היעד ב-BigQuery מסודרת באשכולות באמצעות המפתח הראשי שסופק, והיא כפופה למגבלות של טבלאות מסודרות באשכולות.
כשמעדכנים הגדרת העברה קיימת למצב של העברה מצטברת בפעם הראשונה, העברת הנתונים הראשונה אחרי העדכון מעבירה את כל הנתונים הזמינים ממקור הנתונים. בכל העברת נתונים מצטברת שתתבצע לאחר מכן, יועברו רק השורות החדשות והמעודכנות ממקור הנתונים.
מומלץ ליצור אינדקסים בעמודת סימן המים. המחבר הזה משתמש בעמודות של סימן מים לסינון בהעברות מצטברות, ולכן יצירת אינדקס של העמודות האלה יכולה לשפר את הביצועים.
כשמבצעים העברה מצטברת, צריך להשתמש במיפוי המעודכן של סוגי הנתונים.
לפני שמתחילים
- יוצרים משתמש במסד הנתונים של PostgreSQL.
- מוודאים שביצעתם את כל הפעולות שנדרשות כדי להפעיל את שירות העברת נתונים ל-BigQuery.
- יוצרים מערך נתונים ב-BigQuery כדי לאחסן את הנתונים.
- מוודאים שיש לכם את התפקידים הנדרשים כדי לבצע את המשימות שמפורטות במאמר הזה.
התפקידים הנדרשים
אם אתם מתכוונים להגדיר התראות על הפעלת העברה ב-Pub/Sub, ודאו שיש לכם הרשאה לניהול זהויות והרשאות גישה (IAM) pubsub.topics.setIamPolicy. אם אתם מגדירים רק התראות באימייל, אתם לא צריכים הרשאות Pub/Sub. מידע נוסף זמין במאמר בנושא התראות על הפעלת שירות העברת נתונים ל-BigQuery.
כדי לקבל את ההרשאות שדרושות ליצירת העברת נתונים באמצעות שירות העברת הנתונים ל-BigQuery, בקשו מהאדמין להקצות לכם את התפקיד אדמין ב-BigQuery (roles/bigquery.admin) ב-IAM בפרויקט.
כדי לקרוא הסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
התפקיד המוגדר מראש הזה כולל את ההרשאות שנדרשות כדי ליצור העברת נתונים בשירות העברת הנתונים ל-BigQuery. כדי לראות בדיוק אילו הרשאות נדרשות, אפשר להרחיב את הקטע ההרשאות הנדרשות:
ההרשאות הנדרשות
כדי ליצור העברת נתונים באמצעות שירות העברת הנתונים ל-BigQuery, צריך את ההרשאות הבאות:
-
הרשאות של שירות העברת נתונים ל-BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
הרשאות ב-BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
יכול להיות שתקבלו את ההרשאות האלה באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.
מידע נוסף זמין במאמר מתן גישה ל-bigquery.admin.
חיבורים לרשת
אם אין כתובת IP ציבורית לחיבור למסד הנתונים של PostgreSQL, צריך להגדיר קובץ מצורף לרשת.
במסמכים הבאים מפורטות הוראות להגדרת הרשת הנדרשת:
- אם אתם מעבירים מ-Cloud SQL, קראו את המאמר הגדרת הגישה למכונה של Cloud SQL.
- אם אתם מעבירים מ-AWS, כדאי לעיין במאמר בנושא הגדרה של רשת ה-VPN של AWS-Google Cloud ומחבר הרשת.
- אם אתם מעבירים מ-Azure, קראו את המאמר הגדרת ה-VPN של Azure-Google Cloud ומחבר הרשת.
הגדרת העברת נתונים מ-PostgreSQL
כדי להוסיף נתוני PostgreSQL ל-BigQuery, צריך להגדיר העברה באמצעות אחת מהאפשרויות הבאות:
המסוף
נכנסים לדף העברות נתונים.
לוחצים על Create transfer.
בקטע סוג המקור, בשדה מקור, בוחרים באפשרות PostgreSQL.
בקטע Data source details (פרטים של מקור הנתונים), מבצעים את הפעולות הבאות:
- בשדה Network attachment, בוחרים חיבור רשת קיים או לוחצים על Create Network Attachment. למידע נוסף, קראו את הקטע חיבורי רשת במסמך הזה.
- בשדה מארח, מזינים את שם המארח או את כתובת ה-IP של שרת מסד הנתונים של PostgreSQL.
- בשדה Port number, מזינים את מספר היציאה של שרת מסד הנתונים ב-PostgreSQL.
- בשדה Database name, מזינים את השם של מסד הנתונים ב-PostgreSQL.
- בשדה Username, מזינים את שם המשתמש של המשתמש ב-PostgreSQL שיוזם את החיבור למסד הנתונים של PostgreSQL.
- בקטע סיסמה, מזינים את הסיסמה של משתמש PostgreSQL שמפעיל את הקישור למסד הנתונים של PostgreSQL.
- בקטע מצב TLS, בוחרים אפשרות מהתפריט. מידע נוסף על מצבי TLS זמין במאמר הגדרת TLS.
- בשדה Trusted PEM Certificate, מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
- בשדה Enable legacy mapping, בוחרים באפשרות true (ברירת המחדל) כדי להשתמש במיפוי סוגי הנתונים הקודם. בוחרים באפשרות false כדי להשתמש במיפוי המעודכן של סוגי הנתונים. אם מבצעים העברה מצטברת, הערך הזה חייב להיות false. למידע נוסף על עדכוני מיפוי של סוגי נתונים, אפשר לעיין במאמר בנושא 16 במרץ 2027.
- בקטע סוג ההעברה, בוחרים באפשרות מלא או מצטבר.
- אם בוחרים באפשרות מצטבר, בשדה מצב כתיבה בוחרים באפשרות הוספה או עדכון או הוספה (upsert). למידע נוסף על מצבי הכתיבה השונים, קראו את המאמר העברות מלאות או מצטברות.
בקטע PostgreSQL objects to transfer (אובייקטים של PostgreSQL להעברה), לוחצים על Browse (עיון).
בוחרים את האובייקטים שרוצים להעביר למערך הנתונים של היעד ב-BigQuery. אפשר גם להזין באופן ידני אובייקטים שרוצים לכלול בהעברת הנתונים בשדה הזה.
- אם בחרתם באפשרות הוספה כמצב הכתיבה המצטבר, אתם צריכים לבחור עמודה כעמודת סימן המים.
- אם בחרתם באפשרות עדכון או הוספה (upsert) כמצב הכתיבה המצטברת, אתם צריכים לבחור עמודה כעמודת סימן המים, ואז לבחור עמודה אחת או יותר כמפתח הראשי.
בקטע שם הגדרת ההעברה, בשדה שם לתצוגה, מזינים שם להעברה. שם ההעברה יכול להיות כל ערך שיעזור לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
בקטע Schedule options:
- בוחרים את תדירות החזרה. אם בוחרים באפשרות שעות, ימים (ברירת המחדל), שבועות או חודשים, צריך גם לציין תדירות. אפשר גם לבחור באפשרות בהתאמה אישית כדי ליצור תדירות חזרה ספציפית יותר. אם בוחרים באפשרות על פי דרישה, העברת הנתונים הזו מתבצעת רק כשמפעילים את ההעברה באופן ידני.
- אם רלוונטי, בוחרים באפשרות התחלה מיידית או התחלה בשעה מוגדרת ומזינים תאריך התחלה וזמן הפעלה.
בקטע הגדרות יעד, בוחרים באפשרות קבוצת נתונים את קבוצת הנתונים שיצרתם לאחסון הנתונים, או לוחצים על יצירת קבוצת נתונים חדשה ויוצרים קבוצת נתונים לשימוש כקבוצת נתוני היעד.
אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:
- כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל כדי להעביר אותו למצב מופעל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם ההעברה נכשלת.
- כדי להגדיר התראות על הפעלת Pub/Sub להעברה, לוחצים על המתג Pub/Sub notifications למצב מופעל. אפשר לבחור את שם הנושא או ללחוץ על יצירת נושא כדי ליצור נושא.
לוחצים על Save.
BQ
מזינים את הפקודה bq mk ומציינים את הדגל ליצירת העברה --transfer_config:
bq mk --transfer_config --project_id=PROJECT_ID --data_source=DATA_SOURCE --display_name=DISPLAY_NAME --target_dataset=DATASET --params='PARAMETERS'
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT_ID (אופציונלי): מזהה הפרויקט ב- Google Cloud .
אם לא מציינים פרויקט מסוים באמצעות הדגל
--project_id, המערכת משתמשת בפרויקט שמוגדר כברירת מחדל. - DATA_SOURCE: מקור הנתונים, שהוא
postgresql. - DISPLAY_NAME: השם המוצג של הגדרות העברת הנתונים. שם ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
- DATASET: קבוצת הנתונים שאליה רוצים להעביר את הנתונים בהגדרות ההעברה.
PARAMETERS: הפרמטרים של הגדרות ההעברה שנוצרו בפורמט JSON. לדוגמה:
--params='{"param":"param_value"}'. אלה הפרמטרים של העברה מ-PostgreSQL:-
connector.networkAttachment(אופציונלי): השם של חיבור הרשת כדי להתחבר למסד הנתונים של PostgreSQL. -
connector.database: השם של מסד הנתונים של PostgreSQL. -
connector.endpoint.host: שם המארח או כתובת ה-IP של מסד הנתונים. -
connector.endpoint.port: מספר היציאה של מסד הנתונים. -
connector.authentication.username: שם המשתמש של המשתמש במסד הנתונים. -
connector.authentication.password: הסיסמה של המשתמש במסד הנתונים. -
connector.tls.mode: מציינים תצורת TLS לשימוש בהעברה הזו:-
ENCRYPT_VERIFY_CA_AND_HOSTכדי להצפין נתונים, ולאמת את רשות האישורים ואת שם המארח -
ENCRYPT_VERIFY_CAלהצפנת נתונים ולאימות CA בלבד -
ENCRYPT_VERIFY_NONEלהצפנת נתונים בלבד DISABLEללא הצפנה או אימות
-
-
connector.tls.trustedServerCertificate: (אופציונלי) מציינים אישור אחד או יותר בפורמט PEM. חובה רק אם הערך שלconnector.tls.modeהואENCRYPT_VERIFY_CA_AND_HOSTאוENCRYPT_VERIFY_CA. -
ingestionType: מצייניםfullאוincremental. העברות מצטברות נתמכות בגרסת Preview. מידע נוסף זמין במאמר העברות מלאות או מצטברות. -
writeMode: מצייניםWRITE_MODE_APPENDאוWRITE_MODE_UPSERT. -
watermarkColumns: הגדרת עמודות בטבלה כעמודות של סימני מים. חובה למלא את השדה הזה בהעברות מצטברות. -
primaryKeys: מציינים עמודות בטבלה כמפתחות ראשיים. חובה למלא את השדה הזה בהעברות מצטברות. -
connector.legacyMapping: הערךtrue(ברירת מחדל) משמש לשימוש במיפוי סוגי הנתונים מדור קודם. מגדירים את הערךfalseכדי להשתמש במיפוי המעודכן של סוגי הנתונים. אם מבצעים העברה מצטברת, הערך הזה חייב להיותfalse. מידע נוסף על עדכוני מיפוי סוגי הנתונים זמין במאמר בנושא 16 במרץ 2027. -
assets: רשימה של שמות הטבלאות ב-PostgreSQL שיועברו ממסד הנתונים של PostgreSQL כחלק מההעברה.
-
לדוגמה, הפקודה הבאה יוצרת העברה של PostgreSQL בשם My Transfer:
bq mk --transfer_config --target_dataset=mydataset --data_source=postgresql --display_name='My Transfer' --params='{"assets":["DB1/PUBLIC/DEPARTMENT","DB1/PUBLIC/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.database":"DB1", "connector.endpoint.host":"192.168.0.1", "connector.endpoint.port":5432, "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']], "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
כשמציינים כמה נכסים במהלך העברה מצטברת, הערכים של השדות watermarkColumns ו-primaryKeys תואמים למיקום של הערכים בשדה assets. בדוגמה הבאה, dep_id תואם לטבלה DB1/USER1/DEPARTMENT, ו-report_by ו-report_title תואמים לטבלה DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
API
משתמשים ב-projects.locations.transferConfigs.create method ומספקים מופע של TransferConfig resource.
כדי להריץ העברת נתונים באופן ידני מחוץ ללוח הזמנים הרגיל, אפשר להתחיל הרצת מילוי חוסרים.
פתרון בעיות
אם נתקלתם בבעיות בהגדרת העברת הנתונים, כדאי לעיין במאמר בעיות בהעברה של PostgreSQL.
העברת מטא-נתונים
אפשר גם להשתמש במחבר PostgreSQL כדי להעביר מטא-נתונים אל Knowledge Catalog. מידע נוסף זמין במאמר טעינת מטא-נתונים של PostgreSQL ל-Knowledge Catalog.המאמרים הבאים
- סקירה כללית על שירות העברת הנתונים ל-BigQuery
- מידע ולמידה על ניהול העברות, כולל קבלת מידע על הגדרת העברה, הצגת רשימה של הגדרות העברה וצפייה בהיסטוריית ההרצה של העברה.
- איך טוענים נתונים באמצעות פעולות של BigQuery Omni