哪种存储文件更好?直接将文件存储在数据库中或仅存储该文件的位置?我应该将文件存储在数据库中还是仅存储该文件的位置?
回答
当接受这么快的回答时,您不会从更大的受众那里得到答案。
这取决于。你需要考虑几件事情。
如果你有米老鼠免费的数据库,这意味着它不妥善处理斑点(阅读每一个选择的斑点;不要存储在单独区域的斑点),保持文件之外。
如果您有企业数据库,将blob保留在数据库中完全没有问题。这些不会读取每个SELECT上的斑点。一个额外的读取blob不是一个“性能”“问题”。
大多数数据库都是2k页不是8k或16k。如果你的页面尺寸较大,那么在最后一页的未使用部分,每个斑点都会有一些浪费。
将数据库保留在数据库中的缺点是您的数据库备份会更大。某些企业数据库注意到该页面未更改,并将其从增量备份中排除;其他人没有增量。
将数据块保留在数据库中的优点是数据和参照完整性。您不会遇到与blob不同步的问题。
- 去年我完成了一个分配,客户在分贝中有130GB的数据,在分贝以外存储了700GB的文档。经过十年的问题,他们咬紧牙关,将文件移入数据库。猜猜看是什么,应该是一个简单的工作(长而简单),因为参考文献应该是绝对正确的,最终会变得非常庞大,因为有太多重复和无效的参考文献。由此产生的数据库是630GB,有100GB的笨蛋。 2K pagesize。
回应评论
- 斜线或反斜线
容易。在数据库中,仅存储斜杠。您需要一种识别目标系统的方法,并指示IsWindoze
。它应该在表层次结构中更高,而不是在您找到Filename
的级别。如果指示符已设置,则每当您报告或显示Filename
列时,将斜杠更改为反斜杠。
您将遇到与Unix不具有的DriveLetter
和冒号类似的问题。
避免将文件存储在数据库中。大多数人不善于处理他们。
只是要补充,它通常是一个坏主意 - 唯一一次它变得远程可行的时候是当你处理数据库,你可以保证记录将在内存中当你需要它,并从那里服务。但几乎在所有情况下,文件系统都是更好的选择。 – Arantor 2010-11-25 02:58:36
首选的方法是将文件存储在文件系统中,并将文件的位置存储在数据库中。其原因与数据库物理分配磁盘空间的方式有关(通常是8k或16k块)。删除那里的大文件会导致数据库使用不同的机制来存储文件(SQL Server称为row overflow data)。通常,这些页面位于普通表外,因此每行的每个逻辑读取都会在磁盘上产生两个物理读取。不用说,这对性能不利。
最后回答:这取决于你的引擎。
自20世纪90年代以来,SQL Server的页面大小还没有被使用过。 Oracle默认为8K,SQL Server为8K。只有Sybase AFAIK还在上个世纪。
SQL Server现在提供FILESTREAM它结合了两者的优点,因为Oracle已经与BFILE
做长SQL Server和Oracle提供对磁盘和备份压缩
我确保PostgresSQL至少提供类似的功能。
注意:这主要是为PerformanceDBA的FUD提供替代方案
- 1. 库和媒体文件应该存储在存储库中吗?
- 2. 我应该在数据库中存储Type还是应该将其存储在枚举中?
- 3. 我应该使用文件还是数据库表来存储参数?
- 4. 应该将文本文件存储在我的SQL Server数据库中吗?
- 5. FMDataBase - 我应该在哪里存储数据库文件?
- 6. 我应该将Git存储库存储在Home还是Eclipse Workspace中?
- 7. 什么Eclipse元数据文件应该在存储库中?
- 8. 用户数据应该存储在配置文件中吗?
- 9. 我应该使用文件系统文件还是数据库来存储图像等文件?
- 10. 我应该将全局常量存储在资源文件(.resx)还是类中?
- 11. 我应该在数据库中还是在XML或文本文件中存储值?
- 12. .git文件夹应该存储在我的SVN仓库中吗?
- 13. 我应该将枚举ID /值存储在数据库还是C#枚举中?
- 14. 我应该将.testsettings和.vsdmi文件提交到存储库吗?
- 15. 我应该在测试时在Factory girl还是spec文件中存储模型?
- 16. 我应该在mysql数据库中存储双精度数还是小数?
- 17. 我应该在Mongo之前还是之后存储数据?
- 18. 我们应该在Java Eclipse动态Web项目中存储数据库配置文件的位置?
- 19. 我应该将用户的文档数据存储在服务器上还是文件系统上?
- 20. 应该将其作为文件系统存储还是将其存储在Cassandra表中?
- 21. 静态数据应该存储在数据库还是应用程序中
- 22. 我应该如何在Rails 3.2数据库中存储一个csv文件?
- 23. 应该将mvnw文件添加到存储库中吗?
- 24. PHP解析CSV文件 - 它是否应该存储在数据库中
- 25. 我应该在哪里存储配置文件?
- 26. 我们应该何时将图像存储在数据库中?
- 27. ASP.NET应用程序应该在哪里存储数据文件?
- 28. 我应该将文件信息存储在基于php的文件管理器的数据库中吗?
- 29. 数据库文件存储在PHP中的位置
- 30. 我应该使用txt文件还是将数据存储在模块“谁在线”中?
您使用的数据库是? – 2010-11-25 02:53:49
我很惊讶 - 这个问题还在公开讨论/辩论中?它不是任何重复的,嗯... – 2011-03-12 04:54:22