Подключение к экземпляру сервиса
Cloud ClickHouse принимает подключения по двум протоколам: TCP и HTTP. Соединение с экземпляром сервиса защищено с помощью самоподписанного TLS-сертификата.
В инструкции приведены примеры подключения с помощью clickhouse-client (для подключения из терминала) и драйверов для Python, Java, C++, Go (для подключения из кода приложения).
-
Перейдите в личный кабинет VK Cloud.
-
Перейдите в раздел Data Platform → Экземпляры сервисов. Убедитесь, что нужный экземпляр Cloud ClickHouse находится в статусе
Активно. -
На вкладке Общая информация экземпляра сервиса из нужной строки подключения, в зависимости от протокола (TCP или HTTP) и наличия TLS-шифрования, скопируйте хост и порт.
-
Подготовьте название базы данных, а также логин и пароль учетной записи пользователя Cloud ClickHouse. Это может быть:
- пользователь, заданный при создании экземпляра;
- дополнительный пользователь, добавленный в экземпляр вручную.
Дальнейшие действия зависят от способа подключения:
В результате выполнения каждого примера подключения выведется версия Cloud ClickHouse.
clickhouse-client позволяет подключаться к экземпляру Cloud ClickHouse по TCP. Рекомендуется использовать клиент той же версии, что и экземпляр. Минимальное требование — совпадение первых двух чисел версии: для экземпляра версии 24.3.18.7 подойдет клиент 24.3.0.0 и выше, для версии 25.3.14.14 — клиент 25.3.0.0 и выше.
-
Загрузите пакет нужной версии:
-
Установите клиент по инструкции из официальной документации ClickHouse.
-
Откройте терминал и подключитесь с TLS:
$ clickhouse-client \--host=<ХОСТ> \--port=<ПОРТ> \--user='<ЛОГИН>' \--password='<ПАРОЛЬ>' \--secure \--accept-invalid-certificateДля подключения без TLS уберите флаги
--secureи--accept-invalid-certificate. -
Проверьте соединение, выполнив тестовый запрос:
SELECT version();
Для подключения с помощью Python используйте драйвер в зависимости от типа протокола:
- clickhouse-connect — подключение по HTTP. Рекомендуемая версия —
1.6.0. Минимальная —1.0.0. - clickhouse-driver — подключение по TCP. Рекомендуемая версия —
0.2.11. Минимальная —0.2.0.
-
Откройте терминал и установите драйвер:
$ pip install clickhouse-connect==1.6.0 -
Для подключения с TLS выполните код:
import clickhouse_connectclient = clickhouse_connect.get_client(host='<ХОСТ>',port='<ПОРТ>',username='<ЛОГИН>',password='<ПАРОЛЬ>',database='<БД>',secure=True,verify=False)print(client.command('SELECT version()'))Для подключения без TLS уберите параметры
secure=Trueиverify=False.
Для подключения с помощью Java по протоколу HTTP используйте JDBC-драйвер clickhouse-jdbc.
Рекомендуемая версия драйвера — 0.9.8. Минимальная — 0.7.0.
-
Добавьте зависимость в проект:
MavenGradle<dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.9.8</version></dependency> -
Для подключения с TLS выполните код:
import com.clickhouse.jdbc.ClickHouseDataSource;String url = "jdbc:clickhouse://<ХОСТ>:<ПОРТ>/<БД>?ssl=true&sslmode=NONE";Properties props = new Properties();props.setProperty("user", "<ЛОГИН>");props.setProperty("password", "<ПАРОЛЬ>");ClickHouseDataSource ds = new ClickHouseDataSource(url, props);try (Connection conn = ds.getConnection();Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("SELECT version()")) {if (rs.next()) {System.out.println(rs.getString(1));}}Для подключения без TLS уберите параметры
?ssl=true&sslmode=NONEиз URL-адреса.
Для подключения с помощью C++ по TCP используйте клиентскую библиотеку clickhouse-cpp.
Рекомендуемая и минимальная версия библиотеки — 2.6.0.
-
Откройте терминал и установите библиотеку
clickhouse-cpp, например из исходного кода:$ git clone --branch v2.6.0 https://github.com/ClickHouse/clickhouse-cpp.git$ mkdir clickhouse-cpp/build && cd clickhouse-cpp/build$ cmake ..$ make$ sudo make install -
Для подключения с TLS выполните код:
#include <clickhouse/client.h>clickhouse::Client client(clickhouse::ClientOptions().SetHost("<ХОСТ>").SetPort("<ПОРТ>").SetUser("<ЛОГИН>").SetPassword("<ПАРОЛЬ>").SetDefaultDatabase("<БД>").SetSSLOptions(clickhouse::ClientOptions::SSLOptions().SetSkipVerification(true)));clickhouse::Block block;client.Select("SELECT version()", &block);if (block.GetRowCount() > 0) {std::cout << block[0]->As<clickhouse::ColumnString>()->At(0) << std::endl;}Для подключения без TLS уберите метод
.SetSSLOptions(...)из цепочки вызововClientOptions().
Для подключения с помощью Go по TCP или HTTP используйте драйвер clickhouse-go.
Рекомендуемая версия драйвера — 2.48.0. Минимальная — 2.0.0.
-
Откройте терминал и установите драйвер:
$ go get github.com/ClickHouse/clickhouse-go/v2@v2.48.0 -
Для подключения с TLS выполните код:
package mainimport ("database/sql""fmt""log"_ "github.com/ClickHouse/clickhouse-go/v2")func main() {conn, err := sql.Open("clickhouse", "clickhouse://<ЛОГИН>:<ПАРОЛЬ>@<ХОСТ>:<ПОРТ>/<БД>?secure=true&skip_verify=true")if err != nil {log.Fatal(err)}defer conn.Close()var version stringif err := conn.QueryRow("SELECT version()").Scan(&version); err != nil {log.Fatal(err)}fmt.Println(version)}Для подключения без TLS уберите параметры
secure=true&skip_verify=trueиз строки подключения.