טעינת נתונים מ-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 Data Transfer Service, צריך לבקש מהאדמין להקצות לכם את תפקיד BigQuery Admin (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.
- בשדה מספר היציאה, מזינים את מספר היציאה של שרת מסד הנתונים של PostgreSQL.
- בשדה שם מסד הנתונים, מזינים את השם של מסד הנתונים של PostgreSQL.
- בשדה שם משתמש, מזינים את שם המשתמש של משתמש PostgreSQL שיוזם את החיבור למסד הנתונים של PostgreSQL.
- בשדה סיסמה, מזינים את הסיסמה של משתמש PostgreSQL שמפעיל את הקישור למסד הנתונים של PostgreSQL.
- בתפריט מצב TLS, בוחרים באחת מהאפשרויות. מידע נוסף על מצבי TLS זמין במאמר בנושא הגדרת TLS.
- בשדה Trusted PEM Certificate (אישור PEM מהימן), מזינים את האישור הציבורי של רשות האישורים (CA) שהנפיקה את אישור ה-TLS של שרת מסד הנתונים. מידע נוסף זמין במאמר אישור שרת מהימן (PEM).
- בשדה הפעלת מיפוי מדור קודם, בוחרים באפשרות true (ברירת מחדל) כדי להשתמש במיפוי מדור קודם של סוגי נתונים. בוחרים באפשרות false כדי להשתמש במיפוי המעודכן של סוגי הנתונים. אם אתם מבצעים העברה מצטברת, הערך הזה חייב להיות false. למידע נוסף על עדכוני מיפוי של סוגי נתונים, אפשר לעיין במאמר 16 במרץ 2027.
- בקטע סוג ההעברה, בוחרים באפשרות מלאה או מצטברת.
- אם בוחרים באפשרות מצטבר (תצוגה מקדימה) במצב כתיבה, בוחרים באפשרות הוספה או עדכון והוספה. מידע נוסף על מצבי הכתיבה השונים זמין במאמר בנושא העברות מלאות או מצטברות.
בקטע PostgreSQL objects to transfer (אובייקטים של PostgreSQL להעברה), לוחצים על Browse (עיון).
בוחרים את האובייקטים שרוצים להעביר למערך הנתונים של היעד ב-BigQuery. אפשר גם להזין באופן ידני את כל האובייקטים שרוצים לכלול בהעברת הנתונים בשדה הזה.
- אם בחרתם באפשרות הוספה כמצב הכתיבה המצטבר, אתם חייבים לבחור עמודה כעמודת סימן המים.
- אם בחרתם באפשרות Upsert (עדכון והוספה) כמצב הכתיבה המצטבר, אתם צריכים לבחור עמודה כעמודת סימן המים, ואז לבחור עמודה אחת או יותר כמפתח הראשי.
בקטע שם הגדרת ההעברה, בשדה שם מוצג, מזינים שם להעברה. שם ההעברה יכול להיות כל ערך שיאפשר לכם לזהות את ההעברה אם תצטרכו לשנות אותה בהמשך.
בקטע Schedule options:
- בוחרים את תדירות החזרה. אם בוחרים באפשרות שעות, ימים (ברירת מחדל), שבועות או חודשים, צריך לציין גם תדירות. אפשר גם לבחור באפשרות בהתאמה אישית כדי ליצור תדירות חזרה ספציפית יותר. אם בוחרים באפשרות על פי דרישה, העברת הנתונים תתבצע רק כשמפעילים אותה באופן ידני.
- אם רלוונטי, בוחרים באפשרות התחלה מיידית או התחלה בשעה מוגדרת ומזינים תאריך התחלה ומשך זמן הפעלה.
בקטע הגדרות יעד, בשדה קבוצת נתונים, בוחרים את קבוצת הנתונים שיצרתם לאחסון הנתונים, או לוחצים על יצירת קבוצת נתונים חדשה ויוצרים קבוצת נתונים לשימוש כקבוצת נתוני היעד.
אופציונלי: בקטע אפשרויות התראות, מבצעים את הפעולות הבאות:
- כדי להפעיל התראות באימייל, לוחצים על המתג התראות באימייל כדי להעביר אותו למצב מופעל. כשמפעילים את האפשרות הזו, האדמין של ההעברה מקבל התראה באימייל אם ההעברה נכשלת.
- כדי להגדיר התראות ב-Pub/Sub להעברה, לוחצים על המתג Pub/Sub notifications (התראות Pub/Sub) למצב מופעל. אפשר לבחור את שם הנושא או ללחוץ על יצירת נושא כדי ליצור נושא.
לוחצים על 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כדי להצפין נתונים ולאמת את ה-CA ואת שם המארח -
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