ייצוא נתונים ל-AlloyDB (תהליך ETL הפוך)
תהליך עבודה של חילוץ, טרנספורמציה וטעינה (ETL) הפוך מ-BigQuery ל-AlloyDB ל-PostgreSQL מאפשר להעביר נתונים מ-BigQuery למסד נתונים של AlloyDB. אתם יכולים להשתמש בהצהרה EXPORT DATA כדי לעבד או לסנן את הנתונים באמצעות שאילתה לפני הייצוא, או לסנכרן את הטבלה ב-BigQuery עם AlloyDB כדי להעתיק או לשקף את הטבלה המלאה.
לפני שמתחילים
יוצרים אשכול ומכונה של AlloyDB, שכוללים מסד נתונים, סכימה וטבלה, כדי לקבל את הנתונים שיוצאו. לפני שמריצים את משימת הייצוא, צריך ליצור את הסכימה והטבלה של היעד.
מכונת היעד של AlloyDB צריכה להיות מכונה מסוג
PRIMARYבמצבREADY.יוצרים חיבור ל-BigQuery כדי להתחבר למכונה של AlloyDB. צריך לאמת את החיבור באמצעות שם משתמש וסיסמה. למשתמש במסד הנתונים שצוין בחיבור צריכות להיות הרשאות
INSERTבטבלת היעד והרשאותUSAGEבסכימת היעד.כדי להשתמש בתכונה הזו, צריך ליצור הזמנה של BigQuery ברמת Enterprise או Enterprise Plus. אפשר לייצא ל-AlloyDB רק הזמנות עם הקצאה מסוג
QUERY.להקצות תפקידים בניהול זהויות והרשאות גישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות לביצוע כל משימה במסמך הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לייצוא נתוני BigQuery ל-AlloyDB, בקשו מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
ייצוא נתונים מטבלה ב-BigQuery:
צפייה בנתוני BigQuery (
roles/bigquery.dataViewer) -
הפעלת משימת חילוץ:
משתמש BigQuery (
roles/bigquery.user) -
שימוש בחיבור ל-BigQuery:
BigQuery Connection User (
roles/bigquery.connectionUser) -
התחברות למכונה של AlloyDB:
לקוח AlloyDB (
roles/alloydb.client) – חשבון השירות של החיבור
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מגבלות
אפשר לייצא מ-AlloyDB רק בייצוא באצווה. אי אפשר להשתמש בשאילתות מתמשכות כדי לייצא ל-AlloyDB.
הנתונים שמיוצאים ל-AlloyDB מתווספים רק כשורות חדשות. תהליך הייצוא לא משנה או מוחק רשומות קיימות ב-AlloyDB. אם בטבלת היעד לא מוגדרים אילוצים של
PRIMARY KEYאוUNIQUE, ייצוא של אותם נתונים כמה פעמים יגרום לרשומות כפולות.כדי להבטיח את תקינות הנתונים, מומלץ להגדיר אילוצים מסוג
PRIMARY KEYאוUNIQUEבטבלאות AlloyDB. משימות ייצוא לא מבצעות פעולות upsert, שבהן רשומה קיימת מתעדכנת אם יש מפתח תואם ייחודי. אם שורה נכנסת כלשהי מפרה אילוץ שלPRIMARY KEYאוUNIQUE, משימת הייצוא כולה תיכשל.לא מומלץ להריץ כמה משימות
EXPORT DATAבו-זמנית לאותה טבלה ב-AlloyDB. פעולה כזו עלולה לגרום להתנהגות בלתי צפויה, כמו אובדן נתונים או כשלים במשימות. מומלץ לוודא שרק משימת ייצוא אחת כותבת לטבלה ספציפית בכל פעם.אפשר לבצע אימות רק באמצעות שם משתמש וסיסמה דרך חיבור ל-BigQuery.
אין תמיכה בסוגי הנתונים
ARRAY,BYTES,GEOGRAPHY,INTERVALו-STRUCTב-BigQuery.אם בהצהרת
SELECTב-BigQuery חסרות עמודות שקיימות בטבלת היעד ב-AlloyDB, העמודות האלה צריכות לאפשר ערכיNULLאו שצריכים להיות מוגדרים להן ערכי ברירת מחדל ב-AlloyDB. אם יש להם אילוץNOT NULLואין ערך ברירת מחדל, הייצוא ייכשל.אפשר לייצא ל-AlloyDB רק במהדורות BigQuery Enterprise או Enterprise Plus. אין תמיכה במהדורת BigQuery Standard ובמחשוב על פי דרישה. מידע נוסף זמין במאמר תכונות ניהול.
משימה ב-BigQuery, כמו משימת חילוץ ל-AlloyDB, נמשכת עד 6 שעות. אם אתם מייצאים קבצים גדולים מאוד, מומלץ לפצל את הייצוא לכמה משימות קטנות יותר.
שיקולים בקשר למיקום
כדי לייצא נתונים ל-AlloyDB, יש דרישות ספציפיות לגבי המיקום של מערך הנתונים ב-BigQuery והמכונה של AlloyDB:
ייצוא לאותו אזור: מכונה היעד של AlloyDB צריכה להיות באותו אזור של מערך הנתונים ב-BigQuery. Google Cloud לדוגמה, אפשר לייצא קבוצת נתונים ב-
us-east1רק למכונה של AlloyDB ב-us-east1.ייצוא למספר אזורים:
- אפשר לייצא מערכי נתונים במספר אזורים ב-
USרק למכונה של AlloyDB שנמצאת באזורus-central1. - אפשר לייצא מערכי נתונים במספר אזורים ב-
EUרק למכונה של AlloyDB שנמצאת באזורeurope-west4.
- אפשר לייצא מערכי נתונים במספר אזורים ב-
אי אפשר לייצא בין אזורים אחרים, חוץ מהשילובים שצוינו למעלה.
הגדרת ייצוא באמצעות alloydb_options
אתם יכולים להשתמש באפשרות alloydb_options כדי לציין את הסכימה, הטבלה ומספר החיבורים המקסימלי של AlloyDB. ההגדרה מבוטאת כמחרוזת JSON. רק הפרמטר table נדרש, כל שאר הפרמטרים הם אופציונליים.
כשמגדירים את הייצוא, לעמודות בהצהרה SELECT צריכים להיות כינויים שתואמים לשמות העמודות בטבלת היעד ב-AlloyDB.
EXPORT DATA WITH CONNECTION `PROJECT_ID.LOCATION.CONNECTION_ID` OPTIONS( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID", alloydb_options="""{ "schema": "SCHEMA_NAME", "table": "TABLE_NAME", "max_parallel_connections":MAX_CONNECTIONS}""" ) AS SELECT * FROM `mydataset.table1`;
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: שם הפרויקט ב- Google Cloud . -
LOCATION: המיקום של החיבור ומכונת היעד. -
CONNECTION_ID: השם של החיבור ל-BigQuery. -
CLUSTER_ID: השם של אשכול AlloyDB. -
INSTANCE_ID: השם של מכונת היעד ב-AlloyDB. -
SCHEMA_NAME(אופציונלי): השם של סכימת היעד ב-AlloyDB. אם לא מציינים סכימה, המערכת משתמשת בסכימה שמוגדרת כברירת מחדל למשתמש במסד הנתונים. -
TABLE_NAME: השם של טבלת יעדים קיימת ב-AlloyDB, בלי הקידומת של הסכימה. -
MAX_CONNECTIONS(אופציונלי): המספר המקסימלי של חיבורים מקבילים בו-זמנית בין ה-workers של BigQuery למכונה של AlloyDB. הגבלת החיבורים יכולה למנוע עומס יתר על מכונת היעד במהלך ייצוא של נתונים רבים.
ייצוא נתונים
אתם יכולים להשתמש בהצהרה EXPORT DATA כדי לייצא נתונים מטבלה ב-BigQuery לטבלה ב-AlloyDB.
בדוגמה הבאה, שדות נבחרים מטבלה בשם mydataset.table1 מיוצאים לטבלה ב-AlloyDB בשם my_target_table:
EXPORT DATA WITH CONNECTION `myproject.us-central1.my-alloydb-conn` OPTIONS ( format='ALLOYDB', uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance", alloydb_options="""{ "schema": "public", "table": "my_target_table" }""" ) AS SELECT col1 AS id, col2 AS name, col3 AS value FROM `mydataset.table1`;
סנכרון טבלה לייצוא
כדי להעתיק טבלאות מלאות או לשכפל אותן באופן אוטומטי בלי צורך בטרנספורמציות מבוססות-SQL, אתם יכולים לסנכרן את הטבלה ב-BigQuery ישירות עם AlloyDB. ההצהרה EXPORT DATA מאפשרת להשתמש בשאילתת SELECT כדי לעבד נתונים, לתת להם כינוי או לסנן אותם לפני שהם מועברים, אבל אפשר להשתמש בסנכרון טבלאות כדי להעביר טבלה ב-BigQuery באופן ישיר.
אפשר לסנכרן טבלאות במצבים הבאים:
- ייבוא חד-פעמי: יוצר עותק עצמאי של טבלה ב-BigQuery שניתן לכתוב בו ב-AlloyDB.
- סנכרון תקופתי (שיקוף): יוצר טבלה מקומית לקריאה בלבד ב-AlloyDB, שמתרעננת באופן אוטומטי מ-BigQuery לפי לוח זמנים מוגדר.
מידע נוסף זמין במאמר סנכרון נתוני BigQuery עם AlloyDB.
תמחור
כשמייצאים נתונים ל-AlloyDB באמצעות ההצהרה EXPORT DATA, החיוב מתבצע לפי תמחור המחשוב של קיבולת BigQuery.
אחרי ייצוא הנתונים, תחויבו על אחסון הנתונים ב-AlloyDB. למידע נוסף, קראו את המאמר תמחור של AlloyDB ל-PostgreSQL.