Что такое первичный ключ в ClickHouse и чем он отличается от первичного ключа в обычных БД?

В MergeTree первичный ключ задаёт разреженный индекс для отбора данных, но не запрещает дубликаты. Это отличается от ограничения PRIMARY KEY в PostgreSQL.

Короткий ответ

Что ответить на собеседовании

В MergeTree первичный ключ задаёт разреженный индекс для отбора данных, но не запрещает дубликаты. Это отличается от ограничения PRIMARY KEY в PostgreSQL.

Подробный разбор

Ответ с пояснениями

В MergeTree первичный ключ задаёт разреженный индекс для отбора данных, но не запрещает дубликаты. Это отличается от ограничения PRIMARY KEY в PostgreSQL.

ORDER BY определяет сортировку данных внутри частей, а PRIMARY KEY — ключ индексирования; при отдельном задании он должен соответствовать префиксу ключа сортировки. Индекс хранит ориентиры по группам строк, а не отдельную запись для каждой строки.

Поэтому одинаковые значения допустимы. Уникальность и выбор актуальной версии решаются отдельно, с учётом движка и запросов. Нельзя переносить ожидания от OLTP-ключа на ClickHouse без проверки семантики.

Источник: clickhouse.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее