【问题标题】:Retrieving a Random Row from Azure Table Storage?从 Azure 表存储中检索随机行?
【发布时间】:2014-04-23 02:49:18
【问题描述】:

虽然这看起来很简单,但我想不出一种固定时间的方法来从 Azure 表存储中获取随机行。

我的元素有一个 base64 字符串作为它们的行键(它本质上是一个 GUID)和一个分区键(没有足够的数据来证明多个分区的合理性)。

现在我能想到的最好的选择随机元素的方法是保持一行并获得一个“随机”行,我只需运行一个大于我当前持有的行的查询到。冲洗并重复。

有什么想法吗?

这是行元素,如果有帮助的话:

public class PhoneEntity : TableEntity
{
    private PhoneID _id;
    private Uri _pushUri;

    public Uri PushUri
    {
        get { return _pushUri; }
        set { _pushUri = value; }
    }

    public PhoneID Id
    {
        get { return _id; }
        set { _id = value; }
    }

    public PhoneEntity(PhoneID id, Uri pushUri)
    {
        Id = id;
        PushUri = pushUri;

        this.PartitionKey = "PhonePartition";
        this.RowKey = id.Id64;
    }
}

【问题讨论】:

  • 表中有多少潜在的行?
  • 我们无法确定,只能大于0。Azure表存储不支持计数操作。

标签: c# azure random store


【解决方案1】:

您可以简单地创建一个随机行键并查询大于它的第一行 (.Take(1))。 如果没有找到一行,则您的随机行键太大,因此请使用另一个随机键重试。

假设您的行键分布良好且您使用的是 GUID,那么重试不应过于频繁。

【讨论】:

  • 这似乎很合理。我现在正在做的是类似的事情,尽管具有特定的属性(随机索引)。虽然一旦我得到足够的指导,我会看看是否只使用行键。
猜你喜欢
  • 2019-04-23
  • 2017-11-26
  • 1970-01-01
  • 2013-07-04
  • 2011-07-25
  • 2013-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多