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

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

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

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

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

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

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

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

По умолчанию новые организации попадают в тарифный уровень Scale и создадут 3 ^^реплики^^ с 4 VCPUs и 16 GiB ОЗУ. Вертикальное автмасштабирование будет включено по умолчанию на тарифном уровне Scale. Уровни организации можно изменить после создания сервиса на странице 'Планы' вашей организации.

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

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

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

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

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

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

Подключение с помощью SQL консоли

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

SQL консоль

Создайте вкладку запроса и введите простой запрос, чтобы проверить, что ваше соединение работает:

SHOW databases

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

SQL консоль

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

Подключение с помощью вашего приложения

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

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

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

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

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

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

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

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

ClickPipes

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

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

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

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

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 определяет, как данные сортируются при записи на диск. Каждые 8 192 строки или 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. Нажмите Подключиться в левом меню, чтобы получить эти данные. В диалоговом окне выберите Native из выпадающего списка:

подключение клиента clickhouse

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

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

./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

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

Обычной задачей при начале работы с базой данных является вставка некоторых данных, которые у вас уже есть в файлах. У нас есть несколько примеров данных в интернете, которые вы можете вставить, представляющие данные потоков кликов — они включают идентификатор пользователя, 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 файла

Что дальше?