Javaクライアントの概要
ClickHouseクライアント
Javaクライアントは、ClickHouseサーバーとのネットワーク通信の詳細を抽象化する独自のAPIを実装したライブラリです。現在、HTTPインターフェースのみがサポートされています。このライブラリは、異なるClickHouseフォーマットおよびその他の関連機能を処理するためのユーティリティを提供します。
Javaクライアントは2015年に開発されました。そのコードベースはメンテナンスが非常に困難になり、APIもわかりにくく、さらに最適化することが難しくなっています。そのため、2024年に新しいコンポーネント client-v2
にリファクタリングしました。これにより、明確なAPI、軽量なコードベース、パフォーマンスの向上、ClickHouseフォーマット(主にRowBinaryおよびNative)のサポートが強化されました。JDBCは近い将来、このクライアントを使用します。
サポートされているデータ型
データ型 | Client V2 サポート | Client 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 | ✗ | ✔ |
注記
- AggregateFunction - ⚠️
SELECT * FROM table ...
をサポートしていません - Decimal - 一貫性のために、21.9+では
SET output_format_decimal_trailing_zeros=1
を設定 - Enum - 文字列および整数の両方として処理できます
- UInt64 - client-v1では
long
にマッピングされます
機能
クライアントの機能一覧:
名前 | Client V2 | Client V1 | コメント |
---|---|---|---|
HTTP接続 | ✔ | ✔ | |
HTTP圧縮(LZ4) | ✔ | ✔ | |
サーバー応答圧縮 - LZ4 | ✔ | ✔ | |
クライアントリクエスト圧縮 - LZ4 | ✔ | ✔ | |
HTTPS | ✔ | ✔ | |
クライアントSSL証明書(mTLS) | ✔ | ✔ | |
HTTPプロキシ | ✔ | ✔ | |
POJOシリアライズ・デシリアライズ | ✔ | ✗ | |
コネクションプール | ✔ | ✔ | Apache HTTP Client使用時 |
Named Parameters | ✔ | ✔ | |
失敗時の再試行 | ✔ | ✔ | |
フェイルオーバー | ✗ | ✔ | |
負荷分散 | ✗ | ✔ | |
サーバー自動検出 | ✗ | ✔ | |
ログコメント | ✔ | ✔ | |
セッションロール | ✔ | ✔ | |
SSLクライアント認証 | ✔ | ✔ | |
セッションタイムゾーン | ✔ | ✔ |
JDBCドライバは、基盤となるクライアントの実装と同じ機能を引き継ぎます。他のJDBC機能はそのページにリストされています。
互換性
- このリポジトリ内のすべてのプロジェクトは、すべてのアクティブなLTSバージョンのClickHouseでテストされています。
- サポートポリシー
- セキュリティ修正や新しい改善を見逃さないよう、クライアントのアップグレードを継続することをお勧めします
- v2 APIへの移行について問題がある場合は、issueを作成してください。お返事いたします!
ロギング
私たちのJava言語クライアントは、SLF4Jをロギングに使用します。Logback
やLog4j
など、任意のSLF4J互換ロギングフレームワークを使用できます。
例えば、Mavenを使用している場合は、次の依存関係をpom.xml
ファイルに追加できます。
ロギングの設定
これは、使用しているロギングフレームワークによって異なります。例えば、Logback
を使用している場合、logback.xml
というファイルでロギングを設定できます。