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