Data engineering
OLTP vs OLAP: тест с множественным выбором
Шесть вопросов, проходящих через весь юнит. Каждый отражает решение, которое вы принимаете на реальном архитектурном ревью, — не определение для пересказа, а компромисс, который надо взвесить, когда дашборд и путь оформления заказа делят одну базу.
Убедитесь, что вы связываете физический layout, множители column store, режим отказа «аналитика на реплике» и решение о разделении хранилищ — тот синтез, к которому вёл обзорный урок.
Запрос считает SUM(total) по 40M строкам orders, у каждой по 50 колонок. Почему column store громит row store именно на этом запросе?
Сервис A делает point lookup по id со скоростью 5k req/s; сервис B гоняет агрегат по колонкам тех же данных. Почему один layout не может хорошо обслуживать обоих?
На ClickBench из 100M строк ClickHouse хранит данные примерно в 9 GiB там, где Postgres нужно около 100 GiB. Почему column store сжимает настолько лучше и почему это расширяет разрыв в пропускной способности скана, а не просто экономит диск?
Дашборд growth-команды гоняет 90-дневный агрегат выручки против прод-реплики Postgres. Checkout p99 прыгает с 40ms до 2s, а replica lag растёт до 90s. Какую первопричину senior назовёт первой?
Продукт хочет 90-дневный дашборд выручки. Какую из четырёх архитектур senior выкатит и почему?
Команда предлагает HTAP-движок, чтобы обслуживать и транзакции, и аналитику на одной системе, утверждая, что это снимает нужду разделять хранилища. Какова senior-формулировка?
Сквозная линия юнита — одно решение: паттерн доступа задаёт layout. Point lookup и мелкие записи хотят row store; сканы всей таблицы по нескольким колонкам хотят column store, где pruning (читать ~6% байтов), сжатие 5–10× и векторизованное пакетное выполнение складываются в разрыв 10×–1000×, который не закроет ни один индекс. Классический senior-провал — аналитика на прод-реплике OLTP, где один скан вытесняет горячий buffer cache, конкурирует за I/O и поднимает replica lag. Фикс архитектурный — отдельный колоночный store, кормимый через CDC или ETL, — с принятием небольшой задержки данных ради изолированных хранилища, кэшей и failure domains. HTAP может управлять конкуренцией, но никогда её не отменяет.