Обзор 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: