Стоит ли сохранять изображения в самой базе данных в виде двоичной информации или в виде пути на ФС? - PullRequest
1 голос
/ 03 ноября 2010

Справочная информация:

Это приложение .NET 4 / C # Windows Формы, использующие SQLite в качестве бэкэнда. Существует только один пользователь, использующий база данных и никоим образом не делает это взаимодействовать через сеть.

Моему программному обеспечению необходимо сохранять изображения, связанные с записью проекта. Должен ли я сохранить изображение в виде двоичной информации в самой базе данных; или я должен сохранить путь к изображению в файловой системе и использовать его для его получения.

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

Может кто-нибудь дать какие-нибудь предложения? Взаимодействовать через сеть.

Ответы [ 3 ]

3 голосов
/ 03 ноября 2010

«Это зависит». Если существует много изображений, то весь этот вес BLOB может сделать резервные копии все более болезненными (и действительно, может помешать реализации некоторых баз данных, которые поддерживают только ограниченные размеры). Но это работает, и работает хорошо. С файловой системой все в порядке, если вы сохраняете только путь относительно неизвестного корня , т.е. вы храните файл "foo / blah / blip.png", который в сочетании с данными конфигурации позволяет получить полный путь тогда вы можете легко переместить путь. В некоторых случаях файловые системы имеют более простые параметры резервного копирования, но вам необходимо объединить резервные копии файловой системы и базы данных.

2 голосов
/ 03 ноября 2010

В общем случае лучше хранить их в файловой системе с указанием пути в БД.

Однако некоторое время назад Microsoft опубликовала официальный документ с исследованиями, показывающими, что файлы размером до 150 КБ могут быть выгодно помещены в БД (конечно, это относится только к SQL Server).

Вопрос задавался здесь много раз прежде:

Точная копия: Изображения пользователя: база данных или файловая система?
Точный дубликат: Хранение изображений в базе данных: да или нет?
Точный дубликат: Должен ли я хранить свои изображения в базе данных или папках?
Точный дубликат: Будете ли вы хранить двоичные данные в базе данных или папках?
Точный дубликат: Хранить изображения в виде файлов или базы данных для веб-приложения?
Точный дубликат: Хранение небольшого количества изображений: blob или fs?
Точный дубликат: сохранить изображение в файловой системе или базе данных?

0 голосов
/ 03 ноября 2010

Прежде всего вы проверили пределы SQLite ?Если это не относится к вашему приложению, я бы все же выбрал ФС для нужд хранения просто из-за накладных расходов, связанных с получением больших BLOBS из БД и чтением файла из ФС.Вы можете пометить файлы как только для чтения и скрытые, чтобы уменьшить вероятность их переименования ... Вы также можете сохранить файловый хеш (например, MD5) файла в БД, чтобы вы могли иметь дополнительный параметр поиска в случае, если кто-то переименуетфайл (конечно, они могли бы переместить его, и в этом случае это не сильно помогло бы) ...

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