如何扩展文档存储系统?

时间:2011-02-01 04:25:20

标签: asp.net file-io file filesystems storage

我维护一个Web应用程序(ASP.NET/IIS7/SQL2K8/Win2K8),它需要访问文档,实际上是成千上万的文档,并且还在增长。目前,它们都在Windows 2K8 Server文件共享上,由UNC路径(SMB)访问。这些文件位于一个单独的平面目录中,我正在尝试计划如何最好地改进此解决方案。我不想使用SQL Filestream属性,因为将它全部迁移到那里会非常费力,并且会真正锁定到SQL Server。我还需要找到一种方法来复制数据以进行灾难恢复,因此也许解决方案也可以为此提供帮助。

选项可以是:

  • 将文件分段到多个目录中?
    • 应用程序会为其所在的目录添加元数据(或通过其他方式分段)
  • 将文件分段到不同的服务器? (虚拟化)
    • 备份变得更加复杂。
    • 应用程序将为其上的服务器添加元数据
  • NAS存储
  • SAN存储
  • 将服务(WCF)放在文件前面,让应用程序与服务对话
    • 可以在许多应用程序中重复使用的奖励

假设我要存储在文件系统上,而不是存储在数据库中(我已经在这里阅读了这些争论),这将是一个更具可扩展性的解决方案?

1 个答案:

答案 0 :(得分:1)

你有几个问题: - 管理大量(静态?)文件 - 准备备份和灾难恢复所述文件

我会把它扔到那里,即使我不是答案的粉丝,但你可能会使用服务器2k8附带的免费SharePoint 2010 Foundation。如果您在查找所需文档时遇到问题(通过搜索,通过标记或其他元数据进行分类)以及文档过期,并且您不想购买完整的文档管理系统,这可能是一种解决方案。当然它引入了新的问题......

如果你唯一的愿望就是让这些文件可以在网上吐出来,那么像你现在使用的文件存储真的是最简单的解决方案。出于DR /冗余目的,我会考虑a)在某种raid / SAN上运行它们,以及b)使用云(azure或amazon)自动同步它们。对于b),您可以获得使云显示为映射驱动器的应用程序,然后使用rsync类型软件使云保持最新。

如果您想构建新的和酷的东西,您可能会考虑将整个文件存档移动到云中,只需在数据库中编写一个表来管理文件名,旧位置,新的云位置和重定向器代码可以向请​​求者提供访问令牌。

3种不同的方法......你的选择。