Вопрос с собеседования · Базы данных

Почему колоночное хранение выигрывает у строчного в аналитических нагрузках?

MiddleКолоночные БД
Ещё спрашивают так:
  • Почему ClickHouse быстрый на аналитике?
Коротко

Читаются только нужные колонки, они сжимаются в разы лучше и обрабатываются векторно блоками. Точечные вставки и обновления, наоборот, дорогие.

  • Запрос по 3 колонкам из 100 читает ~3% данных
  • Однотипные значения: словари, RLE, дельта-кодирование
  • Данные пишут пачками; изменения — асинхронными мутациями

А ещё Типичная схема: OLTP-база → CDC → колоночное хранилище

Подробно

В аналитике типичный запрос трогает несколько колонок, но миллионы строк, поэтому решающим становится объём прочитанных данных. Колоночный формат позволяет не поднимать лишнее и жать значения одного типа специализированными методами. Обратная сторона — операции, естественные для OLTP: вставка одной строки затрагивает все колоночные файлы, а обновление и удаление отдельной записи дороги, поэтому такие системы ориентированы на пакетную загрузку и почти не изменяемые данные. Отсюда стандартное разделение: транзакционная нагрузка живёт в строчной СУБД, а данные для аналитики переливают в колоночное хранилище.

Что хотят услышать

  • Три причины выигрыша.
  • Цена для точечных операций.
  • Типичная архитектура.

Частые ошибки

  • Использовать колоночное хранилище как основную транзакционную базу.
  • Ожидать от него быстрых точечных обновлений и удалений.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Запрос читает только нужные колонки, а не строку целиком
  • ✓Однотипные значения в колонке сжимаются гораздо лучше
  • ✗Точечное обновление отдельной строки становится дешевле, так как меняется меньше данных
  • ✓Агрегации идут по плотным массивам значений, пакетами

Что спросят дальше

  • Чем OLTP-нагрузка принципиально отличается от OLAP?
  • Как данные обычно попадают из транзакционной базы в аналитическую?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

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

Разбор собеседования