סקירה כללית על PGAdapter

בדף הזה מובאת סקירה כללית על PGAdapter. מידע על הפעלת PGAdapter זמין במאמר הפעלת PGAdapter.

‫PGAdapter הוא פרוקסי sidecar, כלומר אפליקציה קטנה שפועלת לצד האפליקציה הראשית כדי לתמוך בתקשורת בין ממשק PostgreSQL ל-Spanner לבין Spanner. באפליקציות Java אפשר אפילו לקשר את PGAdapter לאפליקציה ישירות, בלי להריץ אותו בתהליך נפרד. ‫PGAdapter מיועד להרצה באותו מחשב שבו מורצת האפליקציה, והוא חושף נקודת קצה ב-localhost שתומכת בפרוטוקול ה-wire של PostgreSQL. הוא מתרגם את פרוטוקול החוט של PostgreSQL לפרוטוקול החוט של Spanner, ‏ gRPC. כששרת ה-Proxy הזה פועל באופן מקומי, לקוח PostgreSQL כמו psql יכול להתחבר למסד נתונים של Spanner עם ניב PostgreSQL.

‫PGAdapter מוסיף לכל היותר 0.2 אלפיות השנייה של תקורה של זמן האחזור. לממשק PostgreSQL יש את אותן רמות חביון כמו ל-GoogleSQL.

התרשים הבא מראה איך psql מתחבר ל-Spanner דרך PGAdapter.

‫psql מתחבר ל-Spanner דרך PGAdapter

‫PGAdapter תומך במצבי שאילתות בסיסיים ומורחבים, ובכל סוג נתונים שממשק PostgreSQL ל-Spanner תומך בו.

סביבות הפעלה של PGAdapter

אפשר להריץ את PGAdapter באחת מהשיטות הבאות:

  • עצמאי: PGAdapter מסופק כקובץ JAR ופועל באופן עצמאי ב-JVM.
  • Docker. ‫PGAdapter נארז גם כקובץ אימג' של Docker.
  • Cloud Run: אפשר לפרוס את PGAdapter כפרוקסי קובץ עזר חיצוני ב-Cloud Run.
  • קובץ עזר חיצוני: שימוש אופייני כקובץ עזר חיצוני הוא באשכול Kubernetes.
  • בתוך התהליך: קוד האפליקציה של Java יכול להשתמש בקובץ ה-JAR שסופק כדי ליצור ולהפעיל מופע של PGAdapter.

פרטים על השיטות האלה זמינים במאמר בנושא הפעלת PGAdapter.

הרשאה באמצעות PGAdapter

כדי לקבוע את חשבון השירות או את חשבון המשתמש האחר בניהול זהויות והרשאות גישה (IAM) שבו יש להשתמש לחיבור, PGAdapter בודק את פרטי הכניסה שציינתם כשאתם מפעילים אותו. ההרשאות שניתנו לחשבון המשתמש ב-IAM קובעות את ההרשאות שיש לאפליקציה המתחברת במסד הנתונים.

כשמשתמשים בבקרת גישה ברמת דיוק גבוהה, אפשר לציין תפקיד במסד הנתונים כשמפעילים את PGAdapter. אם מציינים תפקיד במסד הנתונים,‏ PGAdapter משתמש בבקרת גישה ברמת דיוק גבוהה כשהוא שולח בקשות לשאילתות ולהצהרות DML. לשם כך נדרשת הרשאת IAM‏ spanner.databases.useRoleBasedAccess, ולהרשאות מסד נתונים שאינן public, נדרשת ההרשאה spanner.databaseRoles.use. ההרשאות שמוענקות לתפקיד במסד הנתונים קובעות את הפעולות שהאפליקציה המתחברת יכולה לבצע. אם לא מציינים תפקיד במסד הנתונים, נעשה שימוש בהרשאות ברמת מסד הנתונים שניתנות לחשבון הראשי ב-IAM. כדי לבצע הצהרות DDL, לחשבון המשתמש צריכה להיות ההרשאה spanner.databases.updateDdl.

מידע נוסף זמין במאמרים מידע על בקרת גישה ברמת גרנולריות גבוהה ובקרת גישה באמצעות IAM.

המאמרים הבאים