计算Azure表存储中分区内的行数

我已经看到有关如何获取Azure存储表的总行数的各种问题,但我想知道如何获取单个分区中的行数。

如何在将少量实体数据加载到内存时执行此操作?

您可能已经知道Azure表中没有可用的function。 为了获取分区(或表)中的实体(行)总数,您必须获取所有实体。

您可以使用名为Query Projection的技术来减少响应有效负载。 查询投影允许您指定希望表服务返回的实体属性(列)列表。 由于您只对实体的总数感兴趣,我建议您只返回PartitionKey 。 您可能会发现此博客文章有助于理解查询投影: https : //blogs.msdn.microsoft.com/windowsazurestorage/2011/09/15/windows-azure-tables-introducing-upsert-and-query-projection/ 。

您可以通过非常有效地利用azure表存储服务的primefaces批处理操作来实现这一点。 对于每个分区,都有一个具有相同分区键的附加实体和一个特定的行键,如“PartitionCount”等。该实体将具有单个int(或long)属性Count。

每次插入新实体时,都要执行primefaces批处理操作以增加分区计数器实体的Count属性。 您的分区计数器实体将与您的数据实体具有相同的分区键,以便您可以执行具有保证一致性的primefaces批处理操作。

每次删除实体时,请转到并递减分区计数器实体的Count属性。 再次在批量执行操作中,这两个操作是一致的。

如果您只想读取分区计数的值,那么您需要做的就是对分区计数器实体进行单点查询,其Count属性将告诉您该分区的当前计数。