从Azure表存储中检索随机行?

mam*_*don 2 c# random store azure

虽然这看起来很简单,但我无法想到从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;
    }
}
Run Code Online (Sandbox Code Playgroud)

hoc*_*cho 5

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

假设您使用GUID时行键分布良好,则重试不应经常发生.