Google Spanner:JDBC 连接字符串?
Google Spanner: JDBC Connection Strings?
虽然 Spanner 看起来令人兴奋,但 Simba JDBC 驱动程序的文档(包含在此处的下载链接中:https://cloud.google.com/spanner/docs/partners/drivers) are relatively sparse, especially when compared to the documentation for the Simba JDBC BigQuery driver (https://cloud.google.com/bigquery/partners/simba-drivers/)。
特别是文档只提到了一个连接字符串:
jdbc:cloudspanner://localhost;Project=simba-cloudspanner- jdbc;Instance=test-instance;Database=example-db
...没有关于如何指定服务帐户及其 p12 凭据或 JSON 文件路径的信息,许多 Google 云服务使用这些文件。
任何人都可以分享 JDBC 连接字符串或他们已成功用于连接到服务的其他设置详细信息吗?例如,我尝试过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS
并提供与上述相同样式的 JDBC 字符串,但无济于事。
理想情况下,我想结合使用实例 ID、项目名称、数据库名称、服务帐户电子邮件和 p12 文件,但我愿意接受其他身份验证选项。
编辑:在尝试 GOOGLE_APPLICATION_CREDENTIALS
策略时,我生成了这个日志文件,以防它有任何帮助 https://gist.github.com/aryeh-looker/e6b1b1617d301f0a247463216c96535d
Double-checked 我的工作,看起来我 am 事实上能够通过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS
.有一些其他选项是理想的,文档仍然有点参差不齐(没有提到环境变量),所以更多信息可能是理想的。
这是一个 semi-workable 解决方案。它的缺点是您不能在同一进程中与不同的服务帐户建立多个连接。
编辑 2:这似乎不起作用。当指向 JSON 文件时,我收到有关未指定实例的错误。
编辑:看起来像最新版本的 Spanner 驱动程序,有一种方法可以做到这一点。
驱动程序的最新版本 (1.0.4.1005) 似乎支持可选的 JDBC 参数 PvtKeyPath
,该参数采用您的私钥路径,而不是必须设置 GOOGLE_APPLICATION_CREDENTIALS
变量。值得一看
来自随附的 PDF 文档:
所以你会有一个 URL 像:jdbc:cloudspanner://;Project=...;PvtKeyPath=/path/to/credentials.json
由于 Google 提供的 JDBC 驱动程序受到严重限制(不支持 DML 和 DDL 状态),我编写了自己的 JDBC 驱动程序。该驱动程序设计用于 JPA/Hibernate-enabled 应用程序。可以在这里找到驱动程序:https://github.com/olavloite/spanner-jdbc
此驱动程序支持与 Google 提供的驱动程序相同的 URL,包括 PvtKeyPath 属性。它仍然是测试版,但我已经将它用于我自己的应用程序之一。
虽然 Spanner 看起来令人兴奋,但 Simba JDBC 驱动程序的文档(包含在此处的下载链接中:https://cloud.google.com/spanner/docs/partners/drivers) are relatively sparse, especially when compared to the documentation for the Simba JDBC BigQuery driver (https://cloud.google.com/bigquery/partners/simba-drivers/)。
特别是文档只提到了一个连接字符串:
jdbc:cloudspanner://localhost;Project=simba-cloudspanner- jdbc;Instance=test-instance;Database=example-db
...没有关于如何指定服务帐户及其 p12 凭据或 JSON 文件路径的信息,许多 Google 云服务使用这些文件。
任何人都可以分享 JDBC 连接字符串或他们已成功用于连接到服务的其他设置详细信息吗?例如,我尝试过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS
并提供与上述相同样式的 JDBC 字符串,但无济于事。
理想情况下,我想结合使用实例 ID、项目名称、数据库名称、服务帐户电子邮件和 p12 文件,但我愿意接受其他身份验证选项。
编辑:在尝试 GOOGLE_APPLICATION_CREDENTIALS
策略时,我生成了这个日志文件,以防它有任何帮助 https://gist.github.com/aryeh-looker/e6b1b1617d301f0a247463216c96535d
Double-checked 我的工作,看起来我 am 事实上能够通过设置环境变量 GOOGLE_APPLICATION_CREDENTIALS
.有一些其他选项是理想的,文档仍然有点参差不齐(没有提到环境变量),所以更多信息可能是理想的。
这是一个 semi-workable 解决方案。它的缺点是您不能在同一进程中与不同的服务帐户建立多个连接。
编辑 2:这似乎不起作用。当指向 JSON 文件时,我收到有关未指定实例的错误。
编辑:看起来像最新版本的 Spanner 驱动程序,有一种方法可以做到这一点。
驱动程序的最新版本 (1.0.4.1005) 似乎支持可选的 JDBC 参数 PvtKeyPath
,该参数采用您的私钥路径,而不是必须设置 GOOGLE_APPLICATION_CREDENTIALS
变量。值得一看
来自随附的 PDF 文档:
所以你会有一个 URL 像:jdbc:cloudspanner://;Project=...;PvtKeyPath=/path/to/credentials.json
由于 Google 提供的 JDBC 驱动程序受到严重限制(不支持 DML 和 DDL 状态),我编写了自己的 JDBC 驱动程序。该驱动程序设计用于 JPA/Hibernate-enabled 应用程序。可以在这里找到驱动程序:https://github.com/olavloite/spanner-jdbc
此驱动程序支持与 Google 提供的驱动程序相同的 URL,包括 PvtKeyPath 属性。它仍然是测试版,但我已经将它用于我自己的应用程序之一。