【问题标题】:Querying azure table for multiple entities查询多个实体的天蓝色表
【发布时间】:2016-08-12 04:22:21
【问题描述】:

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

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

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

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

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

问候

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

          我不知道有什么简单的方法可以做到这一点,但是您可以使用一些动态 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)

          【讨论】:

            猜你喜欢
            • 2012-11-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-09-07
            • 2012-05-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多