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

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