🔹 Почему отчёты не считают в базе приложения 🔹 Почему не считать отчёт прямо в базе с заказами? 🔸 Мы уже разбирали путь данных из базы приложения в хранилище, но не объяснили, почему нельзя считать на месте. База приложения (OLTP, обработка транзакций) рассчитана на множество коротких операций: найти заказ, обновить статус, добавить платёж.
🔸 Аналитический запрос (OLAP, аналитическая обработка) читает миллионы строк, например сумму по orders за год. В базе приложения он замедляет работу пользователей, которые в этот момент оформляют заказы.
🔸 Аналитические хранилища обычно хранят данные по столбцам: запрос читает только нужные, а не строки целиком, и агрегаты считаются быстро.
🔸 Поэтому данные копируют в отдельное хранилище и считают отчёты там, не трогая базу приложения.
-- OLTP: статус одного заказа SELECT status FROM orders WHERE id = 42;
-- OLAP: сумма по месяцам за год SELECT date_trunc('month', created_at) AS m, SUM(amount) FROM orders WHERE created_at >= '2024-01-01' AND created_at < '2025-01-01' GROUP BY 1;
📚 База приложения создана для быстрых точечных правок, хранилище для больших расчётов, одна база редко хорошо делает оба.
➡️ Мы в Telegram - Сетке - ВК Буду рад вашей реакции здесь⬇️
В этом посте были ссылки, но мы их удалили по правилам Сетки