一、环境:
    1、首先现在有一个采集平台,平均5分钟采集一次数据,并将相关数据放到采集平台下的数据库。这个采集平台估计有5000+个采集点,也就是说采集一次会有5000+个记录入库,一天入库记录就会有150W条数据以上入库。
    2、我现在需要做一个应用平台,做数据统计和实时监控。
    3、我需要在tomcat启动时启动一个定时器(Timer),在每天凌晨2点对采集平台的数据库前一天的数据进行抽取,并作出各种统计任务。二、问题:
    1、我在展现实时监控是,需要去采集数据库拿到每个采集点的最新一次采集数据,我用select t.* from (select * from original_data_plc_em order by id desc) t group by t.station_id 这个语句或者近似的语句,都会产生比较大的延迟,数据库是mysql,这个该怎么优化呢?
    2、定时数据抽取和统计我打算就用一个timer启动一个任务组(就是一些列方法了),这样做可行吗?
    3、如果上面可行,那当其中一个任务失败时,这里容错机制该如何来做呢。希望做过相关设计的大虾给点宝贵的建议,小弟不胜感激!!

解决方案 »

  1.   

    1.5000个采集点,那么我估计你的统计的也需要多线程,但是现在我担心的是5分钟内你是否能把5000个采集点的信息取完,所以建议你采集的信息是带有时间的,那么你在启动统计的时候,给定一个时间,去获取这个时间以前最近的一次采集活动的数据。这样可能会更好一些。2.根据采集点创建Task对象,至于对象要怎么封装就看你自己了。如果出现异常则把这个Task对象放进异常任务堆栈以备后续处理。