ClickHouse¶
В этой статье
Информация
ClickHouse - это высокопроизводительная колоночная система управления базами данных (СУБД), предназначенная для выполнения аналитических запросов класса OLAP. СУБД ориентирована на анализ больших объёмов данных с низкой задержкой и широко используется в задачах аналитики, мониторинга, логирования и обработки телеметрии.
ClickHouse. Основные возможности¶
- Колоночное хранение данных: данные хранятся по столбцам, а не по строкам, что значительно ускоряет выполнение аналитических запросов и снижает объем обрабатываемых данных.
- Высокая производительность: оптимизирована для обработки больших массивов данных и способна выполнять запросы по миллиардам строк за счёт векторизованной обработки и эффективного использования CPU.
- Сжатие данных: мспользуются специализированные алгоритмы сжатия, которые позволяют значительно уменьшить объём хранимых данных (часто в несколько раз по сравнению с построчными СУБД), особенно при аналитических нагрузках.
- SQL-совместимость: поддержка расширенного SQL-синтаксиса с дополнительными функциями для аналитики, что упрощает миграцию существующих приложений.
- Распределенная обработка: возможность создания кластеров для горизонтального масштабирования и обработки данных на нескольких серверах.
- Репликация данных: встроенная поддержка репликации для обеспечения отказоустойчивости и высокой доступности данных.
- Поддержка множества форматов данных: возможность импорта и экспорта данных в форматах CSV, JSON, Parquet, Avro и других.
- Материализованные представления: автоматическое агрегирование данных в фоновом режиме для ускорения повторяющихся запросов.
- Интеграция с внешними источниками: поддержка прямого чтения данных из MySQL, PostgreSQL, MongoDB, Kafka, S3 и других систем.
Особенности сборки¶
| ID |
|---|
-
Установленное ПО:
- ClickHouse Server >= 26.1.1
- ClickHouse Client >= 26.1.1
-
Особенности установки:
- ПО установлено посредством официального скрипта от разработчиков;
- Время установки: 5-10 минут;
- База данных доступна для подключения по сети через различные SQL-клиенты;
- По умолчанию используется пользователь
defaultс паролем от учетной записиroot.
Расположение конфигурационных файлов и данных:
- Основная конфигурация сервера:
/etc/clickhouse-server/config.xml - Настройки пользователей:
/etc/clickhouse-server/users.xml - Логи сервера:
/var/log/clickhouse-server/clickhouse-server.log/var/log/clickhouse-server/clickhouse-server.err.log
- Данные:
/var/lib/clickhouse/ - PID файл:
/run/clickhouse-server/clickhouse-server.pid - Системные лимиты:
/etc/security/limits.d/clickhouse.conf
Доступные порты для подключения:
| Порт | Протокол | Назначение | Статус | Клиенты/Использование |
|---|---|---|---|---|
| 8123 | HTTP | HTTP интерфейс | Активен | DBeaver, DataGrip, Tableau, веб-интерфейс, JDBC/ODBC |
| 9000 | TCP Native | Нативный протокол ClickHouse | Активен | clickhouse-client, Python/Go драйверы |
| 9004 | MySQL | Эмуляция MySQL протокола | Активен | MySQL Workbench, mysql клиент |
| 9005 | PostgreSQL | Эмуляция PostgreSQL протокола | Активен | pgAdmin, psql клиент |
| 9009 | Interserver HTTP | Репликация между серверами | Активен | Внутрикластерная коммуникация |
| 8443 | HTTPS | HTTP интерфейс с SSL | Опционально | Требует настройки SSL сертификатов |
| 9100 | gRPC | gRPC интерфейс | Опционально | gRPC клиенты |
Примечание
Порты 8443 и 9100 по умолчанию отключены и требуют дополнительной настройки в файле /etc/clickhouse-server/config.xml.
Примечание
Если не указано иное, по умолчанию мы устанавливаем последнюю релиз версию программного обеспечения с официального сайта разработчика.
Начало работы после развертывания ClickHouse¶
После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и API — Invapi.
Данные для авторизации:
- IP-адрес сервера: указан в письме и в панели управления;
- Логин:
default; - Пароль: совпадает с паролем от учетной записи
rootи приходит в письме на электронную почту.
Важно
Для подключения через GUI-клиенты (DBeaver, DataGrip и другие) используйте порт 8123 (HTTP интерфейс). Порт 9000 предназначен только для нативного клиента clickhouse-client.
Подключение к ClickHouse¶
Методы подключения
В этом разделе описаны наиболее распространенные способы подключения к ClickHouse через clickhouse-client (консольный клиент) и DBeaver (графический интерфейс). ClickHouse также поддерживает подключение через другие клиенты: DataGrip, Tableau, MySQL Workbench (через порт 9004), pgAdmin (через порт 9005), а также программные библиотеки для Python, Go, Java и других языков программирования.
Подключение через clickhouse-client¶
ClickHouse включает нативный консольный клиент для работы с базой данных.
1. Подключение с сервера (локально):
2. Подключение с удаленной машины:
3. Выполнение простого запроса:
4. Просмотр списка баз данных:
Подключение через DBeaver¶
DBeaver - это универсальный GUI-клиент для работы с различными базами данных, включая ClickHouse.
1. Установка DBeaver
Скачайте и установите DBeaver с официального сайта.
2. Создание нового подключения
- Запустите DBeaver
- Выберите Database >> New Database Connection (или нажмите
Ctrl+Shift+N)

