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

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

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

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

Service Connect

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

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

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, 'Привет, ClickHouse!',                                 now(),       -1.0    ),
    (102, 'Вставляйте большое количество строк за один пакет',                     yesterday(), 1.41421 ),
    (102, 'Сортируйте данные на основе наиболее часто используемых запросов', today(),     2.718   ),
    (101, 'Гранулы — это минимальные порции данных при чтении',      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 │ Вставляйте много строк за один пакет               │ 2022-03-21 00:00:00 │ 1.41421 │
│     102 │ Сортируйте данные на основе часто используемых запросов │ 2022-03-22 00:00:00 │   2.718 │
│     101 │ Привет, ClickHouse!                                │ 2022-03-22 14:04:09 │      -1 │
│     101 │ Гранулы — это наименьшие порции считываемых данных │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

Получено 4 строки. Затрачено: 0,008 сек.
  1. Добавьте клаузу FORMAT, чтобы указать один из множества поддерживаемых в ClickHouse форматов вывода:

SELECT *
FROM helloworld.my_first_table
ORDER BY timestamp
FORMAT TabSeparated

В приведенном выше запросе результат возвращается в формате с разделителями-табуляциями:

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

102 Вставляйте много строк за один пакет      2022-03-21 00:00:00     1.41421
102 Сортируйте данные на основе часто используемых запросов  2022-03-22 00:00:00     2.718
101 Привет, ClickHouse!  2022-03-22 14:04:09     -1
101 Гранулы — это наименьшие порции данных для чтения       2022-03-22 14:04:14     3.14159

4 строк в наборе. Прошло: 0.005 sec.
  1. Чтобы выйти из клиента clickhouse, введите команду exit:

exit

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

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

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

102,Это данные в файле,2022-02-22 10:43:28,123.45
101,Значения разделены запятыми,2022-02-23 00:00:00,456.78
103,Используйте 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-файла

Что дальше?