Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Обзор 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* ✔ ✔
Variant ✔ ✗
Dynamic ✔ ✗
JSON ✔ ✗

Типы данных ClickHouse

Возможности

Таблица возможностей клиентов:

Имя Client V2 Client V1 Комментарии
HTTP-соединение ✔ ✔
HTTP-сжатие (LZ4) ✔ ✔
Сжатие под управлением приложения ✔ ✗
Сжатие ответа сервера — LZ4 ✔ ✔
Сжатие запроса клиента — LZ4 ✔ ✔
HTTPS ✔ ✔
Клиентский SSL-сертификат (mTLS) ✔ ✔
HTTP-прокси ✔ ✔
POJO SerDe ✔ ✗
Пул соединений ✔ ✔ При использовании Apache HTTP Client
Именованные параметры ✔ ✔
Повтор при сбое ✔ ✔
Аварийное переключение ✗ ✔
Балансировка нагрузки ✗ ✔
Автообнаружение сервера ✗ ✔
Комментарий Log ✔ ✔
Роли сеанса ✔ ✔
SSL-аутентификация клиента ✔ ✔
Конфигурация SNI ✔ ✗
Часовой пояс сеанса ✔ ✔

JDBC-драйвер наследует те же возможности, что и лежащая в его основе реализация клиента. Другие возможности JDBC перечислены на его странице.

Совместимость

  • Все проекты в этом репозитории тестируются со всеми актуальными LTS-версиями ClickHouse.
  • Политика поддержки
  • Мы рекомендуем регулярно обновлять клиент, чтобы не пропускать исправления безопасности и новые улучшения
  • Если у вас возникли проблемы при миграции на API v2, создайте issue, и мы ответим!

Логирование

Наш Java-клиент использует SLF4J для логирования. Вы можете использовать любой фреймворк логирования, совместимый со SLF4J, например Logback или Log4j. Например, если вы используете Maven, можно добавить в файл pom.xml следующую зависимость:

pom.xmlxml
<dependencies>
    <!-- SLF4J API -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>2.0.16</version> <!-- Используйте последнюю версию -->
    </dependency>

    <!-- Logback Core -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.5.16</version> <!-- Используйте последнюю версию -->
    </dependency>

    <!-- Logback Classic (связывает SLF4J с Logback) -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.5.16</version> <!-- Используйте последнюю версию -->
    </dependency>
</dependencies>

Настройка логирования

Это зависит от того, какой фреймворк логирования вы используете. Например, если вы используете Logback, логирование можно настроить в файле logback.xml:

logback.xmlxml
<configuration>
    <!-- Консольный аппендер -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%level] [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Файловый аппендер -->
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/app.log</file>
        <append>true</append>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%level] [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Корневой логгер -->
    <root level="info">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <!-- Пользовательские уровни журналирования для отдельных пакетов -->
    <logger name="com.clickhouse" level="info" />
</configuration>

Журнал изменений

Navigation