【问题标题】:Save documents as BLOB in SQL or on file system在 SQL 或文件系统中将文档另存为 BLOB
【发布时间】:2011-07-12 19:07:35
【问题描述】:

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

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

出于性能考虑,我个人仍然认为我最好将文档保存到数据库中。但我不确定和好奇你们的想法。

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

【问题讨论】:

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


    【解决方案1】:

    数据库中的 BLOB 是比本地文件系统慢还是快,取决于 BLOB 的大小。

    这篇来自 Microsoft 的文章可能会让您感兴趣:

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

    【讨论】:

    • 非常有帮助的文章。感谢您链接。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        这似乎是我们这里的关键many documents (pdf, .docx etc.)。许多人可以假设您的数据会迅速增长。您可以在技术上使用这两种方法。您应该考虑,如果您使用数据库后端进行存储并且您的数据库后端是 sql express,那么您需要担心数据库的大小限制。因此,您可能应该使用 Sql Server Professional 或 Enterprise 来避免这种情况。此外,如果您必须使用数据库,请使用与主数据库不同的数据库。 我的建议是:
        1.使用文件系统
        2. 仅在数据库中存储指向您文件的链接 3. 定期备份文件系统上的文件以及您的数据库 4. 保护您存储文件的目录,以防止未经授权的读取或下载文件

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

        【讨论】:

          猜你喜欢
          • 2013-05-16
          • 2020-10-08
          • 2014-04-30
          • 2013-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-04
          • 2012-10-20
          相关资源
          最近更新 更多