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