Создание таблиц в ClickHouse
Как и большинство баз данных, ClickHouse логически группирует таблицы в базы данных. Используйте команду CREATE DATABASE
, чтобы создать новую базу данных в ClickHouse:
Аналогично, используйте CREATE TABLE
, чтобы определить новую таблицу. Если вы не укажете имя базы данных, таблица будет находиться в базе данных default
.
Следующая таблица с именем my_first_table
создается в базе данных helloworld
:
В приведенном выше примере my_first_table
является таблицей MergeTree
с четырьмя колонками:
user_id
: 32-битное беззнаковое целое числоmessage
: тип данныхString
, который заменяет такие типы, какVARCHAR
,BLOB
,CLOB
и другие из других систем баз данныхtimestamp
: значениеDateTime
, которое представляет мгновение во времениmetric
: 32-битное число с плавающей запятой
Двигатель таблицы определяет:
- Как и где хранятся данные
- Какие запросы поддерживаются
- Реплицируются ли данные или нет
Существует множество двигателей на выбор, но для простой таблицы на одноядерном сервере ClickHouse, MergeTree скорее всего будет вашим выбором.
Краткое введение в первичные ключи
Прежде чем вы продолжите, важно понять, как работают первичные ключи в ClickHouse (реализация первичных ключей может оказаться неожиданной!):
- первичные ключи в ClickHouse не уникальны для каждой строки в таблице
Первичный ключ таблицы ClickHouse определяет, как данные сортируются при записи на диск. Каждые 8,192 строки или 10MB данных (называемые гранулярностью индекса) создают запись в файле индекса первичного ключа. Эта концепция гранулярности создает разреженный индекс, который легко помещается в памяти, а гранулы представляют собой полосу наименьшего объема данных колонки, обрабатываемых во время запросов SELECT
.
Первичный ключ можно определить с помощью параметра PRIMARY KEY
. Если вы определяете таблицу без указания PRIMARY KEY
, тогда ключ становится кортежем, указанным в операторе ORDER BY
. Если вы указываете и PRIMARY KEY
, и ORDER BY
, первичный ключ должен быть префиксом порядка сортировки.
Первичный ключ также является ключом сортировки, который представляет собой кортеж (user_id, timestamp)
. Поэтому данные, хранящиеся в каждом файле колонки, будут отсортированы по user_id
, а затем по timestamp
.
Для получения более подробной информации ознакомьтесь с модулем обучения моделированию данных в ClickHouse Academy.