9.9Kпросмотров
91.4%от подписчиков
5 ноября 2025 г.
question📷 ФотоScore: 10.9K
Blob в mysql или ссылки на файлы — как выбрать? 🗂️ Задача: нужно хранить файлы (фото, pdf, видео). Где их держать: прямо в базе (BLOB) или во внешнем хранилище (например, S3) и в БД — только ссылку? Разберёмся коротко и понятно. Что такое blob и «ссылки» 🔹 BLOB — двоичные данные прямо в таблице MySQL (поле BLOB/LONGBLOB). 🔹 Ссылка — файл лежит во внешнем хранилище, а в БД мы храним URL + метаданные (имя, размер, тип). Когда хранить в базе (blob) 📦 Подходит, если: 🔹файлы небольшие (аватарки, превью, ≤ ~1 МБ); 🔹важна атомарность: данные и файл сохраняются/откатываются вместе; 🔹проект простой, без CDN и стриминга. Плюсы: просто, транзакционно, один бэкап. Минусы: база быстро растёт, бэкапы тяжелее, отдавать большие файлы медленно. Мини-пример CREATE TABLE file_blobs ( id BIGINT PRIMARY KEY, name VARCHAR(255), mime VARCHAR(100), size INT, -- для дедупликации sha256 BINARY(32), -- сам файл data LONGBLOB NOT NULL, created_at TIMESTAMP, UNIQUE KEY (sha256) ); Когда хранить снаружи (ссылки) 🔗 Подходит, если: 🔹файлов много или они крупные (фото/видео/доки); 🔹нужна раздача через CDN (быстрая доставка); 🔹важны дешёвое хранилище и лёгкие бэкапы БД. Плюсы: масштабируемо, дёшево, быстро отдаётся. Минусы: две системы (БД + хранилище). Мини-пример CREATE TABLE files ( id BIGINT PRIMARY KEY, name VARCHAR(255), mime VARCHAR(100), size INT, sha256 BINARY(32), -- https://... или s3://... storage_url VARCHAR(2048) NOT NULL, created_at TIMESTAMP, UNIQUE KEY (sha256) ); Быстрый чек-лист выбора ✅ 🔹Размер: маленькие → BLOB; большие → ссылка. 🔹Транзакционность (вместе с бизнес-данными): нужна → BLOB. 🔹 Отдача файлов пользователям: нужен CDN → ссылка. 🔹Бэкапы и восстановление: хочется лёгких дампов → ссылка. 🔹Стоимость хранения: экономим → ссылка. Вывод 🔹BLOB хорош для маленьких файлов и строгой консистентности. 🔹Ссылки — почти всегда лучший выбор для больших объёмов, скорости и экономии.
9.9K
просмотров
1954
символов
Нет
эмодзи
Да
медиа

Другие посты @sqlacademyofficial

Все посты канала →