Где лучше хранить бинарные данные, в файлах или в БД?
СУБД дают возможность хранить в них не только текстовые, но и большие бинарные данные. E.g., в MySQL есть следующие типы BLOB данных: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB. В этих полях можно хранить любые бинарные данные — изображения, музыку, видео, etc. Вопрос лишь в том, стоит ли оно того? Некоторые менеджеры БД (e.g., HeidiSQL) для таких случаев имеют даже встроенную возможность просмотра бинарных данных. Достаточно лишь нажать на BLOB поле мышкой и из контекстного меню выбрать предпросмотр. Там же можно выбрать пункт для сохранения BLOB данных в файл на диск.
Кому-то покажется, что хранить бинарные данные в БД это удобно. Всё в одном месте, не надо никуда лазить. Можно создать таблицу, e.g., для фильмов и по каждому фильму всё хранить в одной строке — название, жанр, год выпуска, и тут же сам фильм в бинарном поле. Казалось бы, удобнее некуда. Но нет! Я считаю, что это ужасно. Вообще, сам вопрос «Где хранить бинарные данные, в файлах или в БД?» некорректен. БД это тоже файлы на диске. Просто БД создана для удобной структуризации и работы с текстовыми данными. Именно с текстовыми т.к. с огромными бинарными данными (имеются ввиду не закодированные в бинарный код текстовые данные, а именно изображение, музыка, фильмы, etc) популярные СУБД штатными средствами не работают. Т.е. большие бинарные данные в БД лежат мёртвым грузом т.к. эти поля не принимают никакого участия в обработке информации. Таким образом, получается, что, исходя из концепции БД, хранить в БД большие бинарные данные не имеет смысла. Удобство всего этого действа весьма сомнительно т.к. ворочать громадные бэкапы БД неудобно. Куда проще по отдельности положить каждый файл на диск, а в БД поставить к нему путь, и там же в БД хранить контрольные hesh-суммы файла.
В общем, я категорически против хранения больших бинарных данных в БД. Считаю это совершенно неправильным и плохим действом. У больших проектов текстовые базы данных и так разрастаются до огромных размеров, так некоторые хотят и предлагают тут ещё хранить и бинарные файлы. Безумие! Решать конечно вам, хранить ли в БД бинарные данные, я своё мнение сказал.