C# 将上传的文件存储在数据库中或存储在文件系统中,这是一种好的做法

C# 将上传的文件存储在数据库中或存储在文件系统中,这是一种好的做法,c#,asp.net,sql,sql-server-2005,C#,Asp.net,Sql,Sql Server 2005,我的ASP.NET应用程序中有一个文件上传程序,使用C#,我们可以上传任何类型的图像、文档、pdf等 我将它存储在文件系统中,在DB中只有文件名。 我的疑问是我们能否将整个文件、图像存储在数据库中。请告诉我哪种做法是好的,以及为什么我们需要使用它 文件系统存储或SQL DB存储。这是有争议的主观观点,但我认为在文件系统上存储文件更好。这就是文件系统的设计目标,SQL Server 2008具有一个可让您自动执行此操作甚至使用事务的功能。取决于: 文件有多大,尽管在RDBMs中可以有效地处理大的b

我的ASP.NET应用程序中有一个文件上传程序,使用C#,我们可以上传任何类型的图像、文档、pdf等

我将它存储在文件系统中,在DB中只有文件名。 我的疑问是我们能否将整个文件、图像存储在数据库中。请告诉我哪种做法是好的,以及为什么我们需要使用它

文件系统存储或SQL DB存储。

这是有争议的主观观点,但我认为在文件系统上存储文件更好。这就是文件系统的设计目标,SQL Server 2008具有一个可让您自动执行此操作甚至使用事务的功能。

取决于:

  • 文件有多大,尽管在RDBMs中可以有效地处理大的blob
  • 它是读的重还是写的重
  • 该资源有多少并发请求
  • 您是否在使用其他缓存机制
  • 您是否有可用的SAN或群集文件系统

  • 简言之,没有细节,很难给出最佳实践。就像任何任务一样,这取决于您的约束和要求。

    这里也提出了几乎相同的问题。检查答案:

    这主要取决于文件的大小。这是一篇好文章

    对于小于256kb的文件,将其存储在VarBinary列中的DB中更有效

    我们将文件存储在MS SQL Server中的VarBinary列中,限制为256kb,运行良好


    希望能有帮助。祝你好运

    除了关注性能的其他答案外,我还将访问权限作为另一个问题。如果文件包含机密数据或需要审核文件访问权限,如果文件存储在数据库中,有时管理起来会更容易。

    我认为是主观的,而不是主观的argumentative@ho-是的,但是在数据库中存储一个秘密路径并让一个中间脚本交付有效负载会给您带来相同的“障碍”,因为您实际上不知道它是否被更改。另一个问题是备份/恢复。在一个地方更容易。嘿,Bell,我不太熟悉SQL,但是对于一条记录,文件大小不会超过1或2MB。并发请求不会太多。给我最常用的系统。