从Azure表存储中检索随机行

本文关键字:检索 随机 存储 Azure | 更新日期: 2023-09-27 17:50:44

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

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

现在我能想到的最好的事情是选择一个随机元素是持有一行,并获得一个"随机"行,我只是运行一个查询的行,这是大于当前的我持有的。冲洗并重复。

任何想法吗?

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

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;
    }
}

从Azure表存储中检索随机行

您可以简单地创建一个随机行键并查询大于它的第一行(. take(1))。如果找不到一行,说明您的随机行键太大,请使用另一个随机键重试。

假设您的行键分布良好,并且使用GUID,那么重试不应该太频繁地发生。