Движки ClickHouse

В Экстракторе 1С при подключении к СУБД ClickHouse используются движки MergeTree и ReplacingMergeTree.

Clickhouse — это колоночная (столбцовая) аналитическая СУБД с открытым кодом. Позволяет выполнять аналитические запросы в режиме реального времени на структурированных больших данных.

Движок таблицы ClickHouse — это название типа таблицы.

Каждый движок обладает своими свойствами и особыми методами использования.
Проще говоря, каждый движок «заточен» под определенное применение. И процессы, на которые этот движок «заточен», максимально оптимизированы внутри СУБД ClickHouse.

В Экстракторе 1С используются только движки семейства MergeTree. Это наиболее универсальные и функциональные движки таблиц для задач с высокой загрузкой. Общим свойством этих движков является быстрая вставка данных с последующей фоновой обработкой данных. Так же они поддерживают партицирование. Этот набор свойств - то, что нужно для выгрузки больших наборов данных.

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

Мы же, в этой статье, рассмотрим каждый из движков и постараемся, при этом, обойтись без массы технических терминов. Наша цель: помочь Вам выбрать движок, который подойдет для решения Вашей задачи.

MergeTree​

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

ReplacingMergeTree

Движок отличается от MergeTree тем, что выполняет удаление дублирующихся записей с одинаковым значением ключа сортировки. Проще говоря, этот движок сам удаляет так называемые «дубли». С помощью него вы можете просто добавлять новые (более актуальные) данные, движок сам удалит старые.

Есть конечно и небольшой минус: нет никакой гарантии отсутствия дублирующихся записей в любой момент времени. То есть он конечно удаляет «дубли», но может и не успеть удалить их до того, как вы захотите их прочесть. Тут уже решать вам, как вы дальше будете использовать свою таблицу.

Например, вы можете делать запросы на чтение, используя инструкцию: Sеlect * Frоm Справочник FINAL, чтобы убрать дублирующиеся строки.

Пример, как можно применить данный движок: