4

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

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

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

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

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

问候

4

4 回答 4

1

您可以在 中指定最多 15 个匹配$filter项,因此如果您沿着这条路线走,那么基本上是 15 个特定的行键。注意:这将导致分区扫描。查询的细节在这篇文章中

此 StackOverflow 问题和相关答案中有更多信息。

于 2012-07-16T16:44:40.797 回答
1

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

于 2012-07-16T20:07:33.580 回答
1

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

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

于 2012-07-16T23:23:52.603 回答
0

我不知道有什么简单的方法可以做到这一点,但是您可以使用一些动态 LINQ 查询库。

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

还有这些库:
使用自定义属性动态生成 LINQ 查询
发明您自己的动态 LINQ 解析器

本教程:
动态 LINQ(第 1 部分:使用 LINQ 动态查询库)

于 2012-07-16T16:28:33.723 回答