我正在考虑使用表存储来存储一些事务数据,但是,我需要支持一些非常高级的报告,基本上是每天/每月的总数。

我有以下几种选择:

  • 使用分区/行键结构并动态执行sum
    例如20101101_ITEMID_XXXXXXXX(x=指导或时间,以使其唯一) 然后我将使用部分行键(ITEMID_201011)查询一个月的数据,并使用类型的“费用”属性总计查询该数据。

    但是如何管理1000条记录的查询限制? (即,如果一天中有超过1000笔交易,那么总计就很难了)

  • 使用另一条记录存储当天的总数,并在添加新记录时进行更新
    例如行键“ 20101101_ITEMID_TOTAL” 然后从中查询出天总数,月总数或年总数。

    做到这一点的最佳方法是什么?使用表存储是否有针对此类需求的“最佳实践”?

有帮助吗?

解决方案

我不确定最佳做法是什么,但我可以评论说,与 AzureWatch 的情况类似并且肯定在表中使用预先汇总的值。

主要是出于性能方面的考虑-即使您通过单个分区键和行键范围查询,表存储也不是瞬时的。下载记录所花的时间有些长,根据记录的不同,CPU可能会加速工作,因为它需要将数据反序列化为对象。如果由于记录限制为1000次而多次访问表存储,那么您还要支付更多的费用。

要考虑的其他一些想法:

您的总计会改变吗?如果没有,这是对预聚合的另一种推动力

在原始数据消失之后,您是否需要保留聚合值?还是需要清除原始数据?如果是,那么这是对预聚合的另一种推动力

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top