跳至主要内容

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

ClickHouse 数据类型

注意
  • 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 特性列在它的 页面 上。

兼容性

  • 此仓库中的所有项目都已通过所有 活动 LTS 版本 的 ClickHouse 测试。
  • 支持策略
  • 我们建议您持续升级客户端,以避免错过安全修复和新改进。
  • 如果您在迁移到 v2 API 时遇到问题 - 创建问题,我们会回复您!