Почему колоночное хранение выигрывает у строчного в аналитических нагрузках?
- Почему ClickHouse быстрый на аналитике?
Читаются только нужные колонки, они сжимаются в разы лучше и обрабатываются векторно блоками. Точечные вставки и обновления, наоборот, дорогие.
- Запрос по 3 колонкам из 100 читает ~3% данных
- Однотипные значения: словари, RLE, дельта-кодирование
- Данные пишут пачками; изменения — асинхронными мутациями
А ещё Типичная схема: OLTP-база → CDC → колоночное хранилище
Подробно
В аналитике типичный запрос трогает несколько колонок, но миллионы строк, поэтому решающим становится объём прочитанных данных. Колоночный формат позволяет не поднимать лишнее и жать значения одного типа специализированными методами. Обратная сторона — операции, естественные для OLTP: вставка одной строки затрагивает все колоночные файлы, а обновление и удаление отдельной записи дороги, поэтому такие системы ориентированы на пакетную загрузку и почти не изменяемые данные. Отсюда стандартное разделение: транзакционная нагрузка живёт в строчной СУБД, а данные для аналитики переливают в колоночное хранилище.
Что хотят услышать
- Три причины выигрыша.
- Цена для точечных операций.
- Типичная архитектура.
Частые ошибки
- Использовать колоночное хранилище как основную транзакционную базу.
- Ожидать от него быстрых точечных обновлений и удалений.
Проверьте себя
Несколько верных вариантов. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✓Запрос читает только нужные колонки, а не строку целиком
- ✓Однотипные значения в колонке сжимаются гораздо лучше
- ✗Точечное обновление отдельной строки становится дешевле, так как меняется меньше данных
- ✓Агрегации идут по плотным массивам значений, пакетами
Что спросят дальше
- Чем OLTP-нагрузка принципиально отличается от OLAP?
- Как данные обычно попадают из транзакционной базы в аналитическую?
Разбор темы
- Колоночные БД: wide-column и аналитические
Разница между wide-column (Cassandra) и column-oriented OLAP (ClickHouse), partition/clustering keys, LSM-дерево и зачем хранить по колонкам.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.