按照我的理解,你的数据一旦采集,就成为历史数据。而且,在采集的时候,并不需要打开历史数据。你的问题是不是可以描述成:因为某种需要,只保留一个历史文件,而且要绝对的安全,还要保证实时性?那么我的建议是:1、用足够大的内存,把部分内存做成虚拟硬盘;2、采集系统把数据写到这个虚拟硬盘上;3、启动一个后台程序,把虚拟硬盘上的数据写入历史数据文件。这样避免了采集时打开巨大的历史文件,同时保证了查阅历史文件的程序的简单化。因为采集时不操作历史文件,也减少了该文件的损坏程度。如果你还觉得不够绝对安全,建议你再买一块硬盘,那个后台进程同时写两个历史文件。你说的那种access打开临时文件的方法不适合你这样大的文件,更不适合你要求的实时性。粗浅的看法,希望对你有帮助。

解决方案 »

  1.   

    谢谢huanggx(大侠) 点拨,请诸位继续啊……
      

  2.   

    我对工控一窍不通,而且我的水平实在太差,你把我摆到版主一起,真的不合适
    说实话,我真的想哭!!!
    http://google.yahoo.com/bin/query_gb?p=%ca%fd%be%dd%bf%e2+%c1%d9%ca%b1+%b1%b8%b7%dd+vb&hc=0&hs=0
      

  3.   

    huanggx(大侠),你的理解是对的,对历史数据的处理并不需要实时性。这里所说实时性只是针对整个系统而言。
    我原先想把当前采集的数据先保存到一个临时的文件中,然后再定期的导入那一个自定义的数据库大文件中。不知道这样做是否合理?
      

  4.   

    to Wuxyingshu(无影石):不要哭啦,我只需要点子,我还欣赏你发表的谬论,你能来我的帖子回复是我的荣耀啊,真的。
    其实,我觉得你应该很不错的。人有其长亦有其短,舍其短而取其长者也。
      

  5.   

    我不认为个人编写的数据引擎能够解决1G的数据。
    同样是1G的数据库,商业数据库的速度比你自己写的数据引擎快的多。而且速度也快,如果进行适当的优化对于系统的开销并不算大。我问一下,1G的数据如何做分类查询?全部读到内存里吗?分块读取运算又是一个很麻烦的事情。Access数据库超过300MB就动不了了。使用文件数据库是铁定不行的。我推荐使用MSDE桌面数据引擎,小巧、强大而且价格低廉(VisualStudio6、SQLServer7、SQLServer2000光盘都有附带赠送)。对于商业系统来说,1个月的数据就可能有1G,而访问的数据量绝对比你的系统要大的多(注意:是指访问的数据量、而不是次数)。使用SQLServer或者Oracle应付绰绰有余。
      

  6.   

    干脆用组态王或FIX,IFIX
    省事又稳定!
    FIX独特的数据库格式很省空间,速度也快!
      

  7.   

    TO bucher(bucher):
    我所存贮的历史数据不过是一种时间顺序的记录,
    不需要查询和排序的。没有通用数据库的那么多功能?
    TO 001chb(chb):
    不知道你用各种组态软件有什么感想?我的感想是通用性太强,所以处理一些细节时很不得力。
      

  8.   

    是否采用数据库系统,还是要根据需要。根据我的理解,你的采集和历史数据没关系。如果对历史数据的使用比较复杂,也可以考虑(对历史数据)采用数据库技术。采集系统用文件系统就可以了。如果采用数据库系统,不必要用Oracle。主要看你的并发用户数的多少。MSDE支持的并发用户很少,最好不要超过10个。建议采用SQL SERVER 20000 Personal Edition。
      

  9.   

    huanggx(大侠):
    你的论述比较有见地,不知道给你50分够了没有?如果不够请说话,还可以加。