Что лучше хранить файл? Непосредственно хранить файл в базе данных или просто поместить в этот файл?Должен ли я хранить файл в базе данных или просто поместить в этот файл?
ответ
Когда вы принимаете ответы так быстро, вы не получаете преимуществ от ответов от более широкой аудитории.
Это зависит. Вам нужно рассмотреть несколько вещей.
Если у вас есть бесплатная база данных микки мыши, а это означает, что он не обрабатывает сгустки надлежащим образом (читать сгустки на каждом SELECT,, не хранить капли в отдельной области), хранить файлы вне.
Если у вас есть корпоративная база данных, это не проблема, чтобы сохранить капли внутри базы данных. Они не читают капли на каждом SELECT. Одно дополнительное чтение, чтобы получить blob, не является проблемой «производительности».
Большинство баз данных являются 2k страницами не 8k или 16k. Если у вас более крупный размер страницы, тогда в неиспользуемой части последней страницы на каждый кадр будет немного отходов.
Недостаток сохранения блоков в базе данных заключается в том, что резервные копии вашей базы данных будут намного больше. Некоторые базы данных предприятий отмечают, что страница не изменилась и исключает ее из инкрементных резервных копий; другие не имеют прироста.
Преимущество сохранения блоб в базе данных - это данные и ссылочная целостность. У вас не будет проблемы с синхронизацией строк с блобами.
- Я завершил заявку в прошлом году, когда в cust было 130GB данных в db и 700GB документов, хранящихся вне db. После десяти лет проблем, они укусили пулю и переместили документы в дБ. Угадайте, что должно было быть простой работой (длинной, но простой), потому что ссылки должны были быть абсолютно правильными, в итоге оказались массивными, потому что было так много дубликатов и недопустимых ссылок. Результирующая база данных составляла 630 ГБ, было 100 Гб обманов. 2K.
Ответы Комментарии
- Slash или Backslash
Easy. В базе данных только слэш. Вам нужен способ идентификации целевой системы и индикаторIsWindoze
. Он должен быть выше в иерархии таблицы, а не на уровне, где вы находитеFilename
. Если индикатор установлен, всякий раз, когда вы сообщаете или показываете столбецFilename
, измените косые черты на обратную косую черту.
У вас будет аналогичная проблема сDriveLetter
и двоеточием, которого у Unix нет.
Избегайте хранения файлов в вашей базе данных. Большинство из них не справляются с ними хорошо.
Просто чтобы добавить, это, как правило, плохая идея - единственное время, когда она становится даже отдаленно жизнеспособной, - это когда вы имеете дело с базой данных, где вы можете гарантировать, что запись будет в памяти когда вам это нужно, и, таким образом, оттуда. Но практически в любой ситуации файловая система - лучшее место для нее. – Arantor 2010-11-25 02:58:36
Предпочтительным способом является сохранение файла в файловой системе и сохранение местоположения файла в базе данных. Причины этого связаны с тем, как базы данных физически распределяют пространство на диске (обычно в 8k или 16k chunks). Удаление больших файлов там приводит к тому, что ваша база данных использует разные механизмы для хранения файлов (SQL Server называет это row overflow data). Обычно эти типы страниц находятся вне нормальной таблицы, поэтому каждое логическое чтение строки приводит к двум физическим чтениям на диске. Излишне говорить, что это плохо для производительности.
Поздний ответ: это зависит от вашего двигателя.
Размер страницы 2k не использовался с 1990-х годов для SQL Server. Oracle по умолчанию имеет значение 8K, SQL Server - 8K. Только Sybase AFAIK все еще в прошлом веке.
SQL Server теперь предлагает FILESTREAM, который сочетает в себе лучшее из обоих миров, так как Oracle сделала дольше с BFILE
SQL Server и предложение Oracle на диске и сжатие резервных копий
I» m sure PostgresSQL по крайней мере предлагает аналогичные функции.
Примечание: это в основном предложить альтернативы PerformanceDBA's FUD
- 1. Должен ли я использовать внешний файл Configuration.xml или просто web.config?
- 2. Должен ли я хранить текущий блок в базе данных или просто использовать .NET RegionInfo.ISOCurrencySymbol
- 3. Должен ли я хранить форму HTML в базе данных
- 4. Должен ли я хранить тип в базе данных или хранить его в перечислении?
- 5. Должен ли я явно закрыть этот файл?
- 6. Должен ли я динамически воссоздавать PDF-файл, а не хранить его в базе данных или в файловой системе?
- 7. Должен ли я хранить GCM в базе данных?
- 8. Должен ли я хранить файл в виде текста или импортировать в базу данных?
- 9. Symfony2 хранить файл docx в базе данных
- 10. Python, хранить файл dict в базе данных
- 11. Должен ли я хранить изображения в базе данных SQLite?
- 12. Должен ли я хранить карту <key, value> в базу данных или просто клонировать объект в файл?
- 13. Должен ли я распространять этот класс или просто использовать его?
- 14. Где я должен поместить файл phpdoc.xml?
- 15. FMDataBase - Где я должен хранить файл базы данных?
- 16. java beginner- в какую папку я должен поместить файл «database.properties»
- 17. Как я могу хранить этот журнал данные в базе данных
- 18. Следует ли хранить данные в базе данных?
- 19. Лучше ли хранить данные в базе данных plist или Sqlite?
- 20. Должен ли я хранить идентификаторы/значения Enum в базе данных или перечисление C#?
- 21. Должен ли я использовать локальную базу данных или файл XML?
- 22. Должен ли я использовать mysql для ведения журналов или просто дампа в текстовый файл
- 23. Должен ли я использовать текстовый файл или базу данных?
- 24. Должен ли я хранить теги html в моей базе^
- 25. Должен ли я хранить данные в файлах JSON или в базе данных MySQL?
- 26. Многоуровневое приложение: Хранить файл в filestream в базе данных
- 27. Почему я должен помещать этот файл .properties вне моего проекта?
- 28. Как хранить файл xml в базе данных sybase
- 29. Должен ли мы хранить штрих-код в базе данных?
- 30. Где я должен поместить свой файл css в Intellij IDEA
Какую базу вы используете? – 2010-11-25 02:53:49
Я удивлен - этот вопрос все еще находится в открытой дискуссии/дебатах? И это не дубликат, хммм ... – 2011-03-12 04:54:22