Перейти к основному содержимому
Перейти к основному содержимому

Быстрый старт с ClickHouse Cloud

Самый быстрый и простой способ начать работу с ClickHouse — создать новый сервис в ClickHouse Cloud. В этом руководстве по быстрому старту вы сможете настроить систему в три простых шага.

Создайте сервис ClickHouse

Чтобы создать бесплатный сервис ClickHouse в ClickHouse Cloud, вам нужно просто зарегистрироваться, выполнив следующие шаги:

  • Создайте учётную запись на странице регистрации
  • Вы можете зарегистрироваться с помощью адреса электронной почты, Google SSO, Microsoft SSO, AWS Marketplace, Google Cloud или Microsoft Azure
  • Если вы зарегистрировались с помощью адреса электронной почты и пароля, не забудьте в течение ближайших 24 часов подтвердить свой адрес по ссылке из полученного письма.
  • Войдите, используя имя пользователя и пароль, которые вы только что создали
Выбор плана

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

Новый сервис ClickHouse

По умолчанию новые организации размещаются на тарифе Scale и создают 3 реплики, каждая с 4 виртуальными процессорами и 16 ГиБ оперативной памяти. Вертикальное автомасштабирование включено по умолчанию на тарифе Scale. Вы можете изменить тариф организации позже на странице 'Тарифы'.

При необходимости можно настроить ресурсы сервиса, указав минимальное и максимальное количество реплик для масштабирования. Когда всё готово, нажмите Create service.

Лимиты масштабирования

Поздравляем! Ваш сервис ClickHouse Cloud запущен и работает, процесс подключения завершён. Продолжайте чтение, чтобы узнать, как начать приём данных и выполнять запросы к ним.

Подключение к ClickHouse

Существует два способа подключения к ClickHouse:

  • Подключитесь через нашу веб-консоль SQL
  • Подключение из приложения

Подключение через SQL-консоль

Для быстрого начала работы ClickHouse предоставляет веб-консоль SQL, на которую вы будете перенаправлены после завершения онбординга.

SQL-консоль

Создайте вкладку запроса и введите простой запрос для проверки работоспособности подключения:

SHOW databases

В списке должно отображаться 4 базы данных, а также все добавленные вами.

SQL-консоль

Вот и всё — вы готовы начать использовать свой новый сервис ClickHouse!

Подключение приложения

Нажмите кнопку подключения в меню навигации. Откроется модальное окно с учетными данными для вашего сервиса и инструкциями по подключению с использованием вашего интерфейса или клиентских библиотек.

Подключение к сервису

Если вы не видите клиент для вашего языка программирования, ознакомьтесь со списком интеграций.

Добавление данных

ClickHouse эффективнее всего работает с данными! Существует несколько способов добавления данных, большинство из которых доступны на странице Data Sources, доступной из навигационного меню.

Источники данных

Вы можете загрузить данные следующими способами:

  • Настройте ClickPipe для приёма данных из таких источников, как S3, Postgres, Kafka или GCS
  • Используйте SQL-консоль
  • Используйте клиент ClickHouse
  • Загрузите файл — поддерживаются форматы JSON, CSV и TSV
  • Загрузите данные из файла по URL-адресу

ClickPipes

ClickPipes — управляемая платформа интеграции, которая упрощает приём данных из различных источников до нескольких нажатий кнопок. Разработанная для самых требовательных рабочих нагрузок, надёжная и масштабируемая архитектура ClickPipes обеспечивает стабильную производительность и отказоустойчивость. ClickPipes можно использовать как для долгосрочной потоковой передачи данных, так и для однократной загрузки.

Выберите источник данных

Добавление данных через SQL Console

Как и большинство систем управления базами данных, ClickHouse логически группирует таблицы в базы данных. Для создания новой базы данных в ClickHouse используйте команду CREATE DATABASE:

CREATE DATABASE IF NOT EXISTS helloworld

Выполните следующую команду, чтобы создать таблицу my_first_table в базе данных helloworld:

CREATE TABLE helloworld.my_first_table
(
    user_id UInt32,
    message String,
    timestamp DateTime,
    metric Float32
)
ENGINE = MergeTree()
PRIMARY KEY (user_id, timestamp)

В приведённом выше примере my_first_table — это таблица MergeTree с четырьмя столбцами:

  • user_id: 32-битное целое число без знака (UInt32)
  • message: тип данных String, который заменяет такие типы, как VARCHAR, BLOB, CLOB и другие типы в сторонних системах управления базами данных
  • timestamp: значение типа DateTime, представляющее момент времени
  • metric: 32-битное число с плавающей запятой (Float32)
Движки таблиц

Движки таблиц определяют:

  • Где и как хранятся данные
  • Поддерживаемые запросы
  • Реплицируются ли данные

Существует множество движков таблиц, но для простой таблицы на одноузловом сервере ClickHouse чаще всего выбирают MergeTree.

Краткое введение в первичные ключи

Прежде чем двигаться дальше, важно понять, как работают первичные ключи в ClickHouse (их реализация может оказаться неожиданной!):

  • первичные ключи в ClickHouse не уникальны для каждой строки таблицы

