Обзор 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 соединение | ✔ | ✔ | |
HTTP сжатие (LZ4) | ✔ | ✔ | |
Сжатие ответа сервера - LZ4 | ✔ | ✔ | |
Сжатие запросов клиента - LZ4 | ✔ | ✔ | |
HTTPS | ✔ | ✔ | |
SSL сертификат клиента (mTLS) | ✔ | ✔ | |
HTTP прокси | ✔ | ✔ | |
POJO SerDe | ✔ | ✗ | |
Пул соединений | ✔ | ✔ | При использовании Apache HTTP Client |
Именованные параметры | ✔ | ✔ | |
Повторить при неудаче | ✔ | ✔ | |
Фейловер | ✗ | ✔ | |
Балансировка нагрузки | ✗ | ✔ | |
Автообнаружение сервера | ✗ | ✔ | |
Журнал комментариев | ✔ | ✔ | |
Роли сессии | ✔ | ✔ | |
Аутентификация клиента SSL | ✔ | ✔ | |
Часовой пояс сессии | ✔ | ✔ |
Драйвер JDBC наследует те же функции, что и реализация подлежащего клиента. Другие функции JDBC перечислены на его странице.
Совместимость
- Все проекты в этом репозитории тестируются с всеми активными версиями LTS ClickHouse.
- Правила поддержки
- Мы рекомендуем регулярно обновлять клиент, чтобы не пропустить исправления безопасности и новые улучшения
- Если у вас есть проблемы с миграцией на v2 API - создайте проблему и мы ответим!
Логирование
Наш Java клиент использует SLF4J для логирования. Вы можете использовать любую совместимую с SLF4J логирующую фреймворк, такую как Logback
или Log4j
.
Например, если вы используете Maven, вы можете добавить следующую зависимость в ваш файл pom.xml
:
Настройка логирования
Это будет зависеть от фреймворка логирования, который вы используете. Например, если вы используете Logback
, вы можете настроить логирование в файле logback.xml
: