VK Cloud logo

Подключение к экземпляру сервиса

Cloud ClickHouse принимает подключения по двум протоколам: TCP и HTTP. Соединение с экземпляром сервиса защищено с помощью самоподписанного TLS-сертификата.

В инструкции приведены примеры подключения с помощью clickhouse-client (для подключения из терминала) и драйверов для Python, Java, C++, Go (для подключения из кода приложения).

Подготовка к подключению

  1. Перейдите в личный кабинет VK Cloud.

  2. Перейдите в раздел Data PlatformЭкземпляры сервисов. Убедитесь, что нужный экземпляр Cloud ClickHouse находится в статусе Активно.

  3. На вкладке Общая информация экземпляра сервиса из нужной строки подключения, в зависимости от протокола (TCP или HTTP) и наличия TLS-шифрования, скопируйте хост и порт.

  4. Подготовьте название базы данных, а также логин и пароль учетной записи пользователя Cloud ClickHouse. Это может быть:

Дальнейшие действия зависят от способа подключения:

В результате выполнения каждого примера подключения выведется версия Cloud ClickHouse.

clickhouse-client

clickhouse-client позволяет подключаться к экземпляру Cloud ClickHouse по TCP. Рекомендуется использовать клиент той же версии, что и экземпляр. Минимальное требование — совпадение первых двух чисел версии: для экземпляра версии 24.3.18.7 подойдет клиент 24.3.0.0 и выше, для версии 25.3.14.14 — клиент 25.3.0.0 и выше.

  1. Загрузите пакет нужной версии:

  2. Установите клиент по инструкции из официальной документации ClickHouse.

  3. Откройте терминал и подключитесь с TLS:

    $ clickhouse-client \   --host=<ХОСТ> \   --port=<ПОРТ> \   --user='<ЛОГИН>' \   --password='<ПАРОЛЬ>' \   --secure \   --accept-invalid-certificate

    Для подключения без TLS уберите флаги --secure и --accept-invalid-certificate.

  4. Проверьте соединение, выполнив тестовый запрос:

    SELECT version();

Python

Для подключения с помощью Python используйте драйвер в зависимости от типа протокола:

  • clickhouse-connect — подключение по HTTP. Рекомендуемая версия — 1.6.0. Минимальная — 1.0.0.
  • clickhouse-driver — подключение по TCP. Рекомендуемая версия — 0.2.11. Минимальная — 0.2.0.
  1. Откройте терминал и установите драйвер:

    $ pip install clickhouse-connect==1.6.0
  2. Для подключения с 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

Для подключения с помощью Java по протоколу HTTP используйте JDBC-драйвер clickhouse-jdbc.

Рекомендуемая версия драйвера — 0.9.8. Минимальная — 0.7.0.

  1. Добавьте зависимость в проект:

    <dependency>    <groupId>com.clickhouse</groupId>    <artifactId>clickhouse-jdbc</artifactId>    <version>0.9.8</version></dependency>
  2. Для подключения с 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++

Для подключения с помощью C++ по TCP используйте клиентскую библиотеку clickhouse-cpp.

Рекомендуемая и минимальная версия библиотеки — 2.6.0.

  1. Откройте терминал и установите библиотеку 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
  2. Для подключения с 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

Для подключения с помощью Go по TCP или HTTP используйте драйвер clickhouse-go.

Рекомендуемая версия драйвера — 2.48.0. Минимальная — 2.0.0.

  1. Откройте терминал и установите драйвер:

    $ go get github.com/ClickHouse/clickhouse-go/v2@v2.48.0
  2. Для подключения с 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 string    if err := conn.QueryRow("SELECT version()").Scan(&version); err != nil {        log.Fatal(err)    }    fmt.Println(version)}

    Для подключения без TLS уберите параметры secure=true&skip_verify=true из строки подключения.

Была ли статья полезна?