将文档保存为SQL或文件系统中的BLOB

时间:2011-03-10 14:52:53

标签: .net sql-server filesystems blob sql-server-express

对于(.net)Web应用程序,我需要允许用户存储许多文档(pdf,.docx等)。 我的第一个想法是将所有文档保存为SQL(Express)数据库中的BLOB。

但我的数据库将如何发展?将所有文档保存到文件系统中会更好吗?

就个人而言,我仍然认为我最好将文档保存到数据库中。但我不确定和好奇你们的想法。

编辑 - 我的结论:如果文件大小小于1Mb和/或文件很少被编辑,则应该将文件存储在SQL Server中,因为性能。如果文件将被大量编辑和/或大于1Mb,则应将文件存储到文件系统中。 非常感谢a_horse_with_no_name;)

4 个答案:

答案 0 :(得分:3)

数据库中的BLOB是否比本机文件系统更慢或更快,取决于BLOB的大小。

Microsoft的这篇文章对您可能很有意思:

http://research.microsoft.com/apps/pubs/default.aspx?id=64525

答案 1 :(得分:0)

我过去都做过这两件事,尤其是SQL Express作为您的数据库,您可能想要更多地考虑将它们保存到文件系统。 SQL Express的最大数据库大小为4 GB,这可能是一个问题,具体取决于您所谈论的文档数量以及它们的大小。

在允许用户上传和附加数据库中的文档后,我看到我们的一些数据库增长非常迅速。用户不会检查照片的大小或仔细检查该文件是否已存在于其他地方的系统中,他们只需将其添加进去,因此您需要规划大小。

答案 2 :(得分:0)

您的数据库将快速增长。文件系统旨在管理文件,它做得很好,所以我建议您依靠文件系统来完成存储和检索文件的工作,并使用数据库存储并允许您搜索数据。

答案 3 :(得分:0)

好像关键在于我们many documents (pdf, .docx etc.)。我们可以假设您的数据会很快变大。您可以在技术上使用这两种方法。您应该考虑如果您使用数据库后端进行存储,而您的数据库后端是sql express,则需要担心数据库的大小限制。所以你应该使用Sql Server Professional或Enterprise来避免这种情况。此外,如果必须使用数据库,请使用与主数据库不同的数据库。 我的推荐是:
1.使用文件系统
2.仅将数据库中的链接存储到您的文件中 3.定期备份文件系统上的文件以及数据库 4.保护存储文件的目录,以防止未经授权的文件读取或下载

如果数据库用于存储,它的优势在于,当您备份数据库时,您可以备份所有内容,因此迁移数据更容易,但是根据您的要求在文件系统上存储的好处超过了这些优势。