我正在使用Azure表存储。 假设我的表中有一个包含10,000条记录的分区,我想获得1000到1999的记录。下次我想获得4000到4999等记录。 这样做的最快方法是什么?
到目前为止,我所能找到的只有两种选择,我不太喜欢: 1.运行一个返回所有10,000条记录的查询,并在我获得所有10,000条记录时过滤掉我想要的内容。 2.运行一次返回1000条记录的查询,并使用延续令牌获取下一条1000条记录。
是否可以在不下载所有相应记录的情况下获得延续令牌?如果我能获得Continuation Token 1,那么将获得Continuation token 2,并且使用CT2获取2000到2999的记录。
答案 0 :(得分:0)
理论上,您应该能够使用延续令牌,而无需通过关闭第一个请求后的连接来下载前1000个回复的实际数据。我的意思是在TCP级别关闭它。在您阅读所有数据之前。然后打开一个新连接并在那里使用延续令牌。两个WebRequests不会这样做,因为HTTP实现可能会使用keep alive wchich意味着所有数据都将在后台读取,即使您没有在代码中读取它。实际上,您可以将HTTP请求配置为不使用keep alive。
然而,另一种方法很自然,如果您知道RowKey并且可以搜索它,但我假设您不知道每1000个实体批次中将包含哪些行键。
最后我会问你为什么首先遇到这个问题。 您的访问模式 。如果插入是常见的并且很少获得这些记录,我就不会费心去做。如果这就像一个分页问题,我可能会获得第一个请求的所有数据并缓存它(在云端)。如果插入很少但您需要经常运行此查询,我会考虑使数据插入每1000个实体有一个分区,并在插入实体时根据需要重新平衡(由于排序)。