【问题标题】:Querying azure table to get last inserted data for a partition查询天蓝色表以获取分区的最后插入数据
【发布时间】:2016-04-27 12:12:51
【问题描述】:

我有一个 azure 存储表,用于存储从多个来源更新的状态。我将分区键作为源 ID(每个源都是唯一的)。现在对于任何给定的源 ID,我想访问最后更新的状态。我可以通过按时间戳按降序对分区中的结果进行排序并获取第一条记录来做到这一点,但它似乎不是很高效。每个分区可以有超过 1000 条记录,排序似乎不是最好的方法。

有没有其他方法可以有效地实现相同的目标?分区中的实体是否已按我可以利用的某些行键排序?

【问题讨论】:

    标签: azure azure-storage azure-table-storage


    【解决方案1】:

    在 RowKey 中插入一个随时间“递减”的值。我用这个:
    myentity.RowKey = String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);

    现在您可以在主键上执行带有 where 条件的选择,然后执行 Take(1)。这将为您提供最新的项目。

    【讨论】:

    • 虽然此解决方案适用于我们,但是否可能存在同时插入 2 条记录的情况(在异步环境中),从而具有相同的刻度。虽然我们无法维护顺序,但表插入会因冲突而出错。有什么快速的解决方案吗?
    • 快速解决方案:在末尾添加 GUID。 myentity.RowKey = String.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks) + "_" + Guid.NewGuid().ToString();
    猜你喜欢
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多