Первичный ключ таблицы ClickHouse определяет порядок сортировки данных при записи на диск. Каждые 8192 строки или 10 МБ данных (называемые гранулярностью индекса) создают запись в файле индекса первичного ключа. Эта концепция гранулярности создаёт разреженный индекс, который легко помещается в памяти, а гранулы представляют собой полосу данных минимального объёма столбцов, обрабатываемых во время выполнения запросов SELECT.

Первичный ключ определяется с помощью параметра PRIMARY KEY. Если таблица создаётся без указания PRIMARY KEY, ключом становится кортеж, заданный в предложении ORDER BY. При одновременном указании PRIMARY KEY и ORDER BY первичный ключ должен быть подмножеством порядка сортировки.

Первичный ключ также является ключом сортировки и представляет собой кортеж (user_id, timestamp). Таким образом, данные в каждом файле столбца будут отсортированы сначала по user_id, затем по timestamp.

Для более глубокого изучения основных концепций ClickHouse см. "Основные концепции".

Вставка данных в таблицу

Вы можете использовать знакомую команду INSERT INTO TABLE в ClickHouse, но важно понимать, что каждая вставка в таблицу MergeTree приводит к созданию части в хранилище.

Рекомендация ClickHouse

Вставляйте большое количество строк в одном пакете — десятки тысяч или даже миллионы строк за раз. Не волнуйтесь — ClickHouse легко справляется с такими объёмами, и это сэкономит вам деньги, поскольку к вашему сервису будет отправлено меньше запросов на запись.


Даже для простого примера давайте вставим несколько строк за один раз:

INSERT INTO helloworld.my_first_table (user_id, message, timestamp, metric) VALUES
    (101, 'Hello, ClickHouse!',                                 now(),       -1.0    ),
    (102, 'Insert a lot of rows per batch',                     yesterday(), 1.41421 ),
    (102, 'Sort your data based on your commonly-used queries', today(),     2.718   ),
    (101, 'Granules are the smallest chunks of data read',      now() + 5,   3.14159 )
Примечание

Обратите внимание, что столбец timestamp заполняется с помощью различных функций Date и DateTime. В ClickHouse есть сотни полезных функций, которые вы можете просмотреть в разделе Функции.

Проверим, что всё работает:

SELECT * FROM helloworld.my_first_table

Добавление данных с помощью клиента ClickHouse

Вы также можете подключиться к сервису ClickHouse Cloud с помощью утилиты командной строки clickhouse client. Нажмите Connect в левом меню, чтобы получить эти сведения. В диалоговом окне выберите Native из выпадающего списка:

параметры подключения clickhouse client

  1. Установите ClickHouse.

  2. Выполните команду, подставив свой hostname, имя пользователя и пароль:

./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password>

Если вы видите приглашение со смайликом, можно приступать к выполнению запросов!

:)
  1. Попробуйте выполнить следующий запрос:

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp

Обратите внимание, что ответ возвращается в виде таблицы:

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│     102 │ Insert a lot of rows per batch                     │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Hello, ClickHouse!                                 │ 2022-03-22 14:04:09 │      -1 │
│     101 │ Granules are the smallest chunks of data read      │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 rows in set. Elapsed: 0.008 sec.
  1. Добавьте предложение FORMAT, чтобы указать один из множества форматов вывода, поддерживаемых в ClickHouse:

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

В приведённом выше запросе результат возвращается в виде значений, разделённых символами табуляции:

Query id: 3604df1c-acfd-4117-9c56-f86c69721121

102 Insert a lot of rows per batch      2022-03-21 00:00:00     1.41421
102 Sort your data based on your commonly-used queries  2022-03-22 00:00:00     2.718
101 Hello, ClickHouse!  2022-03-22 14:04:09     -1
101 Granules are the smallest chunks of data read       2022-03-22 14:04:14     3.14159

4 rows in set. Elapsed: 0.005 sec.
  1. Чтобы выйти из clickhouse client, введите команду exit:

exit

Загрузка файла

Распространённая задача при начале работы с базой данных — загрузить имеющиеся данные из файлов. Мы предоставляем образцы данных онлайн, которые можно использовать для демонстрации работы с данными о кликах (clickstream) — они включают идентификатор пользователя, посещённый URL и временную метку события.

Предположим, у нас есть следующий текст в CSV-файле с именем data.csv:

102,This is data in a file,2022-02-22 10:43:28,123.45
101,It is comma-separated,2022-02-23 00:00:00,456.78
103,Use FORMAT to specify the format,2022-02-21 10:43:30,678.90
  1. Следующая команда вставляет данные в таблицу my_first_table:

./clickhouse client --host HOSTNAME.REGION.CSP.clickhouse.cloud \
--secure --port 9440 \
--user default \
--password <password> \
--query='INSERT INTO helloworld.my_first_table FORMAT CSV' < data.csv
  1. Обратите внимание, что при выполнении запроса из SQL-консоли в таблице теперь отображаются новые строки:

Новые строки из CSV-файла

Фильтрация по IP-списку доступа

Прежде чем продолжить, рекомендуем настроить фильтрацию по IP-списку доступа. Подробности см. в разделе «Настройка IP-фильтров».

Что дальше?