Мой вопрос довольно общий, и я знаю, что на него не может быть 100% ответа. Я создаю веб-решение ASP .NET, которое будет включать в себя множество изображений и, надеюсь, изрядное количество трафика. Я действительно хочу добиться результатов.
Должен ли я сохранять изображения в базе данных или в файловой системе? И независимо от ответа меня больше интересует, почему я выбрал именно тот путь.
Большое спасибо, Стефан
ДУБЛИКАЦИЯ : хранение изображений в БД - да или нет? , Как хранить изображения в вашей файловой системе , Хранить небольшое количество изображений: blob или fs? и, возможно, некоторые другие.
КОММЕНТАРИЙ: Спасибо за много хороших ответов. Я выберу файловое решение, даже если мне нравится идея решения, основанного на базе данных. Кажется, что сегодня есть хорошие решения, чтобы делать то, что я хочу с базами данных и т. Д., Но у меня есть несколько причин не делать этого.
Я буду использовать размещенное решение, у меня огромный объем хранилища (10 ГБ), но только 300 МБ для базы данных. Это будет стоить дорого за дополнительное хранилище в БД.
Я не специалист по БД и не контролирую настройки БД. Решение на основе БД может нуждаться в индивидуальной настройке, как это выглядит.
Если мы перейдем к запуску сайта на нашем собственном сервере, я могу рассмотреть решение на основе БД. спасибо Стефан
источник
Ответы:
Сохраняйте изображения в файловой системе, а места расположения изображений в базе данных.
Зачем? Так как...
источник
В моих недавно разработанных проектах я хранил изображения (и все виды двоичных документов) в виде столбцов изображений в таблицах базы данных.
Преимущество хранения файлов в базе данных, очевидно, заключается в том, что при удалении записи на жестком диске не останутся файлы, на которые нет ссылок, поскольку синхронизация между базой данных (= метаданные) и жестким диском (= хранилище файлов) не встроена. и должен быть запрограммирован вручную.
Используя сегодняшнюю технологию, я предлагаю вам хранить изображения в столбцах FILESTREAM SQL Server 2008 (по крайней мере, это то, что я собираюсь сделать в моем следующем проекте), поскольку они сочетают в себе преимущества хранения данных в базе данных И наличия больших двоичных файлов в отдельных файлах (в минимум по рекламе;))
источник
Пословица всегда была «Файлы в файловой системе, метаданные файлов в базе данных».
источник
Лучше хранить файлы как файлы. Разные базы данных обрабатывают данные Blob по-разному, поэтому, если вам придется перенести серверную часть, у вас могут возникнуть проблемы.
При обслуживании изображений <img src = файл, который уже существует на сервере, вероятно, будет быстрее, чем создание временного файла из поля базы данных и указание на него тега <img.
Я нашел этот ответ, поискав ваш вопрос в Google и прочитав комментарии на http://databases.aspfaq.com/database/should-i-store-images-in-the-database-or-the-filesystem.html
источник
Мне обычно нравится иметь двоичные файлы в базе данных, потому что:
источник
Хранение изображений в базе данных увеличивает накладные расходы БД для обслуживания отдельных изображений и затрудняет разгрузку в альтернативное хранилище (S3, Akami), если вы вырастете до этого уровня. Хранение их в базе данных значительно упрощает перенос вашего приложения на другой сервер, поскольку теперь нужно переместить только БД.
Хранение изображений на диске упрощает перенос в другое хранилище, делает изображения статическими элементами, поэтому вам не нужно возиться с заголовками HTTP в веб-приложении, чтобы сделать изображения кешируемыми. Обратной стороной является то, что если вы когда-нибудь переместите свое приложение на другой сервер, вам нужно не забыть переместить и изображения; то, что легко забыть.
источник
Для веб-приложений вы получите лучшую производительность за счет использования файловой системы для хранения ваших изображений. Это позволит вам легко реализовать кеширование изображений на нескольких уровнях в вашем приложении. Хранение изображений в базе данных дает некоторые преимущества, но в большинстве случаев эти преимущества связаны с клиентскими приложениями.
источник
Просто чтобы добавить еще немного к уже хорошим ответам. Вы все еще можете получить преимущество кэширования как от веба - уровня , может быть и на уровне базы данных , если вы идете маршрут держать вас изображения в базе данных.
Я думаю, что для базы данных вы можете добиться этого, сохраняя изображения по отношению к связанным с ними текстовым данным, и если вы можете получить доступ к изображениям в конкретном запросе, чтобы база данных могла кэшировать запрос (только теория, хотя так не стесняйтесь нанести мне ядерный удар по этой части).
Что касается веб-сайта, я бы предположил, что, поскольку ваш вопрос помечен asp.net, вы должны пойти по маршруту использования обработчика http для обслуживания изображений. Тогда в вашем распоряжении будут все преимущества фреймворка, и вы сможете сохранить свою логику домена более чистой, достаточно лишь передать ключ к своему изображению обработчику http.
источник
Почему бы не выбрать отдельную базу данных NoSql для хранения файлов.
Это дает вам целостность данных, согласованность данных, как упоминал @chburd.
В то время как rdbms еще оставайтесь маленькими.
источник
Eclipse
) хранения изображений в файловой системе и хранения их метаданных в БД - http://www.devmanuals.com/tutorials/java/spring/spring3/mvc /Spring3MVCImageUpload.htmlисточник