Ответ вслух Middle Выбор хранилища обновлено

ClickHouse против PostgreSQL

Вопрос

Чем ClickHouse отличается от PostgreSQL и почему нельзя просто взять одну из них для всего?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

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

Что должно прозвучать в ответе

  • PostgreSQL построчный OLTP: транзакции, точечные чтения и изменения

  • ClickHouse колоночный OLAP: агрегаты по миллиардам строк, сжатие

  • ClickHouse любит вставки пачками и плохо подходит для частых UPDATE

  • Аналитика на основной БД мешает продуктовым запросам

  • Данные в ClickHouse доставляют из OLTP через очередь или CDC

Что могут спросить следом

  • Как доставить события в ClickHouse?
  • Почему одиночные INSERT в ClickHouse плохая идея?

Разбор

PostgreSQL хранит данные строками и заточен на короткие транзакции: найти заказ по id, обновить статус, атомарно списать деньги. ClickHouse хранит колонками: запрос «выручка по дням за год» читает две колонки из миллиардов строк, они сильно сжаты и обрабатываются векторно, поэтому это секунды. Зато обновления отдельных строк и одиночные вставки ему неудобны: каждая вставка создаёт кусок данных, их потом приходится сливать в фоне, поэтому пишут пачками. Тяжёлую аналитику на основной БД гонять опасно: она съедает ресурсы продуктовых запросов. Обычная схема: OLTP в PostgreSQL, события через Kafka в ClickHouse, отчёты оттуда.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме