【问题标题】:Store Files in SQL Server or keep them on the File Server?将文件存储在 SQL Server 中还是将它们保存在文件服务器上?
【发布时间】:2009-07-14 09:31:37
【问题描述】:

目前,我们在文件夹/子文件夹中存储了数千个 Microsoft Word 文件、Excel 文件、PDF、图像等。这些是由应用程序定期生成的,并且可以在该应用程序中随时访问。当我们希望升级时,我们现在正在考虑将所有这些文档存储在 SQL Server 2005 中。这样做的原因是能够压缩文档、添加其他字段以存储有关这些文档的更多信息以及在必要时应用索引。

我想我所追求的是使用 SQL Server 作为文档存储库而不是将它们保存在文件服务器上的利弊,以及您在此方面可能有的任何经验。

我们将使用 C# 和 Windows 工作流来完成这项任务。

感谢您的 cmets。

编辑


文件有多大?

大小在 100k = 200k 之间(平均 70KB)

会有多少?

目前大约有 310 万个文件(包括 Word/Excel 和 PDF),每天可以增长 2,600 个。 (增长也会随着时间的推移而增加)

读了多少?

这个很难量化,因为我们的旧系统/应用程序很难解决这个问题。


在类似帖子中指出的另一个有用链接也涵盖了这两种方法的优缺点。

Files Stored on DB vs FileSystem - Pros and Cons

【问题讨论】:

  • 文件有多大?会有多少?读了多少?像这样的决定应该总是有指标。
  • 肯定是相似的,我在创建我的时没有发现。那里有好处也有坏处。
  • 如果您的平均大小小于 256 kb,最好将其保存在数据库中。

标签: c# sql-server sql-server-2005 workflow-foundation


【解决方案1】:

文档大小的经验法则是:

size < 256 kb: store in db
265 kb < size < 1 MB: test for your load
size > 1 Mb: store on file system

编辑:此经验法则也适用于 SQL Server 2008 中的 FILESTREAM 存储

【讨论】:

    【解决方案2】:

    如果您一直升级到 SQL Server 2008,那么您可以使用新的 FILESTREAM 功能,该功能允许文档在表中显示为列,但作为文件驻留在共享中,它可以由程序(如 Word)直接访问。

    【讨论】:

    • 不错,不知道这个功能。
    【解决方案3】:

    我两个都要。

    我会使用唯一名称重命名文件,从而更易于管理,并且我会将所有元数据保存在数据库中(文件名、内容类型、文件系统上的位置、大小、描述等),所以通过数据库(间接)访问文件。

    优点:

    • 文件易于处理;您可以混合使用多个驱动器
    • 数据库可以保存任意数量的元信息,包括您可以搜索的文件描述。
    • 跟踪文件访问和其他统计信息
    • 使用各种范例重新排列文件:树(目录结构)、标签、搜索或上下文

    您也可以在驱动器上进行压缩。您可以使用 RAID 进行备份和提高速度。

    【讨论】:

      【解决方案4】:

      我们在谈论什么样的文件?

      在 SQL 服务器中存储文档可能很有用,因为您可以将文档与其他表关联起来,并使用全文索引等技术并执行模糊搜索等操作。

      缺点是创建文档备份可能有点困难。使用 NTFS 压缩或其他技术也可以进行压缩。

      【讨论】:

      • 它们将是 Mircosoft Word Docments。
      • sry... 还有 Excel 和 PDF 文件。
      • 还存储图片以及 JPEG 和 BMP 文件。
      【解决方案5】:

      这些文档是基于文本的吗?您是否计划使用 SQL Server 的全文搜索来搜索这些文档?如果没有,我认为将这些文档存储在数据库中没有任何好处。当然,您可以随时存储与文档相关的元数据,包括到数据库的路径信息。

      【讨论】:

      • 我们将利用全文搜索以及添加其他字段来存储这些文档上的元数据。
      【解决方案6】:

      在数据库中检索文档的一大好处是可以更轻松地控制对它们的安全访问,因为您可以通过应用中的访问控制来完成这一切。将它们存储在文件服务器上需要处理文件和文件夹级别的访问权限,以防止任何直接访问。还可以将它们放在数据库中以实现单点备份,这样您就可以更轻松地制作完整副本和/或在需要时移动它。

      【讨论】:

        【解决方案7】:

        与其编写自定义 DMS(文档管理系统),不如考虑购买一个或使用 WSS/SharePoint,因为这将处理所有平凡的细节(存储、索引、元数据)并让您构建自定义功能在上面。

        【讨论】:

        • Sharepoint 被考虑过,但成本被认为太高了! :(
        • 哪个费用?每个服务器都是免费的。
        • 我的理解是 Windows SharePoint Services (WSS) 是免费版本,有很多限制。我使用的许可版本是 Microsoft Office SharePoint Server (MOSS)。如有任何混淆,我们深表歉意。
        • 那么也许值得看看开源 DMS(请注意,MOSS 物有所值 - 如果您使用大量连接/办公集成)。 SharePoint 或 DMS 提供了“繁重的工作”——存储数百万个文档(可靠)、索引、元数据等,这意味着开发工作不会重新发明轮子......
        猜你喜欢
        • 2018-02-06
        • 2013-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多