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

Глоссарий

Атомарность

Атомарность гарантирует, что транзакция (последовательность операций над базой данных) рассматривается как единое, неделимое целое. Это означает, что либо выполняются все операции внутри транзакции, либо не выполняется ни одна. Пример атомарной транзакции — перевод денег с одного банковского счёта на другой. Если какой-либо из шагов перевода завершается ошибкой, транзакция считается несостоявшейся, и деньги остаются на первом счёте. Атомарность гарантирует, что деньги не будут ни потеряны, ни созданы из ничего.

Блок

Блок — это логическая единица организации обработки и хранения данных. Каждый блок содержит колоночные данные, которые обрабатываются совместно для повышения производительности при выполнении запросов. Обрабатывая данные блоками, ClickHouse эффективно использует ядра процессора, минимизируя промахи кэша и обеспечивая векторизованное выполнение. ClickHouse использует различные алгоритмы сжатия, такие как LZ4, ZSTD и Delta, для сжатия данных в блоках.

Кластер

Набор узлов (серверов), которые совместно хранят и обрабатывают данные.

CMEK

Ключи шифрования, управляемые клиентом (Customer-managed encryption keys, CMEK), позволяют использовать ключ из службы управления ключами (KMS) для шифрования ключа данных на диске ClickHouse и защиты данных в состоянии покоя.

Словарь

Словарь — это сопоставление пар ключ-значение, полезное для различных типов справочных списков. Это мощная возможность, которая позволяет эффективно использовать словари в запросах, что часто оказывается более производительным, чем использование JOIN со справочными таблицами.

Распределённая таблица

Распределённая таблица в ClickHouse — это специальный тип таблицы, который не хранит данные сама по себе, а предоставляет единое представление для распределённой обработки запросов по нескольким серверам кластера.

Гранула

Гранула — это набор строк в несжатом блоке. При чтении данных ClickHouse обращается к гранулам, а не к отдельным строкам, что позволяет быстрее обрабатывать данные в аналитических нагрузках. По умолчанию гранула содержит 8192 строки. Первичный индекс содержит одну запись на гранулу.

Инкрементальное материализованное представление

В ClickHouse инкрементальное материализованное представление — это тип материализованного представления, который обрабатывает и агрегирует данные во время вставки. Когда в исходную таблицу вставляются новые данные, материализованное представление выполняет предопределённый агрегирующий SQL-запрос только для вновь вставленных блоков и записывает агрегированные результаты в целевую таблицу.

Легковесное обновление

Легковесное обновление в ClickHouse — это экспериментальная функция, которая позволяет обновлять строки в таблице с использованием стандартного SQL-синтаксиса UPDATE, но вместо перезаписи целых столбцов или кусков данных (как в случае традиционных мутаций) создаёт части-патчи, содержащие только обновлённые столбцы и строки. Эти обновления сразу же видны в запросах SELECT за счёт применения патчей, но физическое представление данных изменяется только во время последующих слияний.

Материализованное представление

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

MergeTree

MergeTree в ClickHouse — это табличный движок, разработанный для высоких скоростей приёма данных и работы с большими объёмами. Это основной движок хранения в ClickHouse, предоставляющий такие возможности, как колонночное хранение, настраиваемое партиционирование, разрежённые первичные индексы и поддержка фонового слияния данных.

Мутация

Мутация в ClickHouse — это операция, которая изменяет или удаляет существующие данные в таблице, как правило, с помощью команд ALTER TABLE ... UPDATE или ALTER TABLE ... DELETE. Мутации реализованы как асинхронные фоновые процессы, которые перезаписывают все части данных таблицы, затронутые изменением, вместо изменения строк «на месте».

Мутация "на лету"

Мутации "на лету" в ClickHouse — это механизм, который позволяет обновлениям и удалениям становиться видимыми в последующих запросах SELECT сразу после отправки мутации, без ожидания завершения фонового процесса мутации.

Части

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

Ключ партиционирования

Ключ партиционирования в ClickHouse — это SQL-выражение, задаваемое в операторе PARTITION BY при создании таблицы. Он определяет, как данные логически объединяются в партиции на диске. Каждое уникальное значение ключа партиционирования образует отдельную физическую партицию, что обеспечивает эффективное управление данными, включая операции удаления, перемещения или архивирования целых партиций.

Первичный ключ

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

Проекция

Проекция в ClickHouse — это скрытая, автоматически обслуживаемая таблица, которая хранит данные в другом порядке или с предвычисленными агрегатами, чтобы ускорять выполнение запросов, особенно запросов, фильтрующих по столбцам, не входящим в основной первичный ключ.

Обновляемое материализованное представление

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

Реплика

Копия данных, хранящихся в базе данных ClickHouse. Вы можете иметь любое количество реплик одних и тех же данных для повышения отказоустойчивости и надежности. Реплики используются совместно с движком таблицы ReplicatedMergeTree, который позволяет ClickHouse поддерживать несколько копий данных синхронизированными на разных серверах.

Шард

Часть данных. В ClickHouse всегда есть как минимум один шард для ваших данных. Если вы не распределяете данные между несколькими серверами, все данные будут храниться в одном шарде. Шардинг данных по нескольким серверам можно использовать для распределения нагрузки, когда возможностей одного сервера уже недостаточно.

Индекс пропуска

Индексы пропуска используются для хранения небольших объёмов метаданных на уровне нескольких последовательных гранул, что позволяет ClickHouse не сканировать нерелевантные строки. Индексы пропуска представляют собой лёгкую альтернативу проекциям.

Ключ сортировки

В ClickHouse ключ сортировки определяет физический порядок строк на диске. Если вы не задаёте первичный ключ, ClickHouse использует ключ сортировки в качестве первичного ключа. Если вы задаёте оба, первичный ключ должен быть префиксом ключа сортировки.

Разреженный индекс

Тип индекса, при котором первичный индекс содержит одну запись на группу строк, а не на каждую отдельную строку. Запись, соответствующая группе строк, называется меткой (mark). При использовании разреженных индексов ClickHouse сначала определяет группы строк, которые потенциально удовлетворяют запросу, а затем обрабатывает их отдельно, чтобы найти совпадения. Благодаря этому первичный индекс достаточно мал, чтобы его можно было целиком загрузить в память.

Движок таблицы

Движки таблиц в ClickHouse определяют, как выполняется запись, хранение и доступ к данным. MergeTree — самый распространённый движок таблиц и обеспечивает быструю вставку больших объёмов данных, которые затем обрабатываются в фоновом режиме.

TTL

Time To Live (TTL) — это механизм ClickHouse, который автоматически перемещает, удаляет или агрегирует столбцы или строки по истечении определённого периода времени. Это позволяет более эффективно управлять хранением данных, поскольку вы можете удалять, перемещать или архивировать данные, к которым больше нет необходимости часто обращаться.