Зачем хранить двоичные данные в MySQL? - PullRequest
3 голосов
/ 25 апреля 2011

Я немного запутался - каковы плюсы хранения двоичных данных в БД? Это из соображений безопасности или есть более сложные мотивы, которых я не вижу?

Спасибо за ваше время.

Ответы [ 3 ]

4 голосов
/ 25 апреля 2011

В отличие от чего?Поместить его в файловую систему?

Недостатки использования файловой системы для хранения двоичных файлов:

  • вы не получаете соответствие ACID;

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

  • наличие только одного бэкэнда хранилища вместо двух упрощает развертывание.

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

С другой стороны, недостатки базы данных BLOB-хранилища:

  • громоздкие для очень больших файлов;

  • Вы не можете использовать веб-сервер для эффективного бесплатного обслуживания файлов.

1 голос
/ 25 апреля 2011

Я предполагаю, что другой альтернативой является сохранение двоичных данных в файле и сохранение имени файла вместо данных в соответствующей записи БД.Проблема такого подхода заключается в том, что он не согласован: с вашим файлом может случиться что угодно, он может быть поврежден или удален, и СУБД (в данном случае MySQL) ничего не может с этим поделать: она не может обеспечить согласованность, потому что этоничего не знаю о вашем файле.Другое дело, что СУБД может оптимизировать доступ к вашим данным (она может хранить их в памяти и не считывать их с диска каждый раз, когда вам требуется к ним доступ), в то время как при файловом подходе вам придется ждать до запросазавершено, затем откройте файл и прочитайте данные с диска.Это резко снизит производительность.

1 голос
/ 25 апреля 2011

Те же преимущества хранения чего-либо в базе данных дают вам

  • Вы можете индексировать данные в другом столбце или первичном ключе, обеспечивая быстрый поиск данных
  • Он доступен из одного места и решает проблемы параллелизма на уровне строк
  • Он может надлежащим образом кэшировать часто используемые данные
  • Вы можете точно настроить движок таблицы, используемый для хранения данных
  • Вы можете смоделировать отношения между двоичными данными и строками в других таблицах (пользователи / страницы / что угодно)

Я не понимаю, почему так важно, что данные являются текстовыми или двоичными, база данных дает вам массу преимуществ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...