METABYTE
К списку статей

Ускорили загрузку с 17 до 2 минут: как NDJSON-стриминг подружил Postgres и Supabase Edge

17 минут на загрузку данных? Это не работа, а чаепитие. Сокращаем до 2 минут с помощью стриминга и здравого смысла.

12 мая 20261 мин чтения
Ускорили загрузку с 17 до 2 минут: как NDJSON-стриминг подружил Postgres и Supabase Edge

Разработчики, которые загружают большие объёмы данных в Postgres, знают: иногда процесс напоминает загрузку Windows 95 — хочется пойти выпить кофе, потом ещё один, потом лечь спать. Один из таких кейсов (17 минут на bulk upload) превратили в 2 минуты, и делимся рецептом.

Магия в деталях: NDJSON + стриминг

Исходная проблема: классическая вставка пачками через INSERT — это как пытаться залить бассейн через трубочку. Решение оказалось изящным: использовать NDJSON (каждая строка — JSON-объект) и стримить прямо в Postgres через Supabase Edge Functions. Никаких промежуточных файлов, никакого ожидания.

Что конкретно сделали:

  • Заменили batch-insert на стриминг через NDJSON.
  • Использовали pg-copy-streams для прямого копирования в таблицу.
  • Параллелили загрузку по чанкам (да, многопоточность не только для майнинга).

Результат: 17 минут → 2 минуты. И никаких волшебных палочек, только грамотная работа с протоколом.

Комментарий студии METABYTE:

Если ваш bulk upload всё ещё длится дольше, чем утренний стендап, возможно, пора пересмотреть архитектуру. Мы помогаем проектам не просто ускоряться, а делать это без костылей и с сохранением нервных клеток.

СЛЕДУЮЩИЙ ШАГ

Понравилось как мыслим?

Применяем те же принципы в клиентских проектах: AI, автоматизации, продукты, которые не умирают после релиза.