Создание таблиц в 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 строки или 10 МБ
данных (называемых гранулярностью индекса) создают запись в файле индекса первичного ключа. Эта концепция гранулярности
создает разреженный индекс, который легко помещается в память, и гранулы представляют собой полоску наименьшего объема
данных колонки, которая обрабатывается во время SELECT
запросов.
Первичный ключ можно определить с помощью параметра PRIMARY KEY
. Если вы определите таблицу без указанного PRIMARY KEY
,
то ключ становится кортежем, указанным в предложении ORDER BY
. Если вы укажете как PRIMARY KEY
, так и ORDER BY
, первичный ключ должен быть префиксом порядка сортировки.
Первичный ключ также является ключом сортировки, который представляет собой кортеж (user_id, timestamp)
. Таким образом, данные, хранящиеся в каждом
файле колонки, будут отсортированы по user_id
, затем по timestamp
.
Для получения дополнительных сведений ознакомьтесь с обучающим модулем по моделированию данных в Академии ClickHouse.