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

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

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

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

Благодарю.


ОБНОВИТЬ:

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

ОБНОВЛЕНИЕ 2

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

    Читать:

    • Бинарное хранилище 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

    Как отключить WebRTC в Google Chrome

    Как сделать круглые углы как внутри коробки, так и ее границы?

    Как выбрать и прокрутить предварительный просмотр вверх / вниз с помощью клавиш, а не мыши?

    Как импортировать глобальные модули в узел? Я получаю «Ошибка: не могу найти модуль »?

    Почему существует sun.misc.Unsafe и как его можно использовать в реальном мире?

    Как запустить Google Chrome с максимальным окном?

    Как разбить строку на строки и включить разделители с помощью .NET?

    Перемещение папки пользователей в Windows Vista на другой раздел – плохая идея?

    Удалите файлы и складки на Azure перед новым развертыванием из VSTS

    Eclipse java отладка: источник не найден

    Создание нового сеанса ASP.NET в текущем HTTPContext

    Мышь поворачивается на 90 градусов

    Как переключиться на Dvorak через несколько операционных систем

    Что означает выравнивание стека?

    Dm-crypt + luks: Можно ли создать отдельный заголовок без сохранения его на зашифрованном устройстве luks?

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