Каковы плюсы и минусы хранения файлов в базе данных? - PullRequest
6 голосов
/ 17 марта 2010

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

Ответы [ 4 ]

3 голосов
/ 17 марта 2010

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

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

Недостатки:

  1. Производительность обслуживания файлов часто страдает по сравнению с хранилищем файлов
  2. Может привести к большим базам данных. Необходимо соблюдать осторожность при выборе двоичных столбцов.
  3. Больше работы для ссылки на файлы и предоставления содержимого - вам нужны специализированные обработчики и т. Д.
2 голосов
/ 17 марта 2010

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

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

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

2 голосов
/ 17 марта 2010

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

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

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

1 голос
/ 17 марта 2010

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

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

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