בדף הזה מוסבר איך להשתמש ב-Lakehouse Federation כדי לגשת לנתונים שמאוחסנים או נגישים באמצעות BigQuery מממשק AlloyDB ל-PostgreSQL.
עטיפת הנתונים החיצוניים תומכת במגוון רחב של מקורות מידע ב-BigQuery, ומאפשרת לכם להריץ שאילתות על המקורות הבאים:
- טבלאות מבוססות LookML ותצוגות מהותיות
- תצוגות מפורטות(תצוגות לוגיות) ב-BigQuery
- טבלאות חיצוניות של BigLake, כולל טבלאות של Apache Iceberg מנוהלות
- טבלאות חיצוניות רגילות
השילוב הזה מאפשר לכם להתייחס למערכי נתונים ב-BigQuery כאל טבלאות מקומיות בסביבת PostgreSQL, כדי לבצע ניתוח נתונים בין מנועים. מידע נוסף זמין במאמר סקירה כללית על Lakehouse Federation ב-AlloyDB.
במאמר הזה אנחנו מניחים שיש לכם אשכול AlloyDB ומכונה ראשית, וגם מערך נתונים וטבלאות ב-BigQuery. מידע נוסף זמין במאמרים יצירת מערכי נתונים ויצירה ושימוש בטבלאות.
לפני שמתחילים
- מוודאים שדגל the
bigquery_fdw.enabledמוגדר במכונת AlloyDB ל-PostgreSQL. - מומלץ לעיין בסוגי הנתונים הנתמכים ב-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
- BigQuery API
אם אתם מתכננים להגדיר קישוריות לרשת ב-AlloyDB באמצעות רשת VPC שנמצאת באותו פרויקט Google Cloud כמו AlloyDB, אתם צריכים להשתמש ב-Service Networking API.
אם אתם מתכננים להגדיר קישוריות לרשת ל-AlloyDB באמצעות רשת VPC שנמצאת בפרויקט אחר Google Cloud , תצטרכו להשתמש ב-Compute Engine API וב-Cloud Resource Manager API.
התפקידים הנדרשים
כדי להעניק לחשבון השירות של אשכול AlloyDB הרשאת קריאה למערך הנתונים ב-BigQuery, אתם צריכים את ההרשאות הבאות. מידע נוסף זמין במאמר בנושא הענקת גישה ל-AlloyDB למערך הנתונים ב-BigQuery.
- BigQuery Data Viewer (צפייה בנתונים ב-BigQuery)
(
roles/bigquery.dataViewer) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.tables.getו-bigquery.tables.getData. כשמעניקים את התפקיד הזה בטבלה או בתצוגה, הוא מספק הרשאות לקריאת נתונים ומטא-נתונים מהטבלה או מהתצוגה. - משתמש בסשן קריאה ב-BigQuery (
roles/bigquery.readSessionUser) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.readsessions.createו-bigquery.readsessions.getData. התפקיד הזה מאפשר ליצור סשנים של קריאה ולהשתמש בהם. - BigQuery Job User (
roles/bigquery.jobUser) או כל תפקיד בהתאמה אישית עם הרשאותbigquery.jobs.create. התפקיד הזה מעניק הרשאות להפעלת משימות, כולל שאילתות, בפרויקט באמצעות BigQuery API. אפשר להעניק את התפקיד הזה רק למשאבים של מנהל המשאבים (פרויקטים, תיקיות וארגונים). - התפקיד 'צפייה באובייקט אחסון' (
roles/storage.objectViewer) או כל תפקיד בהתאמה אישית עם ההרשאותstorage.objects.get. ההרשאות שניתנות מאפשרות גישה לטבלאות חיצוניות ב-BigQuery. צריך להעניק אותה ברמת הפרויקט או הקטגוריה.
הענקת גישה ל-AlloyDB למערך הנתונים ב-BigQuery
אחרי שמפעילים את התכונה Lakehouse Federation באשכול AlloyDB, צריך להעניק לחשבון השירות של אשכול AlloyDB גישה למערך הנתונים ב-BigQuery.
מסוף Google Cloud מעניק באופן אוטומטי את ההרשאות הנדרשות לחשבון השירות של האשכול כשמחברים טבלה ב-BigQuery באמצעות AlloyDB Studio.
כדי לתת גישה באמצעות ה-CLI של gcloud:
gcloud
כדי להשתמש ב-ה-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, שהוא חשבון השירות של האשכול הזה. אפשר גם למצוא את חשבון השירות בדף Cluster overview.-
נותנים את ההרשאות הנדרשות. מידע נוסף זמין במאמר שליטה בגישה למשאבים באמצעות IAM.
אם לחשבון השירות של האשכול אין את ההרשאות הנדרשות, השגיאות הבאות יופיעו כשמריצים שאילתה בטבלת BigQuery:
The user does not have bigquery.readsessions.create permissionsPermission bigquery.tables.get denied on tablePermission bigquery.tables.getData denied on table
הגדרת התוסף
כדי להגדיר את התוסף, מבצעים את השלבים הבאים:
המסוף
עוברים לדף Clusters.
לוחצים על המזהה של האשכול שבו רוצים להשתמש.
בתפריט הניווט, לוחצים על AlloyDB Studio.
מתחברים למסד הנתונים.
בחלונית Explorer, מרחיבים את הסכימה הרלוונטית.
לוחצים על התפריט פעולות לצד טבלאות ב-BigQuery ואז על חיבור טבלה ב-BigQuery.
בחלונית קישור טבלה ב-BigQuery, בוחרים פרויקט מקור, מערך נתונים מקור וטבלה.
בטבלה בדיקה ובחירה של עמודות מוצגות העמודות מהטבלה שנבחרה. בוחרים את העמודות שרוצים למפות.
בשדה Table name (שם הטבלה), מזינים שם לטבלה החיצונית.
אופציונלי: לוחצים על הצגת פקודת SQL כדי לראות את הפקודה שנוצרה.
לוחצים על קישור טבלה. תיבת דו-שיח תציג את ההתקדמות. אחרי שהתהליך מסתיים, אפשר להריץ שאילתות בטבלה כמו בכל טבלה אחרת ב-AlloyDB.
psql
יוצרים את התוסף.
- מתחברים למכונת 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כדי ליצור את מיפוי המשתמשים, שממפה משתמש מקומי ב-PostgreSQL שרוצים לקשר לשרת החיצוני.CREATE USER MAPPING FOR USERNAME SERVER BIGQUERY_SERVER_NAME ;מחליפים את מה שכתוב בשדות הבאים:
-
USERNAME: שם משתמש במסד נתונים או משתמש IAM שיש לו גישה לטבלה החיצונית. -
BIGQUERY_SERVER_NAME: מזהה ייחודי של השרת החיצוני שיצרתם.
-
מגדירים טבלאות חיצוניות שתואמות לטבלאות שרוצים לגשת אליהן ב-BigQuery באמצעות הפקודה
CREATE FOREIGN TABLE. הפקודה הזו מאפשרת להגדיר את המבנה של טבלה מרוחקת. בטבלה החיצונית יכולות להיות כל העמודות או קבוצת משנה של העמודות בטבלת המקור ב-BigQuery.CREATE FOREIGN TABLE TABLENAME ( COLUMN1_NAME DATA_TYPE, COLUMN2_NAME DATA_TYPE, ... ) SERVER BIGQUERY_SERVER_NAME OPTIONS (project BIGQUERY_PROJECT_ID, dataset BIGQUERY_DATASET_NAME, table BIGQUERY_TABLE_NAME [, mode EXECUTION_MODE]);מחליפים את מה שכתוב בשדות הבאים:
-
TABLENAME: השם של הטבלה החיצונית במסד הנתונים המקומי של AlloyDB. -
COLUMNX_NAME: שם העמודה ב-AlloyDB. שם העמודה צריך להיות זהה בדיוק לשם העמודה התואמת בטבלת המקור ב-BigQuery. הסמלXמציין שאפשר ליצור את הטבלה עם כמה עמודות. השם צריך להיות זהה גם לרישיות של האותיות בעמודה ב-BigQuery. אם שם העמודה ב-BigQuery מכיל אותיות רישיות (לדוגמה,employeeID), צריך להוסיף מרכאות כפולות למזהה ב-AlloyDB (לדוגמה,"employeeID") כדי לשמור על אותיות רישיות או על שילוב של אותיות רישיות וקטנות. -
DATA_TYPE: סוג הנתונים בעמודה. -
BIGQUERY_SERVER_NAME: מזהה ייחודי של השרת החיצוני שיצרתם. -
BIGQUERY_PROJECT_ID: מזהה הפרויקט שבו נמצא מערך הנתונים ב-BigQuery. -
BIGQUERY_DATASET_NAME: השם של מערך הנתונים ב-BigQuery של הטבלה. -
BIGQUERY_TABLE_NAME: שם הטבלה ב-BigQuery. -
EXECUTION_MODE: אופציונלי. האפשרותmodeיכולה להיותqueryכדי להשתמש ב-BigQuery API לשאילתות מורכבות,storageכדי להשתמש ב-BigQuery Storage API לקריאות מהירות יותר של נתונים בכמות גדולה, אוautoכדי לבחור באופן אוטומטי בין המצבים.autoהיא ברירת המחדל. מידע נוסף זמין במאמר בנושא מצבי הפעלה של BigQuery foreign data wrapper.
אחרי שיוצרים את הטבלה החיצונית, אפשר להריץ שאילתות בטבלה הזו באותו אופן שבו מריצים שאילתות בכל טבלה ב-AlloyDB.
-
מצבי הפעלה של BigQuery foreign data wrapper
מצב ההפעלה קובע איך AlloyDB ל-PostgreSQL מתקשר עם BigQuery כדי לאחזר נתונים. ה-wrapper של נתונים חיצוניים ב-BigQuery תומך בשני מצבי ביצוע: query ו-storage. חשוב לבחור את המצב הנכון, כי לכל מצב יש מאפייני ביצועים ומחירים שונים. מידע נוסף זמין במאמר תמחור ב-BigQuery.
מצב שאילתה
במצב הזה נעשה שימוש ב-BigQuery API כדי לאחזר נתונים מ-BigQuery. הוא משתמש במנוע החישוב של BigQuery כדי להריץ שאילתות מורכבות על ידי העברת מסננים וצבירות למטה. כלומר, סעיפי WHERE, סעיפי GROUP BY וצבירות מופעלים ב-BigQuery לפני שהנתונים נשלחים בחזרה ל-PostgreSQL. במצב הזה אפשר גם לשלוח שאילתות לגבי תצוגות וטבלאות חיצוניות ב-BigQuery.
ממשק ה-API הזה מספק תגובות מובנות של שורות עם מספור עמודים שמתאימות למערכי תוצאות קטנים, ולכן לקריאת מערכי נתונים גדולים יש מגבלות על קצב העברת הנתונים וזמני אחזור ארוכים יותר בהשוואה לחלופה של BigQuery Storage API שמועברת בסטרימינג.
מצב אחסון
במצב הזה נעשה שימוש ב-BigQuery Storage API כדי לאחזר נתונים מ-BigQuery. הוא מאפשר קריאות תפוקה גבוהה על ידי שליחת נתונים מובנים דרך החוט בפורמט סריאליזציה בינארי. זהו המצב המועדף לסריקת טבלאות גדולות ב-BigQuery.
עם זאת, יש כמה מגבלות למצב הזה. לא כל פעולות ה-SQL המורכבות יכולות להידחף אל BigQuery Storage API. לדוגמה, אי אפשר להעביר צבירות ל-BigQuery, והן חייבות להתבצע ב-AlloyDB. במצב הזה אי אפשר גם להריץ שאילתות על תצוגות ב-BigQuery ועל טבלאות חיצוניות.
מצב אוטומטי
מצב ברירת המחדל הוא auto אם לא מגדירים את המצב בפקודה CREATE FOREIGN TABLE.
כשמשתמשים במצב auto, AlloyDB בוחר את ה-API הבסיסי כדי לאזן בין הביצועים ולמקסם את פעולות ה-SQL שמועברות ל-BigQuery.
המאמרים הבאים
- סנכרון נתונים מ-BigQuery ומ-Iceberg אל AlloyDB
- מידע נוסף על סוגי נתונים נתמכים ב-BigQuery ועל מיפוי עמודות