问题:
我应该编写我的应用程序以直接访问数据库图像存储库还是编写一个中间件来处理文档请求。
背景:
我有一个自定义文档图像和工作流应用程序,目前存储大约 1500 万个文档/文档图像(90%+ 单页,4 组 tiff,其余 PDF、Word 和 Excel 文档)。图像存储库是一个商业的第 3 方应用程序,它非常昂贵并且坦率地说开销太大。我只需要一个系统来存储和检索文档图像。
我正在考虑将映像直接移动到 SQL Server 2005 数据库中。索引信息非常有限 - 基本上是 2 个索引字段。这是一个人寿保险单管理系统,因此我使用保单编号和系统范围的唯一 ID 编号对图像进行索引。还有其他索引值,但它们与图像数据分开存储和维护。这些索引值使我能够查找单个图像检索的唯一 id 值。
数据库服务器是一个双四核 windows 2003 机器,带有托管数据库文件的 SAN 驱动器。当前的图像存储库大小约为 650GB。我还没有进行任何测试来查看转换后的数据库会有多大。我并不是真的在询问数据库设计——我正在与我们的 DBA 在这方面进行合作。如果情况发生变化,我会回来的:-)
当前要替换的系统显然是一个中间件应用程序,但它是一个非常重量级的系统,分布在 3 个 windows 服务器上。如果我走这条路,那将是一个单一的服务器系统。
我主要关心的是可扩展性和性能 - 非常重视性能。我有大约 100 个用户,未来几年的使用增长可能会很慢。大多数用户主要是阅读用户——他们不经常向系统添加图像。我们有一个部门负责扫描和以其他方式将图像添加到存储库。我们还有一些其他应用程序接收文档(通过 ftp),它们会在收到文档时自动将它们插入到存储库中,或者将完整的索引信息或作为用户查看和索引的“批次”。
大多数(90%+)的文档/图像非常小,< 100K,可能< 50K,所以我相信将图像存储在数据库文件中将是最有效的,而不是获取 SQL 2008 并使用文件流。