.NET文档管理系统设计 - 性能问题

2 .net architecture document-management

我需要开发一个基本的.NET文档管理系统,其中包含以下规范:

  1. 数据应该是可移植的和自包含的,因此我将文档(典型格式包括Word,PDF,Excel和Powerpoint)序列化为二进制数据.然后,我将所述二进制数据存储在SQL Server 2005数据库中.当用户需要下载文档时,系统将反序列化二进制数据并以原始格式呈现.

  2. 平均行大小不能大于200k.

  3. 我们预计每月最多可上传500份文件,为期三年.

  4. 我们不希望数据库的大小超过6 GB

  5. 我们的最大目标是20,000人,可能同时访问系统.

我的问题是:为了提供可靠的性能,防止网站停机等,该技术需要多么强大?

我是一名新手开发人员,对这种架构和设计并不熟悉.

LJW*_*LJW 5

需要将文件存储在数据库中的原因是什么,而不是仅仅将文档的路径存储在文件服务器或CDN上?数据库服务器上的负载会减少很多,并为您提供更灵活的文档存储选项.

如果您在像我建议的那样的系统中遇到移动/删除文件的问题,那么也许还要考虑其他选项,例如:

  • 将基础文件系统的权限锁定到除运行应用程序的角色之外的所有人(最简单的选项)
  • 运行后台服务,该服务侦听文件夹等的更改并相应地更新数据库

最后,仅数据库的解决方案可能更简单,但我不会低估您为数万用户存储大型文件可能遇到的负载.

  • +1,但我想补充一点,Oracle 11和SQL Server都提供了文件在数据库中"但实际上存在于文件服务器上"的功能.也就是说,它们由DB管理.Oracle 11甚至可以提供对文件的WebDAV访问,这非常简洁.我们一直在使用SecureFiles for Oracle 11,非常大的文件(500mb +)非常成功. (3认同)

Mik*_*all 5

这不仅仅是一个"基本"系统.所以这就是我的担忧:

  • 每月500份文件,3年,似乎数据库大小可能超过6 GB.您可能想要确定最大文档大小,并查看该计算是否成立.
  • 20,000个用户很多.你能一次期待多少?如果超过100个并发用户,我将开始调查服务器群集/ Web场以便能够处理负载
  • 只是一个不错的选择,但你不会在.NET"Serializable"意义上"序列化".您只需将原始文档字节存储在DB中
  • 如果您需要高可用性,则需要查看数据库复制到另一个数据库实例,以防数据库服务器出现故障

最后.我必须相信有现成的系统能够满足您的需求,并且还包括更多高级功能,如基于权限的访问和文档修订.

麦克风