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 属性。它仍然是测试版,但我已经将它用于我自己的应用程序之一。