首页 / 知识
关于sql Server:将文件存储在数据库中而不是文件系统中?
2023-04-12 01:59:00

Storing a file in a database as opposed to the file system?通常,将文件存储在数据库中(特别是mssql)而不是文件系统会对性能造成多大的影响? 除了应用程序可移植性之外,我无法提出将我的文件作为varbinaries存储在SQL Server中的原因。 看看这个答案: 在DB中存储图像-是或否? 本质上,空间和性能方面的影响可能很大,具体取决于用户数量。另外,请记住,Web服务器很便宜,您可以轻松添加更多服务器来平衡负载,而数据库通常是Web体系结构中最昂贵,最难扩展的部分。 有一些相反的示例(例如Microsoft Sharepoint),但是通常在数据库中存储文件不是一个好主意。 除非您可能编写桌面应用程序和/或大致了解您将拥有多少用户,但是在像公共网站这样的随机且不可预期的情况下,您可能要为在数据库中存储文件付出高昂的代价。 如果您可以迁移到SQL Server 2008,则可以利用FILESTREAM支持,这将为您提供最好的两种服务-文件存储在文件系统中,但是数据库集成比仅将文件路径存储在varchar字段中要好得多。您的查询可以返回标准的.NET文件流,这使集成更加简单。 FILESTREAM存储入门 我会说,这取决于您的情况。例如,我在地方政府工作,我们有很多照片,例如面部照片等。我们的用户数量不多,但是我们需要具有良好的安全性和数据审核功能。数据库对我们来说是一个更好的解决方案,因为它使此操作变得更容易,而且我们不会遇到扩展问题。 这里有什么问题? 现代的DBMS SQL2008具有多种处理BLOB的方式,而不仅仅是将它们固定在表中。当然有利弊,您可能需要更深入地考虑。 这是一篇有趣的论文,由已故的吉姆·格雷(?) 到BLOB或不到BLOB:数据库或文件系统中的大对象存储 虽然性能是一个问题,但我认为现代数据库设计已使小文件的问题减少了。 除了性能,它还取决于数据的紧密耦合程度。 如果文件包含与数据库字段密切相关的数据,则该文件在概念上与它紧密相关,并且可以存储在Blob中。 如果它包含可能与多个记录相关的信息,或者在数据库上下文之外具有某些用途,则它属于外部。 例如,网页上的图像是根据与链接到该页面的页面不同的请求获取的,因此该图像可能属于外部(取决于特定的设计和安全考虑)。 我们的妥协(我不保证这是最好的)是将较小的XML文件存储在数据库中,但将图像和其他文件存储在数据库中。 以我自己的经验,将文件存储为文件总是更好。原因是文件系统针对文件存储进行了优化,而数据库则没有。当然,也有一些例外情况(例如,众所周知的下一代MS文件系统应该建立在SQL Server之上),但是总的来说这是我的规则。 我们决定将varbinary存储为http://www.freshlogicstudios.com/Products/Folders/中途出现性能问题。我可以说我们对它的效果感到惊讶。 必须将blob(图像)解析为字节数组,然后以适当的文件名将其写入磁盘,然后读取该文件的开销,足以使您不愿意再执行此操作,尤其是在文件相当大。
我同意@ZombieSheep。 不要含糊其词,但我认为您将要存储的"文件"类型是最大的决定因素之一。如果您实质上是在讨论可以存储为文件的大文本字段,那么我的首选是数据库存储。 |
最新内容
相关内容
关于Windows:如何从磁盘获得良好的
关于Windows:如何从磁盘获得良好的并发读取性能,关于Windows:如何从磁盘获得良好的并发读取性能,跟进,自己的,有什么,答案,How to obtaiPhone Web应用程序,模板,框架?
iPhone Web应用程序,模板,框架?,iPhone Web应用程序,模板,框架?,应用程序,站点,用于,网页,iPhone web applications, templates, framework关于体系结构:我应该如何构建Java应
关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,关于体系结构:我应该如何构建Java应用程序,将类放在哪里?,应用程序,支持,困惑,在Web应用程序上执行压力测试?
在Web应用程序上执行压力测试?,在Web应用程序上执行压力测试?,应用程序,主页,写了,简单,Performing a Stress Test on Web Application我应该如何将文件加载到Java应用程
我应该如何将文件加载到Java应用程序中?,我应该如何将文件加载到Java应用程序中?,文件,应用程序,加载,文本,How should I load files i关于国际化:ASP.NET MVC应用程序中
关于国际化:ASP.NET MVC应用程序中的多种语言?,关于国际化:ASP.NET MVC应用程序中的多种语言?,应用程序,语言,接口,支持,Multiple langua关于Visual Studio:部署VB.NET应用
关于Visual Studio:部署VB.NET应用程序的最佳方法是什么?,关于Visual Studio:部署VB.NET应用程序的最佳方法是什么?,也有,我不,当我,但在性能开始下降之前,MySQL数据库能
在性能开始下降之前,MySQL数据库能达到多少?,在性能开始下降之前,MySQL数据库能达到多少?,性能,数据库,数量,什么时候开始,How big can a关于性能:Python中最有效的图形数据
关于性能:Python中最有效的图形数据结构是什么?,关于性能:Python中最有效的图形数据结构是什么?,节点,数据,边缘,应于,What is the most在C#WinForms应用程序中显示Flash内
在C#WinForms应用程序中显示Flash内容,在C#WinForms应用程序中显示Flash内容,方法,应用程序,用户控件,显示,Displaying Flash content关于性能:前10000个质数最有效的代
关于性能:前10000个质数最有效的代码?,关于性能:前10000个质数最有效的代码?,想打,您的,代码,质数,Most efficient code for the first 1关于C#:向.NET应用程序添加脚本功能
关于C#:向.NET应用程序添加脚本功能,关于C#:向.NET应用程序添加脚本功能,交易,数据库,小游戏,脚本,Adding scripting functionality to .