Создание Таблиц в 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.