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

Быстрый старт с 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

  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-файла

Что дальше?