2012-02-02 45 views
1

所以我有这个网站在asp.net,它允许用户上传和保存他们的重要文件到服务器,这对用户的需求(当用户登录和查看他的文件和点击他的一个文件)被允许下载到客户端计算机。
此外,允许保存的文件大小小于25Mb(至少现在!),文件只能是任何类型,包括但不限于.txt,.rtf,.pdf,.doc,.docx ,.jpg,.png等
因此,问题是我应该在哪里存储考虑到最佳性能的文件,我是否应该将文件存储在SQL Server中(使用SQL Server 2008,以便您知道,Visual Studio 2008 sp1)列(可能是BLOB格式?)还是应该将它们存储在服务器的HDD中。
此外,考虑到最大规模,比如说,即使10个用户上传了20Mb的文件,这也会占用200Mb的存储空间!如果有人能够知道,如果这些文件存储在数据库中,这会导致数据库大小增加多少?
我的意思是在数据库中相对于文件系统中的存储空间需求增加多少,而且性能会更好?存储文件在SQL vs存储在web服务器的硬盘

+0

我个人喜欢在文件系统上存储文件。 – 2012-02-02 11:33:09

回答

2

看到这个微软文件:To Blob or not

恕我直言 - 有很多的优点和缺点,在这两种方法 - 存储文件在数据库并将它们存储在FS的SQL Server 2008有

是另一种选择 - 将文件作为数据库的一部分存储在FileSYstem中,请参见FILESTREAM overview

0

就我个人而言,我总是使用磁盘存储来存储文件数据。数据库最终将文件数据存储在磁盘上,只是增加了一层成本和抽象。抽象总是增加缩放和性能障碍。例如,它更容易从本地HDD上的文件转换为CDN中的文件而不是数据库,并且在需要时可以更容易地添加更多磁盘空间,而无需扩展数据库的大小。

我已经建立了类似的系统,与您在过去所描述的系统相似,从经验值得花一些时间考虑您的商店文件的抽象方式,以便它可以被换出或更新。

+0

同意。但是额外的层可以为您提供相同的额外功能,如一致的备份策略或复制 – mikus 2012-02-02 11:55:56

+1

确实如此,尽管基于磁盘的备份可能更具成本效益。 – 2012-02-02 12:14:26

+0

但需要单独设置;-)人们可能会忘记这些事情:D – mikus 2012-02-02 13:53:28

0

根据Oleg提供的msdn文档和其他一些基准/意见可用于使用db的较小文件(大约0.25MB或更小)可能会快得多,但是我只能保留该解决方案以实现极端良好接地的目的。对于大多数情况下,我会说在硬盘上存储文件是更合适,灵活和...自然。

但是,我不应该将分析仅限于性能。考虑到不同的方面,如:

  • 安全
  • 备份
  • 可扩展性

使用其他数据源时,这通常需要额外的注意(如复制)。