Хранение файлов в базе данных против файловой системы - PullRequest
17 голосов
/ 04 августа 2011

один из моих клиентов попросил Система управления документами для нескольких тысяч документов в другом формате, например, PDF, DOC, DOCX и т. Д. Мой вопрос заключается в том, как лучше всего сохранить этот файл в базе данных илив файловой системе?Насколько легко защитить документ между двумя подходами?.

Быстрое получение файлов является ключевым требованием.

Я использую mysql, если это помогает

С уважением.

Ответы [ 3 ]

17 голосов
/ 04 августа 2011

Возможно, вы захотите сохранить его непосредственно в файловой системе.

При использовании файловой системы соблюдайте осторожность с:

  • Конфиденциальность: Размещайте документы вне вашего корня документов Apache. Затем ваш PHP-контроллер выведет документы.
  • Sharded path: не храните тысячи документов в одном каталоге, создавайте разные каталоги. Например, вы можете осквернить хэш в имени файла. Например, /documents/A/F/B/AFB43677267ABCEF5786692/myfile.pdf.
  • Номер инода: Вы можете исчерпать иноды, если храните много небольших файлов (возможно, это не так, если вы храните в основном документы PDF и офисные документы).

Если вам нужно найти эти документы (дата / заголовок / и т. Д.), Вы можете сохранить метаданные в базе данных для лучшей производительности.

FYI, в этом вопросе MS SQL Server имеет FILESYSTEM тип столбца (как гибрид), но на данный момент MySQL не имеет альтернативы .

5 голосов
/ 04 августа 2011

Использование доступа к файловой системе для больших блоков данных в целом означает более быстрый доступ и меньше накладных расходов, чем их сохранение в базе данных mysql.

Один интересный и, возможно, связанный пост: Хранение изображений в БД - да или нет?

0 голосов
/ 04 августа 2011

для высокой производительности вы должны использовать файловую систему, используя функцию php glob и интерфейс JS. Я закончил проект в марте этого года.

...