Java 客户端概述
ClickHouse 客户端
Java 客户端是一个实现自身 API 的库,它抽象了与 ClickHouse 服务器进行网络通信的细节。目前仅支持 HTTP 接口。该库提供实用程序以使用不同的 ClickHouse 格式和其他相关功能。
Java 客户端是在 2015 年开发的。它的代码库变得难以维护,API 令人困惑,难以进一步优化。因此,我们在 2024 年将其重构为一个新的组件 `client-v2`。它具有清晰的 API、更轻的代码库和更多性能改进,并提供更好的 ClickHouse 格式支持(主要为 RowBinary & Native)。JDBC 将在近期功能中使用此客户端。
支持的数据类型
数据类型 | 客户端 V2 支持 | 客户端 V1 支持 |
---|---|---|
Int8 | ✔ | ✔ |
Int16 | ✔ | ✔ |
Int32 | ✔ | ✔ |
Int64 | ✔ | ✔ |
Int128 | ✔ | ✔ |
Int256 | ✔ | ✔ |
UInt8 | ✔ | ✔ |
UInt16 | ✔ | ✔ |
UInt32 | ✔ | ✔ |
UInt64 | ✔ | ✔ |
UInt128 | ✔ | ✔ |
UInt256 | ✔ | ✔ |
Float32 | ✔ | ✔ |
Float64 | ✔ | ✔ |
Decimal | ✔ | ✔ |
Decimal32 | ✔ | ✔ |
Decimal64 | ✔ | ✔ |
Decimal128 | ✔ | ✔ |
Decimal256 | ✔ | ✔ |
Bool | ✔ | ✔ |
String | ✔ | ✔ |
FixedString | ✔ | ✔ |
Nullable | ✔ | ✔ |
Date | ✔ | ✔ |
Date32 | ✔ | ✔ |
DateTime | ✔ | ✔ |
DateTime32 | ✔ | ✔ |
DateTime64 | ✔ | ✔ |
Interval | ✗ | ✗ |
Enum | ✔ | ✔ |
Enum8 | ✔ | ✔ |
Enum16 | ✔ | ✔ |
Array | ✔ | ✔ |
Map | ✔ | ✔ |
Nested | ✔ | ✔ |
Tuple | ✔ | ✔ |
UUID | ✔ | ✔ |
IPv4 | ✔ | ✔ |
IPv6 | ✔ | ✔ |
Object | ✗ | ✔ |
Point | ✔ | ✔ |
Nothing | ✔ | ✔ |
MultiPolygon | ✔ | ✔ |
Ring | ✔ | ✔ |
Polygon | ✔ | ✔ |
SimpleAggregateFunction | ✔ | ✔ |
AggregateFunction | ✗ | ✔ |
注意
- AggregatedFunction - ⚠️ 不支持
SELECT * FROM table ...
- Decimal - 在 21.9+ 中使用
SET output_format_decimal_trailing_zeros=1
以保持一致性 - Enum - 可以被视为字符串和整数
- UInt64 - 在 client-v1 中映射到
long
功能
客户端功能表
名称 | 客户端 V2 | 客户端 V1 | 注释 |
---|---|---|---|
Http 连接 | ✔ | ✔ | |
Http 压缩 (LZ4) | ✔ | ✔ | |
服务器响应压缩 - LZ4 | ✔ | ✔ | |
客户端请求压缩 - LZ4 | ✔ | ✔ | |
HTTPs | ✔ | ✔ | |
客户端 SSL 证书 (mTLS) | ✔ | ✔ | |
Http 代理 | ✔ | ✔ | |
POJO SerDe | ✔ | ✗ | |
连接池 | ✔ | ✔ | 使用 Apache HTTP 客户端时 |
命名参数 | ✔ | ✔ | |
失败时重试 | ✔ | ✔ | |
故障转移 | ✗ | ✔ | |
负载均衡 | ✗ | ✔ | |
服务器自动发现 | ✗ | ✔ | |
日志注释 | ✗ | ✔ | |
会话角色 | ✗ | ✔ | 将在 V2 中 |
SSL 客户端身份验证 | ✗ | ✔ | 将在 V2 中 |
会话时区 | ✔ | ✔ |
JDBC 驱动程序继承了与底层客户端实现相同的特性。其他 JDBC 特性列在它的 页面 上。