Каковы плюсы и минусы хранения файлов в базе данных?
Я пишу приложение php и задавался вопросом, не является ли плохой идеей хранить полные файлы в базе данных. Файлы должны быть около 100-200kb в основном текстовые файлы (txt, doc, docx и так далее) или небольшие файлы изображений. Или это просто неверная идея?
4 ответов
Pro: очень портативный.
Con: вы ничего не можете с ним сделать, используя SQL (индексирование, поиск и т. д.), И вам нужно будет добавить метаданные в другие столбцы (тип контента, имя файла и т. д.), Чтобы улучшить (повторно)удобство и ремонтопригодность.
Я бы не стал этого делать. Дисковая файловая система гораздо лучше подходит для этих задач.
плюсы:
- не нужно беспокоиться о разрешениях на запись в хранилище файлов.
- нет необходимости пытаться синхронизировать файлы на filestore со строками в базе данных, избегая потерянных файлов или сломанных ссылок. Например, можно автоматически каскадировать удаление файлов при удалении связанного содержимого.
- в некоторых базах данных (таких как Oracle и SQL Server) вы можете индексировать файлы и искать в них с помощью SQL
- не нужно беспокойтесь об уникальных именах файлов, папок, и это может сделать загрузку проще в некоторых случаях
- проще защитить доступ к файлам, чтобы их могли видеть только авторизованные пользователи
недостатки:
- производительность обслуживания файлов часто страдает по сравнению с filestore
- может привести к большим базам данных. При выборе двоичных столбцов необходимо соблюдать осторожность.
- больше работы для ссылки на файлы и обслуживания содержимого-вам нужно специализированные обработчики и т. д.
Это действительно зависит от ситуации?
- как файлы будут распределили?
- используются ли файлы автономно или они часть системы, которая может иметь собственное разрешение и логика аутентификации?
- Whats ваш стратегия резервного копирования?
- вам нужно репликация?
- вам нужно поддержать a много ввода-вывода?
- насчет кэширования?
сказав это, я бы наклонился к некоторым вид файловой системы для документов над базой данных.
лично мне нравится идея, особенно, если БД хранит их в сжатом или сжать их вручную.
помимо прочего, это означает, что вам не нужно беспокоиться об уникальных именах файлов, что экономит много сложности.