我有一个大约 500 万行的天蓝色表,每个分区大约 100k 行。RowKey 是一个可排序的时间戳。我需要能够获取插入到表中的最新记录。
由于不支持 Linq Last、Max、OrderBy 等,如何有效获取最新的表记录?
我有一个大约 500 万行的天蓝色表,每个分区大约 100k 行。RowKey 是一个可排序的时间戳。我需要能够获取插入到表中的最新记录。
由于不支持 Linq Last、Max、OrderBy 等,如何有效获取最新的表记录?
没有有效的方法来做到这一点。但如果它是一个选项,请考虑翻转您的行键,以便最新条目位于顶部(反向时间顺序)。检索前n个条目既简单又有效。
您可以查询小于 MaxDate 的 TimeStamp 并将结果限制为 1。尚未对其进行测试,但它应该可以工作。取决于您的时间戳的格式。
Microsoft表设计模式的日志尾模式部分专门解决了这个问题:
背景和问题
一个常见的要求是能够检索最近创建的实体,例如员工提交的 10 个最近的费用报销。表查询支持 $top 查询操作来返回集合中的前 n 个实体:没有等效的查询操作来返回集合中的最后 n 个实体。
(...)
以下 C# 代码示例显示了一种为从最新到最旧排序的 RowKey 创建合适的“倒置刻度”值的方法:
string invertedTicks = string.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);
(...)