בדף הזה מוסבר איך להשתמש בתצוגות מפורטות של BigQuery ב-AlloyDB כדי לייבא נתונים מ-BigQuery, כולל טבלאות מקוריות, טבלאות חיצוניות של BigLake וטבלאות מנוהלות של Apache Iceberg. Iceberg הוא פורמט טבלה פתוח לניהול נתונים ולשיתוף שלהם.
במאמר הזה אנחנו מניחים שיש לכם אשכול AlloyDB ומכונה ראשית, וגם מערך נתונים וטבלאות ב-BigQuery. מידע נוסף זמין במאמרים יצירת מערכי נתונים ויצירה ושימוש בטבלאות.
לפני שמתחילים
- שולחים בקשה לקבלת גישה לתכונה BigQueryViews עבור האשכול ומחכים לקבלת אישור ההפעלה לפני שמבצעים את ההוראות בדף הזה.
- מומלץ לעיין בסוגי הנתונים הנתמכים ב-BigQuery ומיפוי העמודות.
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the AlloyDB, Compute Engine, Resource Manager, and BigQuery APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
מפעילים את Cloud APIs שנדרשים כדי ליצור מכונת AlloyDB ל-PostgreSQL ולהתחבר אליה.
בשלב אישור הפרויקט, לוחצים על הבא כדי לאשר את שם הפרויקט שרוצים לבצע בו שינויים.
בשלב Enable APIs (הפעלת ממשקי API), לוחצים על Enable (הפעלה) כדי להפעיל את ממשקי ה-API הבאים:
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
אם אתם מתכננים להגדיר קישוריות לרשת ב-AlloyDB באמצעות רשת VPC שנמצאת באותו פרויקט Google Cloud כמו AlloyDB, אתם צריכים להשתמש ב-Service Networking API.
אם אתם מתכננים להגדיר קישוריות לרשת ל-AlloyDB באמצעות רשת VPC שנמצאת בפרויקט אחר Google Cloud , תצטרכו להשתמש ב-Compute Engine API וב-Cloud Resource Manager API.
התפקידים הנדרשים
כדי להעניק הרשאת קריאה למערך הנתונים ב-BigQuery לחשבון השירות של אשכול AlloyDB, צריך את ההרשאות הבאות:
- BigQuery Data Viewer (צפייה בנתונים ב-BigQuery)
(
roles/bigquery.dataViewer) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.tables.getו-bigquery.tables.getData. כשמעניקים את התפקיד הזה בטבלה או בתצוגה, הוא מספק הרשאות לקריאת נתונים ומטא-נתונים מהטבלה או מהתצוגה. - משתמש בסשן קריאה ב-BigQuery (
roles/bigquery.readSessionUser) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.readsessions.createו-bigquery.readsessions.getData. התפקיד הזה מאפשר ליצור סשנים של קריאה ולהשתמש בהם.
הענקת גישה ל-AlloyDB למערך הנתונים ב-BigQuery
אחרי שמפעילים את התכונה BigQuery Views באשכול AlloyDB, צריך להעניק לחשבון השירות של אשכול AlloyDB גישה למערך הנתונים ב-BigQuery.
כדי להשתמש ב-ה-CLI של gcloud, אפשר להתקין ולהפעיל את Google Cloud CLI, או להשתמש ב-Cloud Shell.
פותחים את ה-CLI של gcloud. אם ה-CLI של gcloud לא מותקן, מתקינים ומפעילים את ה-CLI של gcloud, או משתמשים ב-Cloud Shell.
מריצים את הפקודה
gcloud beta alloydb clusters describe:gcloud beta alloydb clusters describe CLUSTER --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
CLUSTER: מזהה אשכול AlloyDB. -
REGION: המיקום של אשכול AlloyDB, לדוגמה,asia-east1,us-east1. כאן אפשר לראות את הרשימה המלאה של האזורים.
הפלט כולל את השדה
serviceAccountEmail, שהוא חשבון השירות של האשכול הזה.-
נותנים את ההרשאות הנדרשות. מידע נוסף זמין במאמר שליטה בגישה למשאבים באמצעות IAM.
אם לחשבון השירות של האשכול אין את ההרשאות הנדרשות, השגיאות הבאות יופיעו כשמריצים שאילתה בטבלת BigQuery:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
הגדרת התוסף
יוצרים את התוסף.
- מתחברים למכונת AlloyDB באמצעות לקוח psql לפי ההוראות במאמר חיבור לקוח psql למכונה. אפשר גם להשתמש ב-AlloyDB Studio. מידע נוסף זמין במאמר בנושא ניהול הנתונים באמצעות מסוף Google Cloud .
מריצים את הפקודה הבאה:
CREATE EXTENSION bigquery_fdw;
יוצרים שרת חיצוני כדי להגדיר את פרמטרי החיבור למערך הנתונים המרוחק ב-BigQuery.
CREATE SERVER BIGQUERY_SERVER_NAME FOREIGN DATA WRAPPER bigquery_fdw;מחליפים את מה שכתוב בשדות הבאים:
-
BIGQUERY_SERVER_NAME: מזהה ייחודי של השרת החיצוני. צריך להגדיר את זה פעם אחת במסד נתונים נתון. אפשר להחליף אתBIGQUERY_SERVER_NAMEבשם השרת.
-
מריצים את הפקודה
CREATE USER MAPPINGכדי ליצור את מיפוי המשתמשים. הפקודה הזו מציינת את פרטי הכניסה שבהם יש להשתמש כשמתחברים לשרת החיצוני.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם משתמש במסד נתונים או משתמש IAM שיש לו גישה לטבלה החיצונית. -
BIGQUERY_SERVER_NAME: מזהה ייחודי של השרת החיצוני שיצרתם.
-
מגדירים טבלאות חיצוניות שתואמות לטבלאות שרוצים לגשת אליהן ב-BigQuery באמצעות הפקודה
CREATE FOREIGN TABLE. הפקודה הזו מאפשרת להגדיר את המבנה של טבלה מרוחקת. הטבלה החיצונית יכולה לכלול את כל העמודות בטבלת המקור ב-BigQuery או רק חלק מהן.CREATE FOREIGN TABLE TABLENAME ( COLUMNX_NAME DATA_TYPE, COLUMNX_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME);מחליפים את מה שכתוב בשדות הבאים:
-
TABLENAME: השם של הטבלה החיצונית במסד הנתונים המקומי. -
COLUMNX_NAME: שם העמודה צריך להיות זהה לשם העמודה במקור BigQuery. -
DATA_TYPE: סוג הנתונים בעמודה. -
BIGQUERY_SERVER_NAME: מזהה ייחודי של השרת החיצוני שיצרתם. -
BIGQUERY_PROJECT_ID: מזהה הפרויקט שבו נמצא מערך הנתונים ב-BigQuery. -
BIGQUERY_DATASET_NAME: השם של מערך הנתונים ב-BigQuery של הטבלה. -
BIGQUERY_TABLE_NAME: השם של הטבלה ב-BigQuery.
אחרי שיוצרים את הטבלה החיצונית, אפשר להריץ שאילתות בטבלה הזו באותו אופן שבו מריצים שאילתות בכל טבלה ב-AlloyDB.
-
ייבוא נתונים
כדי לייבא נתוני BigQuery או נתוני Iceberg של BigLake ל-AlloyDB, פועלים לפי השלבים הבאים:
מזהים מקור נתונים קיים או יוצרים טבלה ב-BigQuery או טבלאות חדשות מנוהלות ב-Iceberg.
משתמשים ב-psql כדי ליצור את
local_tableעל ידי הרצת הפקודה הבאה:CREATE TABLE local_table AS (SELECT * from foreign_table);הפקודה הזו יוצרת עותק של טבלה ב-BigQuery בטבלת AlloyDB מקומית.
בהתאם לתהליך העבודה של האפליקציה, אפשר להגדיר את התוסף של PostgreSQLpg_cronכדי לרענן את טבלת AlloyDB במרווחי זמן קבועים.
הגדרת לוח זמנים לייבוא נתונים ל-AlloyDB
כדי להגדיר לוח זמנים לייבוא נתונים מ-BigQuery או מ-BigLake Iceberg ל-AlloyDB, פועלים לפי השלבים הבאים:
- הגדרת התוסף
bigquery_fdw - מפעילים את התוסף
pg_cronבמופע AlloyDB. מידע נוסף זמין במאמר בנושא תוספים נתמכים למסדי נתונים.- מגדירים את הדגל
alloydb.enable_pg_cronלערךon. מידע נוסף זמין במאמר בנושא alloydb.enable_pg_cron. - מגדירים את הדגל
cron.database_nameלשם מסד הנתונים שבו התקנתם את התוסףbigquery_fdwושבו אתם רוצים להריץ את שאילתות ה-SQL לייבוא. מידע נוסף זמין במאמר בנושא דגלים נתמכים של מסדי נתונים.
- מגדירים את הדגל
כדי לרענן מעת לעת עותק מקומי של הטבלה החיצונית, מריצים את הפקודות הבאות במסד הנתונים שבו התקנתם את התוסף
bigquery_fdw:CREATE EXTENSION pg_cron; SELECT cron.schedule(JOB_NAME, SCHEDULE, 'CREATE TABLE IF NOT EXISTS local_table_copy AS (SELECT * FROM foreign_table); DROP TABLE IF EXISTS local_table; ALTER TABLE local_table_copy RENAME TO local_table;');מחליפים את מה שכתוב בשדות הבאים:
-
JOB_NAME: שם המשימה. -
SCHEDULE: לוח הזמנים של המשימה.
מידע נוסף זמין במאמר מה זה pg_cron?
-
המאמרים הבאים
- מידע נוסף על תרחישי שימוש לגישה לנתוני BigQuery מ-AlloyDB
- גישה לנתוני BigQuery מ-AlloyDB
- מידע נוסף על סוגי נתונים נתמכים ב-BigQuery ועל מיפוי עמודות