代码之家  ›  专栏  ›  技术社区  ›  Rosstified

Azure表存储-计算或保持总计

  •  2
  • Rosstified  · 技术社区  · 14 年前

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

    我有几个选择:

    • 使用分区/行键结构并动态执行sum
      例如20101101_ITEMID_uuxxxx(x=guid或time,使其唯一) 然后,我将使用行键的一部分(ITEMID_)查询月份数据,并查询类型中“Cost”属性的总计。

      不过,1000条记录的查询限制将如何管理呢?(也就是说,如果当天的交易量超过1000笔,那么合计起来就很难了)

    • 使用其他记录存储当天的总计,并在添加新记录时更新此记录
      例如,行键“20101101_ITEMID_TOTAL” 然后查询日总数、月总数或年总数。

    最好的方法是什么?对于这种使用表存储的需求,是否有“最佳实践”?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Igorek    14 年前

    我不确定什么是最好的做法,但我可以说我们有类似的情况 AzureWatch 并且肯定在表中使用预聚合值。

    主要出于性能方面的原因——即使按单个分区键和行键中的范围进行查询,表存储也不是即时的。下载记录所需的时间有点重要,而且根据记录的不同,CPU可能会增加,因为它需要将数据反序列化为对象。如果因为1000条记录的限制而多次访问表存储,那么您也会付出更多的代价。

    需要考虑的其他一些想法:

    你的总数会有变化吗?如果没有,则这是对预聚合的另一个推动

    在原始数据消失后,您需要保留聚合值还是需要清除原始数据?如果是,那么这是另一个向预聚合的推进