Как создать первичные ключи в ClickHouse



Я нашел несколько примеров в документации, где первичные ключи создаются путем передачи параметров в секцию двигателя.
Но я не нашел никакого описания о каком-либо аргументе к движку, что это значит и как я создаю первичный ключ.
Заранее спасибо. Было бы здорово добавить эту информацию в документацию, которой там нет.

906   1  

1 ответ:

Первичный ключ поддерживается для семейства движков хранения MergeTree. https://clickhouse.yandex/reference_en.html#MergeTree

Обратите внимание, что для большинства серьезных задач следует использовать двигатели из Семья мергетри.

Указывается в качестве параметров движку хранения.

Механизм принимает параметры: имя столбца типа даты, содержащего дату, выражение выборки (необязательно), кортеж, определяющий первичный ключ таблицы, и индекс детализации.

Пример без поддержки выборки:

MergeTree(EventDate, (CounterID, EventDate), 8192)

Пример с поддержкой выборки:

MergeTree(EventDate, intHash32(UserID), (CounterID, EventDate, intHash32(UserID)), 8192)

Итак, (CounterID, EventDate) или (CounterID, EventDate, intHash32(UserID)) является первичным ключом в этих примерах.

При использовании ReplicatedMergeTree существуют также два дополнительных параметра, идентифицирующих сегмент и реплику.

Https://clickhouse.yandex/reference_en.html#Creating%20replicated%20tables

Первичный ключ указан при создании таблицы и не может быть изменить позже.

Несмотря на название, первичный ключ не является уникальным. Он просто определяет порядок сортировки данных для оптимальной обработки запросов диапазона. В таблицу можно вставить несколько строк с одинаковым значением первичного ключа.

Comments

    Ничего не найдено.