Skip to main content
Как и в большинстве систем управления базами данных, в ClickHouse таблицы логически объединяются в базы данных. Чтобы создать новую базу данных в ClickHouse, используйте команду CREATE DATABASE:
CREATE DATABASE IF NOT EXISTS helloworld
Аналогично, используйте CREATE TABLE, чтобы создать новую таблицу. Если вы не укажете имя базы данных, таблица будет находиться в базе данных default. Следующая таблица с именем 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-битное целое число без знака
  • 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.
Подробнее см. в учебном модуле Modeling Data в ClickHouse Academy.
Last modified on June 10, 2026