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 | ✗ | ✔ |
Note
- AggregatedFunction - ⚠️
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 クライアントを使用する場合 |
| 名前付きパラメータ | ✔ | ✔ | |
| 失敗時のリトライ | ✔ | ✔ | |
| フェイルオーバー | ✗ | ✔ | |
| ロードバランシング | ✗ | ✔ | |
| サーバー自動検出 | ✗ | ✔ | |
| ログコメント | ✗ | ✔ | |
| セッションロール | ✗ | ✔ | V2 で導入予定 |
| SSL クライアント認証 | ✗ | ✔ | V2 で導入予定 |
| セッションタイムゾーン | ✔ | ✔ |
JDBC ドライバーは、基盤となるクライアント実装と同様の機能を継承します。他の JDBC の機能はその ページ に記載されています。
互換性
- このリポジトリ内のすべてのプロジェクトは、すべての アクティブな LTS バージョン の ClickHouse でテストされています。
- サポートポリシー
- セキュリティ修正や新たな改善を逃さないよう、クライアントを継続的にアップグレードすることをお勧めします
- v2 API への移行で問題がある場合は、問題を作成 していただければ対応します!