如何通过测试键的存在性来优化事务成本



我正在设计一个使用Azure存储blob/Table/Queue的应用程序,处理大量数据。该应用程序的一个重要方面是,如果给定的键不存在,则将执行工作,而确定键的存在是一项频繁且密集的任务。

我需要从密钥的存在性检查中优化尽可能多的可计费事务。它既可以针对blob,也可以针对表。

我看了这个文档理解Windows Azure存储计费-带宽,事务,和容量。似乎404错误不只是来自匿名请求。

我还在考虑使用BatchTableOperation一次检查100个键,也许使用替换或合并,并确定在结果中,如果键确实存在(还没有尝试,实际上我得到了这个想法,而写作)

欢迎任何好的hack

你应该使用Windows Azure缓存:

  • 加载缓存中所有现有键
  • 每次将记录添加到表存储时,也将其添加到缓存

一旦你这样做了,让你的应用程序首先检查缓存。如果项目不存在,检查表存储只是为了确保(覆盖边缘情况)。但是99%的情况下,如果条目已经被处理过,键在缓存中是可用的,你不需要查询Table Storage(这将大大减少到Table Storage的事务)。

如果使用Windows Azure缓存不是一个选项,还有其他选择,如使用MemoryCache,将所有密钥保存在一个文件中,…

最新更新