Когда используется MySQL BLOB?

Я кодирую приложение, которое будет загружать и удалять многие файлы, я обычно просто перемещаю файлы в папку на сервере, называя их уникальным id строки. Но поскольку я понимаю, что MySQL также позволяет хранить двоичные данные (файлы), когда это будет лучший выбор ?.

Пожалуйста, используйте твердые аргументы, например, когда использование BLOB будет означать улучшение производительности ?.

PS: Я использую MyISAM, если это имеет значение.

Благодарю.


ОБНОВИТЬ:

Связанные вопросы :
– Сохранение изображений в DB – Yea или Nay?
– Делать или не делать: хранить изображения в базе данных (спасибо Себастьяну)

ОБНОВЛЕНИЕ 2

Хранение файлов в базе данных не является необходимостью, я пытаюсь узнать, когда это лучше, чем хранить их в папках.

    5 Solutions collect form web for “Когда используется MySQL BLOB?”

    Читать:

    • Бинарное хранилище MySQL с использованием файловой системы BLOB VS OS: большие файлы, большие количества, большие проблемы
    • Делать или не делать: хранить изображения в базе данных

    который завершает

    Если вам иногда нужно получить изображение, оно должно быть доступно на нескольких разных веб-серверах. Но я думаю, что это в значительной степени.

    • Если он не должен быть доступен на нескольких серверах, всегда лучше помещать их в файловую систему.
    • Если он должен быть доступен на нескольких серверах, и в системе есть какая-то нагрузка, вам понадобится какое-то распределенное хранилище.

    Если вы используете mySam db engine, тогда поля BLOB можно индексировать, чтобы вы могли выполнять быстрый поиск в ваших файлах с помощью базы данных.

    Еще одно преимущество хранения файлов в BLOB-полях состоит в том, что их можно получить более эффективно, чем файлы на диске (нет необходимости в обходе каталога, открытии, чтении, закрытии).

    Если вы планируете хранить много файлов в MYSQL, обычно рекомендуется хранить файлы в отдельной таблице. Это позволяет сканировать метаинформацию без спотыкания над блобами. Затем, когда вам действительно нужно получить blob, JOIN является достаточно эффективным.

    Ну, это немного устарело, но эта статья содержит несколько достойных аргументов для хранения BLOB: http://www.dreamwerx.net/site/article01 .

    Хотя вы не получаете прирост производительности как таковой, ваши изображения и еще что-то в БД, а не в каталоге, также должны устранять проблемы с hotlinking (при условии, что это общедоступное веб-приложение).

    Обязательно ли вы используете MySQL? Если нет, попробуйте ODBMS или PostgreSQL для хранения файлов, или вы можете сохранить только пути для файлов. См. Это, например.

    Memcache не является альтернативным решением, поскольку вам необходимо управлять резервированием и TTL для распределенных серверов, что затрудняет его поддержку.

    Лучшее решение, на мой взгляд, состоит в том, чтобы публиковать статические данные на CDN, которые распределяются по дизайну и приватным статическим данным в БД для удобства распространения на нескольких серверах.

    Каждый сервер может реализовать свой собственный Memcache при каждом попадании.

    Если вы уже сохранили данные в файловой системе и хотите перенести ее в базу данных, самым простым способом является создание таблицы ключей и значений следующих параметров:

    KEY = ‘/ image / filename’ (строка местоположения файловой системы), value = BLOB (фактический файл) и построить оболочку, которая получит это из базы данных с помощью правила перезаписи и обработки приложений. Таким образом, вы можете использовать полную прозрачность с помощью существующего кода.

    Interesting Posts

    отправка 3d-массива в kernel ​​CUDA

    Как вы печатаете EXACT значение числа с плавающей запятой?

    Код Entity Framework Сначала поддерживаются хранимые процедуры?

    C #: Ожидание завершения всех streamов

    Режим Super Dev в GWT

    Переслать вызов вариационной функции в C

    Существует ли ограничение на длину запроса GET?

    Как установить стандартную версию java plug-in

    Как я могу напечатать значения wchar_t для консоли?

    HasManyThrough с отношением «один ко многим»

    Как я могу узнать, какой процент используемой полосы пропускания жесткого диска в настоящее время используется?

    Проблемы с передачей свойств и параметров системы при запуске Java-classа через Gradle

    Получить локальный IP-адрес

    В чем разница между системными приложениями и привилегированными приложениями на Android?

    Существует ли разумный подход к параметрам типа «по умолчанию» в C # Generics?

    Давайте будем гением компьютера.