2011-07-24 6 views
3

Я создаю сервлет (или действие в Struts2) для файла (изображения, документы и т. Д.). Но мне интересно, какой из них лучше подходит для хранения файлов в Файловой системе, а в базе данных просто сохранить путь к файлу ИЛИ сохранить файлы в базе данных, такие как BLOB. Я знаю, что когда я делаю запрос в базе данных, где blobs работает медленнее, , но если я буду хранить в базе данных, мне будет проще делать резервную копию данных и гарантировать согласованность. Любые предложения?Сохранение файла в файловой системе VS В базе данных

+1

Это часто обсуждается на SO. Я считаю, что большинство мнений идет о сохранении файлов в файловой системе, сохраняя данные в базе данных. – Randy

+1

@ Randy прямо в названии: ** данные ** база и ** файл ** система;) – Jacob

ответ

2

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

2

Я с хранением данных на диске из-за одного важного фактора: производительность. Остальное - ваше предпочтение. Вот link с лучшим сравнением.

+0

+1 для ссылки, однако я не согласен с их заключением о резервных копиях, также как и мой ответ. – TMS

2

Я думаю, что вы дали хорошее решение: храните файлы в файловой системе в базе данных. Хранение медиафайлов в реляционной БД не дает вам серьезных преимуществ, но увеличивает объем БД и снижает производительность (как упоминается @Amir Raminfar).

Вероятно, хороший подход в настоящее время заключается в хранении файлов в хранилище ключей или так называемой базы данных NoSql, например. Казандра или Редис.

Смежные вопросы