【问题标题】:Azure Table Storage: Table Scan One Partition at a TimeAzure 表存储:一次表扫描一个分区
【发布时间】:2014-03-08 04:03:11
【问题描述】:

我有一张桌子,上面写着一堆东西。该表中的每个实体都将具有告诉工作者角色将某些信息写入特定表的分区所需的信息。工作角色正在读取的表的同一分区中的实体可以一起批处理(将写入同一分区)。我不知道表中包含工作角色信息的分区键。有没有办法进行全表扫描,不会同时从不同分区抓取实体?

例如:

Partition Key| Row Key  
========================
1            |  X       
1            |  Y       
1            |  Z       
2            |  X       
2            |  Y       
2            |  Z       

我想扫描该表并获取在对上述表进行表扫描时检索到的所有第一个分区,而不会渗入下一个分区。之后,worker 角色将根据读取的内容执行一些操作,然后继续到下一个分区并执行相同的操作。如果表存储在进行表扫描时无法抓取表中位于不同分区中的一组实体,那么我想我可以使用分页令牌的下一个分区属性来确定是否将从下一个分区读取新分区。

【问题讨论】:

    标签: azure azure-table-storage


    【解决方案1】:

    单个表查询可以返回具有不同分区键的实体。要仅获取具有单个分区键的实体,您首先需要使用仅返回单个结果 ($top=1) 的 PartitionKey > lastKnownParitionKey 查询来确定下一个分区键是什么。然后您可以进行分区扫描(PartitionKey = currentPartitionKey)以获取具有此分区键的所有实体。

    如果您通常每个分区键的实体少于十个,请考虑通过增加第一个请求以获取十个实体并丢弃任何没有您要查找的分区键的实体来进行优化。

    【讨论】:

    • 这听起来是个好主意。我不知道你会怎么做才能到达下一个分区和之后的分区。我基本上想做一次全表扫描,但我想一次做一个分区。我认为小猪支持您的想法,我可以先查看第一行(范围获取分区键> =“”&&分区键最后一个分区键&&分区键
    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    相关资源
    最近更新 更多