כדי לשלוח שאילתות על נתוני ניתוח בזמן אמת ב-BigQuery ישירות מ-AlloyDB ל-PostgreSQL בלי להריץ העברות של חילוץ, טרנספורמציה וטעינה (ETL), אתם יכולים להגדיר איחוד של Lakehouse. איחוד של Lakehouse מאחד את מסד הנתונים התפעולי ואת מחסן הנתונים לצורכי ניתוח, כדי שתוכלו לתמוך בניתוח בזמן אמת ובאפליקציות אינטראקטיביות בלי לתחזק פייפליינים נפרדים. מידע נוסף זמין במאמר סקירה כללית על גישה לנתונים בזמן אמת.
בעזרת השילוב הזה, אתם יכולים להריץ שאילתות ב-AlloyDB שמאפשרות גישה לנתוני BigQuery בזמן אמת, ולצרף טבלאות תפעוליות ב-AlloyDB לטבלאות חיצוניות שמפנות למערכי הנתונים שלכם ב-BigQuery.
לפני שמגדירים את האיחוד של Lakehouse, צריך אשכול ומכונה ראשית של AlloyDB, וגם מערך נתונים וטבלאות של BigQuery. מידע נוסף זמין במאמרים יצירת מערכי נתונים ויצירה ושימוש בטבלאות.
לפני שמתחילים
- מפעילים את הדגל
bigquery_fdw.enabledבמכונה של AlloyDB ל-PostgreSQL. - חשוב להכיר את סוגי הנתונים הנתמכים.
- נכנסים לחשבון 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). 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, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
מפעילים את ממשקי ה-Cloud API שנדרשים כדי ליצור את AlloyDB ולהתחבר אליו.
בשלב Confirm project, לוחצים על Next כדי לאשר את שם הפרויקט שבו רוצים לבצע שינויים.
בשלב Enable APIs, לוחצים על Enable כדי להפעיל את ממשקי ה-API הבאים:
- AlloyDB API
- Compute Engine API
- Cloud Resource Manager API
- Service Networking API
- BigQuery Storage API
- BigQuery API
צריך את Service Networking API אם מתכננים להגדיר קישוריות רשת ל-AlloyDB באמצעות רשת VPC שנמצאת באותו פרויקט ב- Google Cloud כמו AlloyDB.
אם אתם מתכננים להגדיר קישוריות רשת ל-AlloyDB באמצעות רשת VPC שנמצאת בפרויקט אחר ב- Google Cloud , אתם צריכים את Compute Engine API ואת Cloud Resource Manager API.
התפקידים הנדרשים
כדי לתת לחשבון השירות של אשכול AlloyDB גישת קריאה למערך הנתונים ב-BigQuery, צריך את ההרשאות הבאות: מידע נוסף זמין במאמר מתן גישה ל-AlloyDB למערך הנתונים של BigQuery.
- צפייה בנתונים ב-BigQuery (
roles/bigquery.dataViewer) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.tables.getו-bigquery.tables.getData. כשמקצים את התפקיד הזה לטבלה או לתצוגה, הוא נותן הרשאות לקרוא נתונים ומטא-נתונים מהטבלה או מהתצוגה. - BigQuery Read Session User
(
roles/bigquery.readSessionUser) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.readsessions.createו-bigquery.readsessions.getData. מאפשרת ליצור סשנים של קריאה ולהשתמש בהם. - שימוש במשימות BigQuery (
roles/bigquery.jobUser) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.jobs.create. הרשאות להרצת משימות, כולל שאילתות, בפרויקט באמצעות BigQuery API. אפשר להקצות את התפקיד הזה רק למשאבים של מנהל המשאבים (פרויקטים, תיקיות וארגונים). כשמציינים פרויקט נפרד לזמן ריצה, המשימה מופעלת בפרויקט הזה במקום בפרויקט הנתונים. כלומר, צריך להקצות את התפקיד "משתמש במשימות" בפרויקט של סביבת זמן הריצה.
כדי לגשת לטבלאות של BigLake Metastore:
- צפייה ב-BigLake (
roles/biglake.viewer) או כל תפקיד בהתאמה אישית עם ההרשאותbiglake.catalogs.get,biglake.namespaces.get,biglake.tables.getו-biglake.tables.getData. הרשאות לקריאת קטלוגים, מרחבי שמות וטבלאות ב-BigLake Metastore. - צפייה באובייקטים באחסון (
roles/storage.objectViewer) או כל תפקיד בהתאמה אישית עם ההרשאותstorage.objects.get. נותן הרשאות גישה לטבלאות חיצוניות ב-BigQuery ולקריאת אובייקטים ב-Cloud Storage שמגבים טבלאות ב-BigLake וב-BigLake Metastore. צריך להקצות אותה ברמת הפרויקט או הקטגוריה.
מתן גישה ל-AlloyDB למערך הנתונים ב-BigQuery
אחרי שמפעילים את התפקידים וההרשאות שנדרשים לאיחוד של Lakehouse, צריך לתת לחשבון השירות של אשכול AlloyDB גישה למערך הנתונים ב-BigQuery.
כשמחברים טבלה ב-BigQuery באמצעות AlloyDB Studio, מסוף Google Cloud מעניק באופן אוטומטי את ההרשאות הנדרשות לחשבון השירות של האשכול.
כדי לתת גישה באמצעות ה-CLI של gcloud:
gcloud
כדי להשתמש ב-CLI של gcloud, אתם יכולים להתקין ולהפעיל את Google Cloud CLI או להשתמש ב-Cloud Shell.
פותחים את ה-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. רשימת המיקומים המלאה של AlloyDB
הפלט מכיל את השדה
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.
בחלונית Connect BigQuery table, בוחרים פרויקט מקור, מערך נתונים מקור וטבלה.
בטבלה בדיקה ובחירה של עמודות מוצגות העמודות מהטבלה שנבחרה. בוחרים את העמודות שרוצים למפות.
בשדה 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 OPTIONS (runtime_project 'RUNTIME_PROJECT_ID');מחליפים את מה שכתוב בשדות הבאים:
-
BIGQUERY_SERVER_NAME: המזהה הייחודי של השרת החיצוני. צריך להגדיר את זה פעם אחת במסד נתונים נתון. אתם יכולים להחליף אתBIGQUERY_SERVER_NAMEבשם השרת שלכם. -
RUNTIME_PROJECT_ID: אופציונלי. מזהה הפרויקט ב- Google Cloudשבו מתבצע עיבוד השאילתה וצובר את עלויות המחשוב. אם לא תציינו את המזהה הזה, השאילתות יחויבו בפרויקט שבו הנתונים מאוחסנים.
-
יוצרים את מיפוי המשתמשים על ידי הפעלת הפקודה
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', runtime_project 'RUNTIME_PROJECT_ID' );מחליפים את מה שכתוב בשדות הבאים:
-
TABLENAME: השם של הטבלה החיצונית במסד הנתונים המקומי של AlloyDB. -
COLUMNX_NAME: שם העמודה ב-AlloyDB. שם העמודה חייב להיות זהה לשם של העמודה התואמת בטבלת המקור ב-BigQuery.Xמציין שאפשר ליצור את הטבלה עם כמה עמודות. השם חייב להיות זהה גם לאותיות הרישיות של העמודה ב-BigQuery. אם שם העמודה ב-BigQuery מכיל אותיות רישיות (לדוגמה,employeeID), צריך להקיף את המזהה של AlloyDB במירכאות כפולות (לדוגמה,"employeeID") כדי לשמור על אותיות רישיות או על אותיות רישיות וקטנות. -
DATA_TYPE: סוג הנתונים של העמודה. כשמגדירים אתDATA_TYPEלכל עמודה בטבלה החיצונית, צריך לוודא שהסוג תואם ל-PostgreSQL. למידע נוסף על האופן שבו סוגי הנתונים של BigQuery מומרים, קראו את המאמר מיפוי סוגי נתונים. -
BIGQUERY_SERVER_NAME: המזהה הייחודי של השרת החיצוני שיצרתם. -
BIGQUERY_PROJECT_ID: מזהה הפרויקט שבו נמצא מערך הנתונים ב-BigQuery. -
BIGQUERY_DATASET_NAME: שם מערך הנתונים ב-BigQuery של הטבלה. -
BIGQUERY_TABLE_NAME: שם הטבלה ב-BigQuery. -
RUNTIME_PROJECT_ID: אופציונלי. מזהה הפרויקט ב- Google Cloudלחיוב על הרצת השאילתה. הגדרה ברמת הטבלה מבטלת את פרויקט זמן הריצה שמוגדר ברמת השרת.
אחרי שיוצרים את הטבלה החיצונית, אפשר לשלוח אליה שאילתות כמו לכל טבלה אחרת ב-AlloyDB.
-
מיפוי סוגי נתונים
בטבלה הבאה מפורטים מיפויים של סוגי נתונים בין BigQuery ל-AlloyDB. מידע נוסף זמין במאמר שיקולים לגבי סוגי נתונים בשאילתות לכמה מסדי נתונים.
בטבלה הבאה מפורטים מיפויי סוגי הנתונים בין BigQuery ל-AlloyDB.
| סוגי נתונים בטבלה ב-BigQuery | סוגי הנתונים המומלצים בטבלה החיצונית של PostgreSQL |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
מידע נוסף זמין במאמר PostGIS_Geography. |
|
|
|
מידע נוסף זמין במאמר בנושא התוסף |