Java クライアントの概要
ClickHouse クライアント
Java クライアントは、ClickHouse サーバーとのネットワーク通信の詳細を抽象化する独自の API を実装したライブラリです。現在、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 Client 使用時 |
名前付きパラメータ | ✔ | ✔ | |
失敗時の再試行 | ✔ | ✔ | |
フェイルオーバー | ✗ | ✔ | |
ロードバランシング | ✗ | ✔ | |
サーバーの自動発見 | ✗ | ✔ | |
ログコメント | ✔ | ✔ | |
セッションロール | ✔ | ✔ | |
SSL クライアント認証 | ✔ | ✔ | |
セッションタイムゾーン | ✔ | ✔ |
JDBC ドライバは、基盤となるクライアント実装と同じ機能を継承しています。他の JDBC 機能はその ページ に記載されています。
互換性
- このリポジトリのすべてのプロジェクトは、すべての アクティブな LTS バージョン の ClickHouse でテストされています。
- サポートポリシー
- セキュリティ修正や新しい改善を見逃さないために、クライアントは継続的にアップグレードすることをお勧めします。
- v2 API への移行に関する問題がある場合は、問題を作成してください。私たちが対応します!
ロギング
私たちの Java 言語クライアントは、SLF4Jを使用してロギングを行います。Logback
や Log4j
などの SLF4J に互換性のあるロギングフレームワークを使用できます。
例えば、Maven を使用している場合、以下の依存関係を pom.xml
ファイルに追加できます。
ロギングの設定
これは、使用しているロギングフレームワークによって異なります。例えば、Logback
を使用している場合、logback.xml
というファイルにロギングを設定できます。