אפשר להשתמש במנהל ההתקן של PostgreSQL JDBC או במנהל ההתקן של Spanner JDBC עם מסד נתונים של Spanner בניב PostgreSQL. בדף הזה מוסבר איך להתחבר למסד הנתונים באמצעות מנהלי ההתקנים האלה.
מנהל התקן של PostgreSQL JDBC
בקטע הזה מוסבר איך לקשר את מנהל ההתקן של PostgreSQL JDBC למסד נתונים של ניב PostgreSQL ב-Spanner. JDBC הוא מנהל ההתקן הסטנדרטי של Java ל-PostgreSQL.
אם אתם משתמשים במנהל ההתקן PostgreSQL JDBC, אתם צריכים להשתמש ב-PGAdapter כדי לתרגם בין פרוטוקול הרשת של PostgreSQL לבין פרוטוקול הרשת של Spanner. אפשר להוסיף את PGAdapter כתלות ולהפעיל אותו בתהליך עם האפליקציה.
- מוסיפים את PGAdapter ואת מנהל ההתקן PostgreSQL JDBC כתלויות לאפליקציה.
- מפעילים את PGAdapter בתהליך עם האפליקציה.
OptionsMetadata.Builder builder = OptionsMetadata.newBuilder() .setProject("PROJECT_NAME") .setInstance("INSTANCE_NAME") .setPort(PORT); ProxyServer server = new ProxyServer(builder.build()); server.startServer(); server.awaitRunning();
מחליפים את מה שכתוב בשדות הבאים:
- PORT: מספר היציאה שבה PGAdapter פועל. ברוב המקרים, מגדירים את הערך
5432או0כדי להשתמש ביציאה שהוקצתה באופן דינמי.
- PORT: מספר היציאה שבה PGAdapter פועל. ברוב המקרים, מגדירים את הערך
- מוודאים שמנהל ההתקן של PostgreSQL JDBC נטען.
Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection("jdbc:postgresql://APPLICATION_HOST:PORT/DATABASE_NAME")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf( "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }מחליפים את מה שכתוב בשדות הבאים:
- APPLICATION_HOST: שם המארח או כתובת ה-IP של המכונה שבה PGAdapter פועל. אם מריצים באופן מקומי,
משתמשים ב-
localhost.
במאגר PGAdapter ב-GitHub יש אפליקציה לדוגמה.
- APPLICATION_HOST: שם המארח או כתובת ה-IP של המכונה שבה PGAdapter פועל. אם מריצים באופן מקומי,
משתמשים ב-
Unix domain sockets
בקטע הזה מוסבר איך להשתמש בשקעי דומיין של Unix כדי לקשר מנהל התקן של PostgreSQL JDBC למסד נתונים של ניב PostgreSQL. כדי לקבל את זמן האחזור הנמוך ביותר, צריך להשתמש בשקעי דומיין של Unix.
כדי להשתמש בשקעי דומיין של Unix, PGAdapter צריך לפעול באותו מארח כמו אפליקציית הלקוח.
// Make sure the PG JDBC driver is loaded. Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection("jdbc:postgresql://APPLICATION_HOST/DATABASE_NAME" + "?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg" + "&socketFactoryArg=DIRECTORY_NAME.s.PGSQL.PORT")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf("Greeting from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }
מחליפים את מה שכתוב בשדות הבאים:
- APPLICATION_HOST: שם המארח או כתובת ה-IP של המכונה שבה PGAdapter פועל. אם מריצים באופן מקומי,
משתמשים ב-
localhost.
ארגומנט בשורת הפקודה. לדוגמה, - PORT: מספר היציאה שבה PGAdapter פועל. אם PGAdapter פועל ביציאה מותאמת אישית, צריך לשנות את זה במחרוזת החיבור. אחרת, משתמשים ביציאה שמוגדרת כברירת מחדל,
5432.
/tmp.
Spanner JDBC driver
בקטע הזה מוסבר איך להשתמש במנהל ההתקן Spanner JDBC כדי להתחבר למסד נתונים של PostgreSQL.
- מוסיפים את מנהל ההתקן Spanner JDBC כתלות באפליקציה.
- משתמשים בכתובת URL של חיבור Spanner JDBC כדי להתחבר למסד נתונים עם ניב PostgreSQL.
// Make sure the PostgreSQL JDBC driver is loaded. Class.forName("org.postgresql.Driver");
try (Connection connection = DriverManager.getConnection( "jdbc:cloudspanner:/projects/PROJECT_NAME/instances/INSTANCE_NAME/databases/DATABASE_NAME")) { try (ResultSet resultSet = connection.createStatement().executeQuery("select 'Hello world!' as hello")) { while (resultSet.next()) { System.out.printf( "Greetings from Cloud Spanner PostgreSQL: %s\n", resultSet.getString(1)); } } }הדרייבר מזהה באופן אוטומטי את דיאלקט ה-SQL של מסד הנתונים שצוין. לא נדרש פרמטר של דיאלקט בכתובת ה-URL של החיבור.
המאמרים הבאים
- PGAdapter
- מידע נוסף על אפשרויות החיבור של מנהל ההתקן PostgreSQL JDBC זמין במאמר PGAdapter - JDBC Connection Options במאגר PGAdapter GitHub.