跳到主要内容
跳到主要内容

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 - SET output_format_decimal_trailing_zeros=1 在 21.9+ 中保持一致性
  • Enum - 可以看作字符串和整数
  • UInt64 - 在客户端 v1 中映射为 long

特性

客户端的特性表:

名称客户端 V2客户端 V1备注
Http 连接
Http 压缩 (LZ4)
服务器响应压缩 - LZ4
客户端请求压缩 - LZ4
HTTPS
客户端 SSL 证书 (mTLS)
Http 代理
POJO 序列化与反序列化
连接池当使用 Apache HTTP Client 时
命名参数
失败重试
失败切换
负载均衡
服务器自动发现
日志评论
会话角色
SSL 客户端认证
会话时区

JDBC 驱动继承了与底层客户端实现相同的功能。其他 JDBC 特性在其 页面 列出。

兼容性

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

日志记录

我们的 Java 语言客户端使用 SLF4J 进行日志记录。您可以使用任何与 SLF4J 兼容的日志框架,例如 LogbackLog4j。 例如,如果您使用 Maven,您可以将以下依赖项添加到您的 pom.xml 文件中:

配置日志记录

这将取决于您使用的日志框架。例如,如果您使用 Logback,您可以在名为 logback.xml 的文件中配置日志记录:

变更日志