如何缓存需要几分钟才能返回的大型数据集?

时间:2011-05-12 21:46:26

标签: .net xml caching

这是后台,我有一个来自供应商/合作伙伴的web服务,它返回一个用于显示数据的大型XML文档。很简单。问题是该服务需要几分钟才能执行。供应商在一次方法调用中将整个规范化数据库作为XML文档返回,并且速度很慢。愚蠢的供应商,但我无法控制它。

我有两个问题:

  1. 我在哪里缓存它?磁盘,数据库,内存(我倾向于将它放在磁盘上。它太大而且没有足够的存储空间来存储在内存中。将它放在数据库中可能正确但我不想写ETL并在某处运行工作。)

  2. 如何缓存它?我不能让它过期并让下一个请求刷新缓存,因为它需要很长时间。我需要在缓存重建时提供过时的数据。我可以想到几种方法,但没有任何看似简单或非常优雅的方法。我想做一些简单的事情;我不是在寻找有史以来最好的工程解决方案。

  3. 这是我的计划......请告诉我,我是个白痴,并建议我更容易忽视的事情。

        将XML写入磁盘
        同时将文件名和某种类型的到期炸弹写入缓存(显然文件名不会在很长时间内过期)
        在我的工作线程中,尝试从缓存中读取我的炸弹
        如果缓存过期(我的炸弹关闭)然后产生一个线程来获取并保存XML
        同时,从缓存中获取文件名,并在新XML构建时读入旧XML
        当新的文件结束时,从缓存中过期旧文件名并将文件名写入缓存

      这听起来非常荒谬,必须有更好的方法。

      我正在使用.Net和IIS6,如果需要,我可以将XML粘贴在SQL Server中。

1 个答案:

答案 0 :(得分:0)

您可以创建新数据库和计划作业,以定期获取这些数据并将其存储到数据库中。然后,您可以直接从数据库而不是Web服务提供实际需要的数据。