05 / 25 · §3

Где хранить файлы

Метаданные — в базе, бинарные файлы — в object storage, доставка — через CDN.

Схема: Где хранить файлы
Нажми на схему, чтобы открыть в полном размере.

Главное

  • Object storage: S3, Cloudflare R2, GCS, Azure Blob. Дёшево, почти безлимитно, устойчиво.
  • Postgres хранит только метаданные: кто загрузил, имя, права, ссылка на файл.
  • CDN кэширует контент рядом с пользователем: images, video, JS/CSS, downloads.
  • Signed URLs — клиент грузит и скачивает напрямую в хранилище, минуя твой API.
  • У R2 нулевой egress, а egress у S3 часто главная статья счёта.

Загрузка фото

User → API → PostgreSQL (metadata)
            → S3 (сам файл)

User в Бали → CDN Singapore → S3 (US origin)

Не делай так

Фото пользователей не кладут в Postgres без веской причины: раздувается база, бэкапы и репликация.