2

虽然 Spanner 看起来令人兴奋,但 Simba JDBC 驱动程序的文档(包含在此处的下载链接中:https ://cloud.google.com/spanner/docs/partners/drivers )相对较少,尤其是与Simba JDBC BigQuery 驱动程序 ( https://cloud.google.com/bigquery/partners/simba-drivers/ )。

特别是,文档只提到了一个连接字符串:

jdbc:cloudspanner://localhost;Project=simba-cloudspanner- jdbc;Instance=test-instance;Database=example-db

...没有关于如何指定的信息,例如,服务帐户及其 p12 凭据或许多 Google Cloud 服务使用的 JSON 文件的路径。

任何人都可以分享他们已成功用于连接到服务的 JDBC 连接字符串或其他设置详细信息吗?例如,我尝试过设置环境变量GOOGLE_APPLICATION_CREDENTIALS并提供与上述相同样式的 JDBC 字符串,但无济于事。

理想情况下,我想使用实例 ID、项目名称、数据库名称、服务帐户电子邮件和 p12 文件的组合,但我对其他身份验证选项持开放态度。

编辑:在尝试该GOOGLE_APPLICATION_CREDENTIALS策略时,我生成了这个日志文件,以防它可能有任何帮助https://gist.github.com/aryeh-looker/e6b1b1617d301f0a247463216c96535d

4

2 回答 2

3

仔细检查了我的工作,看起来我实际上可以通过设置环境变量来连接上面的连接字符串GOOGLE_APPLICATION_CREDENTIALS。有一些其他选项是理想的,文档仍然有点参差不齐(没有提到环境变量),所以更多信息可能是理想的。

这是一个半可行的解决方案。它的缺点是您不能在同一进程中与不同的服务帐户建立多个连接。


编辑2:这似乎不起作用。指向 JSON 文件时,我收到有关未指定实例的错误。

编辑:看起来像最新版本的 Spanner 驱动程序,有一种方法可以做到这一点。

驱动程序的最新版本 (1.0.4.1005) 似乎支持一个可选的 JDBC 参数PvtKeyPath,该参数采用您的私钥的路径,而不是必须设置GOOGLE_APPLICATION_CREDENTIALS变量。值得一看。

从随附的 PDF 文档中:

PvtKeyPath

因此,您将拥有如下 URL:jdbc:cloudspanner://;Project=...;PvtKeyPath=/path/to/credentials.json

于 2017-02-17T01:18:10.983 回答
0

由于 Google 提供的 JDBC Driver 非常有限(不支持 DML 和 DDL statemetns),所以我编写了自己的 JDBC Driver。该驱动程序旨在与启用 JPA/Hibernate 的应用程序一起使用。驱动程序可以在这里找到:https ://github.com/olavloite/spanner-jdbc

此驱动程序支持与 Google 提供的驱动程序相同类型的 URL,包括 PvtKeyPath 属性。它仍然是测试版,但我已经将它用于我自己的应用程序之一。

于 2017-03-07T06:12:21.267 回答