Когда хранить изображения в базе данных (mySQL), а когда нет? (Привязка изображения к элементу в базе данных)

Извините, если это не вопрос, который задают здесь, но я прочитал FAQ и, похоже, все должно быть хорошо.

Фоновая информация. Помимо отделочного проекта, моя группа создает сайт для ресторана, в котором будет показано меню. В меню будут отображаться функции мыши, чтобы отображать изображение пищи, когда пользовательское наведение указывает на имя элемента. Мой первоначальный план состоял в том, чтобы не хранить информацию меню в базе данных, так как она не будет меняться очень часто. Есть два разных местоположения с разными пунктами меню. Так что в целом мне казалось, что было бы пустой тратой хранить всю эту информацию в базе данных и просто отображать ее с помощью HTML. Наш профессор, который не очень разбирается в технологиях сверх того, что использовался 15 лет назад, сообщил нам, что знает, что было бы лучше хранить эту информацию в базе данных. Для меня это похоже на то, что это действительно сбивает с толку вещи без дополнительной ценности. Также изначально я планировал хранить изображения для мыши в простой папке на сервере, но если все элементы меню будут сохранены в базе данных, я не знаю, как связать разные изображения с различными элементами в базе данных, сохраняя изображения в базе данных. Сайт будет в основном использовать html, php, mysql и некоторый javascript. Мы также будем разрабатывать приложение для Android, чтобы в основном имитировать то, что находится на веб-сайте, если это вообще меняет ситуацию.

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

Я много читал в Интернете на других форумах, объясняя, что вы обычно хотите воздержаться от хранения изображений в базе данных, но так как мой профессор считает, что он прав, говоря, что меню должно храниться в базе данных, я полагаю, что мне нужно будет хранить изображения в базе данных, так что функция mouseover будет работать правильно. Если это даже возможно, я использовал только функции mouseover с местами изображения на сервере, а не ссылкой на базу данных. Спасибо за вашу помощь и понимание.

Преимущества хранения изображений / капли в базе данных

  • Сохранение изображений автоматически является частью ваших транзакций.
  • Нет необходимости очищать файловую систему и синхронизировать ее с базой данных
  • Доступ к изображениям контролируется теми же средствами, что и доступ к остальным данным
  • Только одна резервная копия для ухода за
  • База данных обычно лучше подходит для хранения миллионов (если не миллиардов) записей. В файловой системе вы должны найти умное распределение по нескольким каталогам. Единый каталог не сможет эффективно обрабатывать миллионы файлов.
  • Для некоторых рабочих нагрузок сохранение изображений в базе данных может быть быстрее.
    Для SQL Server Microsoft действительно проверила это:
    http://research.microsoft.com/apps/pubs/default.aspx?id=64525
    Я не удивлюсь, если другие базы данных ведут себя аналогичным образом.

Недостатки:

  • Делает вашу базу данных и, таким образом, ваши резервные копии намного больше (подумайте о времени, которое требуется для ее восстановления).
  • файловые системы обычно лучше с инкрементными резервными копиями (если только у вас нет RMAN от Oracle)
  • изображения не могут быть доступны другим приложениям (например, WebServer, средствам изменения размера изображения, FTP-серверу)
  • Изображения не могут быть распределены по сети распространения контента для балансировки нагрузки в веб-приложении (для снятия нагрузки с сервера приложений)
  • По общему мнению, поиск из базы данных будет медленнее.
  • для некоторых баз данных, извлекающих blob, может фактически снизить эффективность кеша базы данных (не так для Oracle, SQL Server и PostgreSQL. Однако я не знаю MySQL)

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

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

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

Профессор сказал: «Храните информацию меню в базе данных». «Информация меню», очевидно, включает названия продуктов, цены, описания, все из которых являются текстовыми. Возможно, он и не имел в виду фотографии. Это может быть проблемой общения. … базы данных используются, когда информация, как ожидается, будет меняться часто; им требуется подсистема вывода вывода и подсистема ввода ввода. Если вы только собираетесь написать его один раз, обязательно разместите pics в каталоге. Если, однако, это будет система, в которой люди будут редактировать и вставлять новые записи, то либо вы должны соединить изображения с записями меню в той же строке таблицы DB (проще писать), либо вам нужно написать другую подсистему для управления как базой данных, так и теперь файлами на диске, а также их разрешениями (более движущимися частями).