查询多个实体的azure表

时间:2012-07-16 15:39:07

标签: c# .net azure azure-storage azure-table-storage

我正在编写azure应用程序。我的问题涉及查询特定实体的azure表。

应用程序存储用户使用的单词统计信息。在表中,partitionkey是语言,行键是单词。

我需要查询多个单词。为了加快这个过程,我想在一个查询中提取所有相关实体。

我知道如何“批量插入”具有相同分区键的实体组。 如何使用相同的分区键但不同的rowkey查询50个不同的实体。

是否有可能将查询指定为字符串?

此致

4 个答案:

答案 0 :(得分:1)

您可以在$filter中指定最多15个匹配项,因此如果您沿着该路线走下去,则基本上只有15个特定的行键。注意:这将导致分区扫描。查询的细节在this article

this StackOverflow question及相关答案中有更多信息。

答案 1 :(得分:1)

但是一个查询不一定能加快速度。发出5个查询,每个查询10个单词(可能并行)并合并结果。

答案 2 :(得分:1)

这不是您提出的问题,但如果您反转RowKey和PartitionKey,您可能会发现从这个特定查询中获得更好的性能。我猜测一种语言中可能会有很多单词,所以这意味着你将拥有相当大的分区。如果您尝试按照其他人的建议并行查询(这是一个好主意),所有这些查询都将使用您当前的密钥计划命中相同的分区。

如果您确实反转了密钥,但这意味着获取特定语言的单词列表将非常低效。

答案 3 :(得分:0)

我不知道有任何简单的方法,但你可以使用一些动态的LINQ查询库。

您可能想看看这个问题:
Parsing a string C# LINQ expression

这些图书馆:
Dynamically generate a LINQ query with a custom property
Invent your own Dynamic LINQ parser

本教程:
Dynamic LINQ (Part 1: Using the LINQ Dynamic Query Library)