OLAP OVER HTTP: как отдавать большие аналитические данные через API и не положить сервис

TimofeyPurits 10 минут назад OLAP OVER HTTP: как отдавать большие аналитические данные через API и не положить сервис Средний 13 мин 172 Блог компании Ozon Tech .NET * Базы данных * Высоконагруженные системы * Хранение...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. TimofeyPurits 10 минут назад OLAP OVER HTTP: как отдавать большие аналитические данные через API и не положить сервис Средний 13 мин 172 Блог компании Ozon Tech . NET * Базы данных * Высоконагруженные системы * Хранение данных * Туториал Каждый день в 18:00 клиентам становится доступна отчётность по продажам, и многие одновременно нажимают кнопку «Загрузить отчёт». Это может быть детализированный отчёт по списаниям, юридическая отчётность, аналитическая выгрузка или API, используя который клиент получает данные для дальнейшей обработки.
В этот момент даже хорошо подобранное хранилище может стать узким местом. В моей практике разработки часто встречаются сценарии, когда необходимо предоставить доступ к большому количеству данных по HTTP. На первый взгляд задача выглядит простой: берём подходящее хранилище, пишем endpoint, выполняем запрос и отдаём результат пользователю.
Технические детали
Но на практике такая схема быстро упирается в ограничения. Это настоящий технический челлендж, который почти никогда не получится решить в лоб, потому что:На запрашиваемые данные может быть большой RPS. Каждый запрос может отдавать довольно большой объём данных.
Возникает «проблема звёзд». Почему нельзя просто поставить endpoint над OLAP-базойРешать эту проблему можно по-разному, но начинать всегда стоит с выбора наиболее подходящего хранилища данных. OLTP СУБД по типу PostgreSQL, MS SQL или MySQL не всегда подходят для сценариев потоковой отдачи аналитических данных, когда из множества атрибутов для отчёта требуется лишь ограниченная выборка.
Это связано с вычислительной моделью, которая в них заложена: кортежи читаются один за другим, и каждый из них нужно проверить на MVCC-видимость, что создаёт большие накладные расходы (overhead). В то же время OLAP-хранилища используют другую вычислительную модель, без таких тяжёлых проверок — читают с диска большими батчами и выделяют на обработку запроса десятки потоков. В качестве OLAP-хранилища выбор часто падает на ClickHouse, но каждый волен выбрать то, что ему подходит больше или что уже используется в компании.
Отраслевые последствия
Ну вот, казалось, и ответ: чтобы предоставлять доступ к аналитическим данным по HTTP, надо просто подобрать аналитическую СУБД и сделать endpoint к ней. И в самом простом случае этого действительно будет достаточно, но у такого решения есть один подводный камень: OLAP-базы данных не держат большой RPS. Это связано с тем, что каждый запрос стремится использовать максимальное число ядер для параллельной обработки, что приводит к Thread Contention, Noisy Neighbor Problem и др.
Такая проблема не обязательно связана с тем, что у вас всегда высокие нагрузки. Она может быть вызвана специфичными сценариями доступа к данным, например:Сезонными или событийными паттернами. Например, в Ozon нагрузки возрастают в 2–3 раза в сезоны распродаж.
«Проблемой звёзд» в социальных сетях, когда один объект намного популярнее других и из-за этого все запросы к БД приходятся на одну партицию. Бесконечной прокруткой с дырами.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





