Обзор 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 | ✗ | ✔ |
- AggregatedFunction - ⚠️ не поддерживает
SELECT * FROM table ...
- Decimal -
SET output_format_decimal_trailing_zeros=1
в 21.9+ для согласованности - Enum - может рассматриваться как строка и целое число
- UInt64 - сопоставляется с
long
в клиенте v1
Особенности
Таблица особенностей клиентов:
Название | Клиент V2 | Клиент V1 | Комментарии |
---|---|---|---|
Http Connection | ✔ | ✔ | |
Http Compression (LZ4) | ✔ | ✔ | |
Сжатие ответа сервера - LZ4 | ✔ | ✔ | |
Сжатие запроса клиента - LZ4 | ✔ | ✔ | |
HTTPS | ✔ | ✔ | |
SSL Сертификат клиента (mTLS) | ✔ | ✔ | |
Http Proxy | ✔ | ✔ | |
POJO SerDe | ✔ | ✗ | |
Connection Pool | ✔ | ✔ | При использовании Apache HTTP Client |
Именованные Параметры | ✔ | ✔ | |
Повторная попытка при неуспехе | ✔ | ✔ | |
Failover | ✗ | ✔ | |
Балансировка нагрузки | ✗ | ✔ | |
Автообнаружение сервера | ✗ | ✔ | |
Комментарий в Логе | ✔ | ✔ | |
Роли Сессии | ✔ | ✔ | |
SSL Аутентификация клиента | ✔ | ✔ | |
Часовой пояс сессии | ✔ | ✔ |
JDBC драйвер наследует те же особенности, что и базовая реализация клиента. Другие особенности JDBC перечислены на его странице.
Совместимость
- Все проекты в этом репозитории тестируются со всеми активными версиями LTS ClickHouse.
- Политика поддержки
- Мы рекомендуем постоянно обновлять клиент, чтобы не пропустить исправления безопасности и новые улучшения
- Если у вас возникла проблема с миграцией на v2 API - создайте issue и мы ответим!
Логирование
Наш Java клиент использует SLF4J для логирования. Вы можете использовать любую совместимую с SLF4J фреймворк логирования, такую как Logback
или Log4j
.
Например, если вы используете Maven, вы можете добавить следующую зависимость в файл pom.xml
:
Настройка Логирования
Это будет зависеть от фреймворка логирования, который вы используете. Например, если вы используете Logback
, вы можете настроить логирование в файле с названием logback.xml
: