Каковы за и против того, чтобы хранить файлы в базе данных?

Я пишу php приложение и задавался вопросом - ли это плохая идея хранить полные файлы в базе данных. Файлы должны быть вокруг 100-200kb главным образом текстовых файлов (txt, документ, docx и так далее) или небольшие файлы изображений. Или это - просто простое неверное представление?

6
задан Gabriel 16 March 2010 в 22:54
поделиться

4 ответа

Pro: очень портативный.

Против: вы ничего не можете сделать с ним, используя SQL (индексирование, поиск и т. Д.), И вам нужно будет добавить метаданные в другие столбцы (тип контента, имя файла и т. Д.), Чтобы улучшить (повторное) использование и удобство обслуживания.

Я бы не стал этого делать. Файловая система на диске намного лучше подходит для этих задач.

2
ответ дан 16 December 2019 в 21:38
поделиться

Лично мне идея нравится, особенно если БД хранит их в сжатом виде или вы сжимаете их вручную.

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

1
ответ дан 16 December 2019 в 21:38
поделиться

Это действительно зависит от ситуации?

  • Как файлы будут распространяться?
  • Используются ли файлы отдельно или являются частью системы, которая могла бы иметь { {1}} собственная логика авторизации и аутентификации?
  • Какова ваша стратегия резервного копирования ?
  • Вам нужна репликация?
  • Вам нужно поддерживать большое количество операций ввода-вывода?
  • А как насчет кеширования?

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

2
ответ дан 16 December 2019 в 21:38
поделиться

Преимущества:

  1. Не нужно беспокоиться о разрешениях на запись в хранилище файлов.
  2. Нет необходимости пытаться синхронизировать файлы в хранилище файлов со строками в базе данных, избегая потерянных файлов или неработающих ссылок. Например, вы можете автоматически каскадно удалять файлы при удалении связанного содержимого.
  3. В некоторых базах данных (таких как Oracle и SQL Server) вы можете индексировать файлы и выполнять поиск в них с помощью SQL
  4. Не нужно беспокоиться об уникальных именах файлов и папок, и в некоторых случаях это может упростить загрузку
  5. защитить доступ к файлам, чтобы их могли видеть только авторизованные пользователи

Недостатки:

  1. Производительность обслуживания файлов часто снижается по сравнению с хранилищем файлов
  2. Может привести к большим базам данных. При выборе двоичных столбцов необходимо соблюдать осторожность.
  3. Больше работы, чтобы ссылаться на файлы и обслуживать содержимое - вам нужны специализированные обработчики и т. Д.
3
ответ дан 16 December 2019 в 21:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: