Вопрос проверяет понимание архитектурных отличий ClickHouse и умение объяснить, почему он подходит для аналитики, а не для транзакций.
ClickHouse — это колоночная аналитическая база данных. Он оптимизирован под чтение и агрегацию больших объёмов данных. В отличие от классических реляционных СУБД, ClickHouse плохо подходит для частых обновлений и транзакций. Он делает ставку на скорость аналитических запросов. Это принципиально разные классы систем.
ClickHouse проектировался с нуля как аналитическое хранилище, поэтому его архитектура сильно отличается от классических реляционных СУБД вроде PostgreSQL или MySQL.
Column-oriented database — это база данных, которая хранит данные по колонкам, а не по строкам.
Главное отличие ClickHouse — способ хранения.
ClickHouse:
читает только нужные колонки;
эффективно сжимает данные;
минимизирует объём дискового I/O.
Это делает:
COUNT;
SUM;
GROUP BY
очень быстрыми даже на миллиардах строк.
ClickHouse ориентирован на:
массовую вставку (INSERT батчами);
чтение;
почти неизменяемые данные.
Частые:
UPDATE;
DELETE;
сложные транзакции
не являются его сильной стороной.
В ClickHouse:
нет полноценного ACID для OLTP-сценариев;
нет строгой изоляции транзакций;
обновления реализуются через мутации.
Это допустимо для аналитики, но плохо для OLTP.
ClickHouse:
эффективно использует CPU;
масштабируется горизонтально;
оптимизирован под сканирование данных.
Он рассчитан на:
большие объёмы;
сложные агрегации;
BI и отчётность.
На концептуальном уровне:
реляционные СУБД — «много маленьких операций»;
ClickHouse — «редко пишем, много и быстро читаем».
ClickHouse принципиально отличается от классических реляционных СУБД колоночным хранением и ориентацией на аналитические запросы. Его стоит использовать для OLAP-задач, но не для транзакционной логики приложения.