原文链接:https://calcite.apache.org/avatica/docs/client_reference.html
Avatica 提供了一个参考实现的客户端,形式为 Java JDBC 客户端,通过 HTTP 与 Avatica 服务器进行交互。这个客户端可以像任何其他 JDBC 驱动程序一样使用。客户端可以通过 JDBC 连接 URL 指定许多可用的选项。
提醒一下,Avatica 的 JDBC 连接 URL 为:
jdbc:avatica:remote:[option=value[;option=value]]
以下是支持的选项列表:
- url
描述:此属性是一个 URL,指向 Avatica 服务器的位置,驱动程序将与该服务器进行通信。
默认值:此属性的默认值为
null。用户必须为此属性提供一个值。必需:是。
- serialization
描述:Avatica 支持多种序列化机制来格式化客户端和服务器之间的数据。此属性用于确保客户端和服务器使用相同的序列化机制。当前的有效值包括
json和protobuf。默认值:
json是默认值。必需:否。
- authentication
描述:Avatica 客户端可以指定其与 Avatica 服务器进行身份验证的方式。希望使用特定身份验证形式的客户端应在此属性中指定适当的值。此属性当前的有效值为:
NONE、BASIC、DIGEST和SPNEGO。默认值:
null(意味着"无身份验证",等同于NONE)。必需:否。
- timeZone
描述:用于日期和时间的时区。此属性的有效值由 RFC 822 定义,例如:
GMT、GMT-3、EST或PDT。默认值:此属性的默认值为
null,这将导致 Avatica 驱动程序使用 JVM 指定的默认时区,通常可以通过user.timezone系统属性进行覆盖。必需:否。
- httpclient_factory
描述:Avatica 客户端是一个"高级" HTTP 客户端。因此,有许多库和 API 可用于进行 HTTP 调用。为了确定应该使用哪种实现,提供了一个接口
AvaticaHttpClientFactory,可用于控制如何选择AvaticaHttpClient实现。默认值:
AvaticaHttpClientFactoryImpl。必需:否。
- httpclient_impl
描述:当使用默认的
AvaticaHttpClientFactoryImplHTTP 客户端工厂实现时,该工厂应该为给定的客户端配置选择正确的客户端实现。此属性可用于覆盖特定的 HTTP 客户端实现。如果未提供,AvaticaHttpClientFactoryImpl将自动选择 HTTP 客户端实现。默认值:
null。必需:否。
- avatica_user
描述:这是 Avatica 客户端用于向 Avatica 服务器标识自己的用户名。它独立于传统的"用户" JDBC 属性。仅当 Avatica 配置为 HTTP Basic 或 Digest 身份验证时才需要。
默认值:
null。必需:否。
- avatica_password
描述:这是 Avatica 客户端用于向 Avatica 服务器标识自己的密码。它独立于传统的"密码" JDBC 属性。仅当 Avatica 配置为 HTTP Basic 或 Digest 身份验证时才需要。
默认值:
null。必需:否。
- principal
描述:Avatica JDBC 驱动程序可以使用 Kerberos 主体,在尝试联系 Avatica 服务器之前自动执行 Kerberos 登录。如果提供了此属性,还应该提供
keytab,并且 Avatica 服务器应该配置为 SPNEGO 身份验证。用户可以执行自己的 Kerberos 登录;此选项仅作为便利提供。默认值:
null。必需:否。
- keytab
描述:Kerberos keytab 包含用于使用
principal执行 Kerberos 登录的秘密材料。该值应该是本地文件系统上常规文件的路径。默认值:
null。必需:否。
- truststore
描述:本地文件系统上 Java KeyStore (JKS) 文件的路径,其中包含在 TLS 握手中要信任的证书颁发机构。仅在使用 HTTPS 时才需要。
默认值:
null。必需:否。
- truststore_password
描述:由 truststore 指定的 Java KeyStore 文件的密码。
默认值:
null。必需:仅在提供了
truststore时。- keystore_type
描述:由 truststore 指定的 truststore 文件的格式。如果使用非 JKS 格式的 keystore(例如 BCFKS),则需要指定此项。此设置适用于 keystore 和 truststore 文件。对于默认 JVM 中未包含的格式,必须将相应的安全提供程序安装并配置到 JVM 中,或添加到应用程序类路径并进行配置。
默认值:
null。必需:否。
- fetch_size
描述:要获取的行数。如果设置了 Statement:setFetchSize,则该值会覆盖 fetch_size。
默认值:
100。必需:否。
- transparent_reconnection
描述:在 1.5.0 和 1.20.0 之间的 Java 客户端版本中,如果连接对象从服务器缓存中过期,则会透明地重新创建客户端的连接对象。此行为破坏了 JDBC 合规性,并可能导致事务性写入工作负载的数据丢失,已在 1.21.0 中移除。将此属性设置为
true可恢复 1.20.0 的行为。默认值:
false。必需:否。
- use_client_side_lb
描述:启用客户端负载均衡。
默认值:
false。必需:否。
- lb_urls
描述:以逗号分隔的 URL 列表,例如 “URL1,URL2…URLn”,供客户端负载均衡器使用。根据负载均衡策略,负载均衡器从列表中选择一个 URL。
默认值:
null。必需:否。
- lb_strategy
描述:客户端负载均衡器使用的负载均衡策略。它必须是一个完全限定的 Java 类名,实现
org.apache.calcite.avatica.ha.LBStrategy。提供了三个实现:org.apache.calcite.avatica.ha.RandomSelectLBStrategy、org.apache.calcite.avatica.ha.RoundRobinLBStrategy和org.apache.calcite.avatica.ha.ShuffledRoundRobinLBStrategy。默认值:
org.apache.calcite.avatica.ha.ShuffledRoundRobinLBStrategy。必需:否。
- lb_connection_failover_retries
描述:负载均衡器尝试使用另一个 URL 重试连接的次数(故障转移)。当连接失败时,负载均衡器使用负载均衡策略选择的另一个 URL 重试连接。
默认值:
3。必需:否。
- lb_connection_failover_sleep_time
描述:负载均衡器在尝试下一次连接故障转移重试之前休眠的时间(以毫秒为单位)。
默认值:
1000。必需:否。
- http_connection_timeout
描述:建立 Avatica HTTP 客户端和服务器之间连接的超时时间(以毫秒为单位)。
默认值:
180000(3 分钟)。必需:否。
- http_response_timeout
描述:Avatica HTTP 客户端和服务器之间连接的套接字超时时间(以毫秒为单位)。
默认值:
180000(3 分钟)。必需:否。
写在最后
笔者因为工作原因接触到 Calcite,前期学习过程中,深感 Calcite 学习资料之匮乏,因此创建了 Calcite 从入门到精通知识星球,希望能够将学习过程中的资料和经验沉淀下来,为更多想要学习 Calcite 的朋友提供一些帮助。

