本人现在通过PCI卡采集一些数据。本程序采集的数据量比较大  ,PCI卡的每个通道每秒大约产生约上万个数据, 
而且采集的时间是持续不断,连续的采集。采集卡有32个通道。每个通道负责采集一种数据样本。这个程序可能一直几个月连续的采集! 
本人想将采集的数据都保存,用文件保存到磁盘,怎么做。本人还想通过某个时间段去检索某个样本数据! 
或许用其他的什么办法保存,数据库啊! 等等 ,大家说说看! 

解决方案 »

  1.   

    本人想将采集的数据都保存,用文件保存到磁盘,怎么做。本人还想通过某个时间段去检索某个样本数据
    >> 那就直接写文件好了。另 你的数据量很大,如果插入数据库是来不及的 所以只有写文件
      

  2.   

    用SQL Server或是Oracle数据库吧,你这数据量比较大,要考滤数据库维护方面的东西,不要把硬盘写爆了。
      

  3.   

    建议实时数据库 + Oracle
    硬盘要足够大。
      

  4.   

    SQL Server或是Oracle数据库  的数据也是放在硬盘上的吗    难道不怕把硬盘写爆本人的是单机程序  ,不联网的
      

  5.   


    //无论如何都是写在硬盘上的。
    //实时数据库的性能应该可以满足插入的要求。
    //定时将实时数据库内容写入到Oracle中。
      

  6.   

    楼主,这样的东西,我在上学的时候做过,你用数据库都不一定能解决问题对于实时性的数据,如果想即使存盘的话,只有两种办法1. 对数据先进行过滤,考虑用信号处理的办法,去除冗余信息;2. 采用硬件辅助的办法,利用磁盘阵列或者SCSI硬盘,加快硬盘读写,或者直接操作硬盘通信接口 ,均可我当初是用直接读写scsi硬盘完成的,自己设计存储格式,然后检索
      

  7.   

    一边采集一边写数据到硬盘的方法不可行
    数据量大倒是谈不上,因为无论你怎么说,你的PCI总线速度在那摆着呢!我做运动控制软件的,对此多少有一些了解
    详细的算一下一个通道1ms采集10个数据,呵呵这对任何系统平台的系统来说太easy了,我做过1ms需要处理上万个数据采集的程序(wince),而且有一部分还是模拟量
    所以楼主不用过分担心采集速度的问题
    ===============================================
    个人认为你应当考虑的是扩展方面的事情,因为板卡是可以扩展的,如果64个通道,128个通道你的程序是否还能受的了
    通常情况下无论是客户还是team leader都不会允许通过降低采样频率来保证存储数据的完整性
    所以大部分时候采用的方法都是放在如何提高存储效率上
    我的做法都是用内存映射文件 开辟一个固定大小的缓冲区(例如2M根据具体应用情况来定)满了再写进硬盘,当然如果系统掉电你的数据肯定会丢的,呵呵我们给自己的系统配了一个数据掉电保持模块,就没有这个问题了,不知道你们的项目经理能否允许。
    这个原理就是实时库的原理,楼主可以查一下实时库方面的知识。
    如果你是做嵌入式系统地话,你这个速度真不算什么,楼主不要被吓倒
      

  8.   

    这个方法也有人用,不过将文件转到数据库是采用另外一个服务进程,不断的检索某个文件夹当中的文件,如果有文件按照格式解析之后存储到数据库
    由于是服务进程且独立于采集程序,如果你把扫描周期设置的大一点,一般情况下不会影响你的采集程序的速度
    我做过电力系统配变监测软件,后台的数据采集的原理就是这么设计的,不好的地方是在xp类下的系统可以,在wince下用这个方法不划算,可以把文件通过远程上传到服务器上由服务器来做这件事情,这样效果会比较好,因为嵌入式系统的资源比较宝贵呵呵