- В списке баз данных найдите и выберите ClickHouse

- Нажмите
Next
3. Настройка параметров подключения
В окне настроек укажите следующие параметры:
Host: <IP-адрес вашего сервера>
Port: 8123
Database/Schema: (оставьте пустым или укажите default)
Username: default
Password: <пароль от root>

Критически важно
Для подключения через DBeaver используйте порт 8123.
4. Загрузка JDBC драйвера
При первом подключении DBeaver предложит загрузить JDBC драйвер для ClickHouse:
- Нажмите
Downloadв появившемся окне:

- Дождитесь завершения загрузки драйвера:

- Нажмите
OK.
5. Тестирование подключения
- Нажмите
Test Connection; - Если всё настроено правильно, появится сообщение: Connected (XXX ms):

- В сообщении будут указаны:
- Server: ClickHouse X.X.X.XXX
- Driver: ClickHouse JDBC Driver X.X.X
6. Завершение настройки
- Нажмите
Finish; - Подключение появится в Database Navigator;
- Раскройте дерево подключения для просмотра баз данных, таблиц и других объектов.

Возможные проблемы:
| Ошибка | Причина | Решение |
|---|---|---|
transport error: 400 | Используется порт 9000 вместо 8123 | Измените порт на 8123 |
Connection refused | Неверный IP или порт закрыт firewall | Проверьте IP-адрес и правила firewall |
Authentication failed | Неверный логин или пароль | Проверьте учетные данные |
Hostname is not specified | Случайно включен SSH-туннель без настройки | Закройте вкладку SSH в настройках подключения |
Основные операции в ClickHouse¶
Создание базы данных¶
Создание таблицы¶
CREATE TABLE my_database.events
(
event_date Date,
event_time DateTime,
user_id UInt32,
event_type String,
value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);
Вставка данных¶
INSERT INTO my_database.events VALUES
('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);
Выборка данных¶
Простая выборка:
Агрегация данных:
SELECT
event_type,
count() as events_count,
avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;
Временные ряды:
SELECT
toStartOfHour(event_time) as hour,
count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;
Импорт данных из CSV¶
Создание таблицы:
CREATE TABLE my_database.logs
(
timestamp DateTime,
level String,
message String
)
ENGINE = MergeTree()
ORDER BY timestamp;
Импорт данных:
Управление пользователями и правами¶
Создание пользователя:
Выдача прав:
Просмотр пользователей:
Просмотр прав:
Управление сервисом¶
Запуск сервиса:
Остановка сервиса:
Перезапуск сервиса:
Статус сервиса:
Просмотр логов:
Примечание
Если вы работаете не от пользователя root, добавьте sudo перед командами: sudo clickhouse start
Проверка активных портов¶
Проверить, какие порты слушает ClickHouse:
Или более детально:
Проверить настроенные порты в конфигурации:
Проверить конкретный порт:
Ожидаемый результат проверки портов:
LISTEN *:8123 clickhouse-serv (HTTP)
LISTEN *:9000 clickhouse-serv (Native TCP)
LISTEN *:9004 clickhouse-serv (MySQL)
LISTEN *:9005 clickhouse-serv (PostgreSQL)
LISTEN *:9009 clickhouse-serv (Interserver)
Примечание
Подробная информация по настройке и оптимизации ClickHouse содержится в официальной документации разработчиков.
Заказ ClickHouse с помощью API¶
Для установки данного ПО с использованием API следуйте этой инструкции.