ייצוא נתונים ל-AlloyDB (תהליך ETL הפוך)
במאמר הזה מוסבר איך להגדיר תהליך עבודה של חילוץ, טרנספורמציה וטעינה הפוכה (reverse ETL) מ-BigQuery אל AlloyDB ל-PostgreSQL. אפשר לעשות את זה באמצעות ההנחיה EXPORT DATA.
אפשר גם לייצא נתונים ל-AlloyDB על ידי סנכרון הטבלה ב-BigQuery עם AlloyDB.
לפני שמתחילים
יוצרים אשכול ומכונה של AlloyDB, שכוללים מסד נתונים, סכימה וטבלה, כדי לקבל את הנתונים המיוצאים. לפני שמריצים את עבודת הייצוא, צריך לוודא שיש סכימה וטבלה של היעד.
מופע היעד של AlloyDB חייב להיות מופע
PRIMARYבמצבREADY.יוצרים חיבור ל-BigQuery כדי להתחבר למופע AlloyDB. החיבור צריך להיות מאומת באמצעות שם משתמש וסיסמה. למשתמש במסד הנתונים שצוין בחיבור צריכות להיות הרשאות
INSERTבטבלת היעד וUSAGEבסכימת היעד.כדי להשתמש בתכונה הזו, צריך ליצור הזמנה של רמת שירות BigQuery Enterprise או Enterprise Plus. ייצוא ל-AlloyDB נתמך רק להזמנות עם הקצאה של
QUERY.מעניקים תפקידים בניהול הזהויות והרשאות הגישה (IAM) שנותנים למשתמשים את ההרשאות הנדרשות לביצוע כל משימה במסמך הזה.
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות לייצוא נתוני BigQuery אל AlloyDB, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
ייצוא נתונים מטבלה ב-BigQuery:
BigQuery Data Viewer (
roles/bigquery.dataViewer) -
הפעלת משימת חילוץ:
BigQuery User (
roles/bigquery.user) -
שימוש בחיבור ל-BigQuery:
BigQuery Connection User (
roles/bigquery.connectionUser) -
מתחברים למופע AlloyDB:
AlloyDB Client (
roles/alloydb.client) – חשבון השירות של החיבור
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מגבלות
ייצוא ב-AlloyDB תומך רק בייצוא של קבוצות. אי אפשר להשתמש בשאילתות רציפות כדי לייצא ל-AlloyDB.
הנתונים שמיוצאים ל-AlloyDB מתווספים רק כשורה חדשה. תהליך הייצוא לא משנה או מוחק רשומות קיימות ב-AlloyDB. אם לא מוגדרים אילוצים של
PRIMARY KEYאוUNIQUEבטבלת היעד, ייצוא של אותם נתונים כמה פעמים יוביל לכפילויות ברשומות.כדי להבטיח תקינות נתונים, מומלץ להגדיר אילוצי
PRIMARY KEYאוUNIQUEבטבלאות AlloyDB. תהליכי ייצוא לא מבצעים פעולות של 'עדכון או הוספה', שבהן רשומה קיימת מתעדכנת אם יש מפתח ייחודי תואם. אם שורה נכנסת כלשהי מפרה את האילוץPRIMARY KEYאוUNIQUE, כל משימת הייצוא תיכשל.לא מומלץ להריץ כמה משימות
EXPORT DATAבו-זמנית באותה טבלה ב-AlloyDB. העלאה של מפתחות משוכפלים עלולה לגרום להתנהגות בלתי צפויה, כמו אובדן נתונים או כשלים בעבודות. מומלץ לוודא שרק משימת ייצוא אחת כותבת לטבלה מסוימת בכל פעם.המערכת תומכת רק באימות באמצעות שם משתמש וסיסמה דרך חיבור ל-BigQuery.
לא נתמכים סוגי הנתונים
ARRAY,BYTES,GEOGRAPHY,INTERVALו-STRUCTשל BigQuery.אם ההצהרה של BigQuery
SELECTלא כוללת עמודות שקיימות בטבלת היעד של AlloyDB, העמודות האלה צריכות לאפשר ערכיNULLאו להגדיר ערכי ברירת מחדל ב-AlloyDB. אם יש להם אילוץNOT NULLואין להם ערך ברירת מחדל, הייצוא ייכשל.ייצוא ל-AlloyDB נתמך רק במהדורות BigQuery Enterprise או Enterprise Plus. אין תמיכה במהדורת BigQuery Standard ובחישוב לפי דרישה. מידע נוסף זמין במאמר בנושא תכונות ניהול.
משך הזמן המקסימלי של משימת BigQuery, כמו משימת חילוץ ל-AlloyDB, הוא 6 שעות. לייצוא גדול מאוד, מומלץ לפצל את הייצוא לכמה משימות קטנות יותר.
שיקולים בקשר למיקום
לייצוא נתונים ל-AlloyDB יש דרישות ספציפיות לגבי המיקום של מערך הנתונים ב-BigQuery ושל מופע AlloyDB:
ייצוא באותו אזור: מופע היעד של AlloyDB צריך להיות באותו אזור בדיוק Google Cloud שבו נמצא מערך הנתונים של BigQuery. לדוגמה, אפשר לייצא קבוצת נתונים ב-
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(אופציונלי): המספר המקסימלי של חיבורים מקבילים בו-זמנית מעובדי 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.