我在做一个实时监控系统,需要接收大量数据,实时显示的同时要存储,还可以随时查看历史的数据,我的问题有两个:
1、用什么存储?我在做实验的时候用的是文本文档,但是由于数据很多,不方便查看,类似工程上面主要用什么存储?是否要用到数据库?如果是,ADO还是ODBC或者别的,希望做过的给点建议
2、历史数据的查看以曲线图的形式显示数据的变化趋势,如何实现任意数据的查看,比如可以选择一个月的数据,也可以选择一年的数据同时显示在一个绘图区,由于数据太多,是否要用到什么算法优化或者取舍数据?如何绘制历史曲线由于以前没有学过数据库,如果能有类似的程序更加感谢,希望老大以及各位高手给点建议,,谢谢大家 

解决方案 »

  1.   

    数据库存储安全可靠、便于共享查询,但是需要考虑效率问题
    本地文件方式需要考虑数据量有多大的问题,可以使用MapFile来处理,效率上没有问题
    对于数据进行采样、优化,比如如果用整形可以搞定的就不要使用浮点或字串,使用定长结构数据...多个文件、文件夹存储数据,文件系统本身也是一个tree结构,查询也不会有太大问题
      

  2.   

    1, 推荐数据库存储,按时间段备份并重新记录,比如一个月备份一次,压缩,重新创建一个新库,开始第二个月的存储,推荐用ADO,我也是刚用这个做了一个存储日志的库;
    根据你数据量的大小来选择备份周期,如果使用Access,注意别让Access文件太大;2, 要做历史数据的曲线图,尤其是像半年、一年以上的大数据量聚合,最好是单独做一个数据仓库,定时ETL数据到数据仓库,建一个Cube,再做几张曲线图的报表,查询起来效率会高很多,这个可以使用SQL Server的BI模块,不需要使用任何VC++的知识,跟算法也无关了,关键在于你的数据仓库架构和Cube的维度设计;
    你在报表上的需求比较简单,自己查一下这方面的资料,应该不难;
    日期维度也仅仅是年、月,如果需要更细粒度的数据,也可以加入日层次;
      

  3.   

    要存在数据库的,ADO好了。其实串口数据,数据量对于数据库来说不会很大(你还要分析,只存有用的),我以前做监控的时候也是这样做的
      

  4.   

    看来你们公司对实时控制理解的尚浅.数据库绝不能用关系型的,因为这种数据库满足不了控制行业毫秒级的时间需求.而且,不止一个数据库的问题,不仿详细点说吧:我的油箱:[email protected]
      

  5.   

    1, 推荐数据库存储,按时间段备份并重新记录,比如一个月备份一次,压缩,重新创建一个新库,开始第二个月的存储,推荐用ADO,我也是刚用这个做了一个存储日志的库;
    根据你数据量的大小来选择备份周期,如果使用Access,注意别让Access文件太大;2, 要做历史数据的曲线图,尤其是像半年、一年以上的大数据量聚合,最好是单独做一个数据仓库,定时ETL数据到数据仓库,建一个Cube,再做几张曲线图的报表,查询起来效率会高很多,这个可以使用SQL Server的BI模块,不需要使用任何VC++的知识,跟算法也无关了,关键在于你的数据仓库架构和Cube的维度设计;
    你在报表上的需求比较简单,自己查一下这方面的资料,应该不难;
    日期维度也仅仅是年、月,如果需要更细粒度的数据,也可以加入日层次;
      

  6.   

    串口能有多少数据啊,串口速度本来就不快。
    如果是一天24小时不间断的接收数据,可以存到sqlite里,一天存一个文件,这样便于查询。
      

  7.   

    数据比较多的话,建议用oracle或者DB2,也可以用mysql,至于连接数据的方式,ADO,ODBC,OCI(对于oracle),可以根据数据库的情况选择性能较好的,也可以选择通用的。