【大话IT】下面的计算如何设计

[复制链接]
查看11 | 回复7 | 2014-6-6 15:02:04 | 显示全部楼层 |阅读模式
现有业务情况说明:
从设备上采集设备的实时读数,现有是每隔15分钟采集一次。每隔15分钟采集一次,有可能采集不到这个周期数据,比如8:30的实时读数有可能要到9:00才能采集。目前系统考虑一个区域最多的会有20000个设备,每个区域每天就会有20000*96条记录。当前有一个分区历史表(27个字段),存储的每一个设备每个周期的数据。所有区域的历史数据都是放在这个分区历史表中。分区历史表是先按区域List分区,再按月份Range分区。系统中有一个指标体系,指标需要配置指标的计算公式,比如:指标1=(A设备+B设备+C设备)*0.9-D设备。计算指标值就会需要A、B、C、D四个设备的同一个周期时刻的读数。当然其他指标的计算公式中也有可能用到A、B、C、D四个设备。


当前统计要求:现在需要对指标进行日、月、年等时间段的统计计算,当然前提就是必须计算出指标每一个周期的指标值。现在就会有以下几种方案:方案一:每次计算都是直接从以上说的分区历史表取设备数据计算;方案二:创建一个临时中间表,用于存储设备数据,当设备数据不在需要的时候就会删掉。比如指标计算公式:指标1=(A+B+C)*0.9-D,指标2=A+B-E。现在计算8:30时刻指标值,就从这个临时中间表获取A、B、C、D、E设备8:30读数。有可能A、B、C、D这4个设备读数都正常采集到了,指标1的值能正常计算,但是E设备的读数有可能目前没有采集得到,那么就需要等待E设备读数的到来,那么这个临时中间表还必须保留A、B设备8:30读数,一直到E设备读数到来后,指标2计算完后,才能将8:30的A、B设备读数删除。
考虑性能,目前最优的是第二种方案,虽然第二种会复杂些,想听下大家的意见。。。

回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
没有一个可以说的吗???

,管理员都去水区灌水去了。
回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
物化视图?
回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
提前把每个时间段周期的指标汇聚到一个新表里面去
回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
ABCD是列名?
你的方案二如何满足“任意时刻”的计算?难道每个时刻都要先算好?
如果是这样,方案一就行了。看不到方案二在哪里有改善。

回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
为何一看感觉像是电网调度的方面的业务。。。
回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
tangyuxint 发表于 2014-11-10 17:30
为何一看感觉像是电网调度的方面的业务。。。

已经转换成其他思路了解决了。
如果还是要按上面说的思路解决的话,只能是选第二种方案了。
回复

使用道具 举报

千问 | 2014-6-6 15:02:04 | 显示全部楼层
job吧
数据先放临时表
算完放到另一张表
数据移到历史表
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行