现在有一个监控系统,监控1000个以上的测点的实时数据。可能会10秒钟一检测,也可能是5分钟一检测,这个时间由客户来定这样全天监控,该怎样设计表结构呢?第一种方案:测点作为列名,测点动态增加(测点是会增加或者减少的),
但是sqlserver的最多支持1024个列,oracle最多1000列,db2也不行,mysql好像
支持2000-4000?但是实在linux系统上,他们的服务器是windows2003,安装sql为sqlserver2008结构为 jobno jctime(时间) cedian1 cedian2 ... ... 
这样的话,一天的数据量为 10*6*60*24=86,400行,也还可以,但是问题就是这个列的数量太少,测点超过1024怎么办呢?第二种方案 表结构为 jobno cedian(测点) jctime(时间) jcvalue(值)   
这样的话 一天的数据量为 10*6*60*24*1000=86,400,000行 怎么办呢?  
这个方案是假设1000个测点,如果测点增多的话,那简直了……

解决方案 »

  1.   

    比较倾向于使用LZ的第2种方案。 每日的数据向道兄说的,8640000行,并不是很多。 每日统计计算,使用ssis处理一下,将统计数据放入数据仓库,cube什么的提供给前台用户查询即可。 
      

  2.   

    如果不是按每个点的值直接查询的,可以把1000个点的值,按文本/ini/xml/json格式存放到一个字段
      

  3.   

    数据量虽然很大,但是行大小很小,而且只有插入操作,数据量还不是真正意义上的大表
    我觉得采用第二种方案,如OrchidCat所说,做每日统计到统计表