我们有一个windows azure表存储系统,其中有各种在白天报告值的实体类型,因此我们有以下分区和行键场景:
大约有4000-5000个实体。共有6种实体类型,并且这些类型大致均匀分布。所以每个人大约800伊什。
ParityKey:entityType日期
行关键字:entityId
每一行都记录该特定日期实体的值。这当前是JSON序列化的。
数据相当冗长。
根据我们的网站用户想要查看的内容,我们会在一个月或两个月内定期查看这些分区中的值。
我们遇到的问题是,如果我们想查询一个实体的一个月的数据,我们发现我们必须按entityId查询31个分区键。
这在最初非常缓慢,但在第一次调用之后,结果会被缓存。
不幸的是,该网站的性质是会有不同数量的不同查询,因此数据不太可能从缓存中受益匪浅。
很明显,我们可以将分区扩大,即可能有整整一周的数据,并将rowKeys扩展为entityId和date。
我还有什么其他选择,或者只是Windows Azure表的延迟相当高?
一些选项包括
-
在并行中进行31个查询
-
对分区密钥范围进行单个查询,即
分区键>=entityType StartDate和分区键<=entityType EndDate和Row key=entityId。
根据您的数据,此查询的延迟可能比您当前的查询少。