במאמר הזה מוסבר איך להטמיע פדרציה של lakehouse, יכולת שמאפשרת לשלוח שאילתות לנתונים פעילים ב-BigQuery ישירות מ-AlloyDB בלי לבצע העברות מורכבות של ETL (חילוץ, טרנספורמציה, טעינה). איחוד של מאגרי נתונים מאפשר לכם לאחד את מאגרי הנתונים התפעוליים והאנליטיים שלכם, וכך לא תצטרכו להשתמש בצינורות נתונים מורכבים שנוטים לשגיאות. מידע נוסף זמין במאמר סקירה כללית בנושא גישה לנתונים בזמן אמת.
שילוב של AlloyDB ו-BigQuery מאפשר לכם ליהנות מזרימת נתונים חלקה בין מסד הנתונים הטרנזקציוני לבין מחסן הנתונים. כך תוכלו להשתמש בניתוח בזמן אמת ולבנות אפליקציות אינטראקטיביות עוצמתיות.
אתם יכולים להשתמש בשילוב הזה כדי להריץ שאילתות ב-AlloyDB שמאפשרות גישה לנתוני BigQuery בזמן אמת. אפשר לבצע פעולות איחוד בין טבלאות ב-AlloyDB לבין טבלאות חיצוניות שמפנות למערכי הנתונים שלכם ב-BigQuery. האפשרות הזו שימושית כשצריך את הנתונים העדכניים ביותר מ-BigQuery בלי להעביר אותם.
במאמר הזה אנחנו מניחים שיש לכם אשכול 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.
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.
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.-
מפעילים את ממשקי ה-API של Cloud שנדרשים כדי ליצור חיבור ל-AlloyDB.
בשלב אישור הפרויקט, לוחצים על הבא כדי לאשר את שם הפרויקט שרוצים לבצע בו שינויים.
בשלב 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.
התפקידים הנדרשים
כדי להעניק הרשאות קריאה למערך הנתונים ב-BigQuery לחשבון השירות של אשכול AlloyDB, צריך את ההרשאות הבאות. מידע נוסף זמין במאמר בנושא מתן גישה ל-AlloyDB למערך נתונים ב-BigQuery.
- BigQuery Data Viewer
(
roles/bigquery.dataViewer) או כל תפקיד בהתאמה אישית עם ההרשאותbigquery.tables.getו-bigquery.tables.getData. כשמקצים את התפקיד הזה לטבלה או לתצוגה, הוא מספק הרשאות לקריאת נתונים ומטא-נתונים מהטבלה או מהתצוגה. - BigQuery Read Session User (
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, צריך להעניק לחשבון השירות של אשכול AlloyDB גישה למערך הנתונים ב-BigQuery.
כשמחברים טבלה ב-BigQuery באמצעות AlloyDB Studio, המסוף Google Cloud מעניק באופן אוטומטי את ההרשאות הנדרשות לחשבון השירות של האשכול.
כדי לתת גישה באמצעות ה-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, מרחיבים את הסכימה הרלוונטית.
לוחצים על התפריט Actions (פעולות) לצד BigQuery Tables (טבלאות BigQuery) ואז על Connect BigQuery table (קישור טבלת BigQuery).
בחלונית Connect BigQuery table (קישור טבלה ב-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);מחליפים את מה שכתוב בשדות הבאים:
-
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.
אחרי שיוצרים את הטבלה החיצונית, אפשר להריץ שאילתות בטבלה הזו באותו אופן שבו מריצים שאילתות בכל טבלה ב-AlloyDB.
-
מיפוי של סוגי נתונים
בטבלה הבאה מפורטים מיפויי סוגי הנתונים בין BigQuery ל-AlloyDB. מידע נוסף זמין במאמר שיקולים לגבי סוגי נתונים בשאילתות מאוחדות.
בטבלה הבאה מפורטים מיפויי סוגי הנתונים בין BigQuery ל-AlloyDB.
| סוגי נתונים בטבלה ב-BigQuery | סוגי נתונים מומלצים בטבלת חוץ של PostgreSQL |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
מידע נוסף זמין במאמר בנושא PostGIS_Geography. |
|
|
|
מידע נוסף זמין במאמר בנושא התוסף |
המאמרים הבאים
- בחירת דרך הגישה לנתוני BigQuery
- גישה לסקירה כללית של נתונים בזמן אמת.
- ייבוא נתונים מ-BigQuery ל-AlloyDB.