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 | ✗ | ✔ |
Variant | ✔ | ✗ |
Dynamic | ✔ | ✗ |
JSON | ✔ | ✗ |
注記
- AggregateFunction - ⚠️
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
というファイルでロギングを設定できます: