做一个ping程序,要把ping的结果放到数据库中。是这样的:
我ping 1000台机,每10分钟就把这10分钟内的结果(丢包率)放到数据库中,不知道怎么设计这个数据库。
我有几个想法:
1、一个表,1000个字段(即 一个ip 对应 一个字段)
    不知道这么多字段,sql受的了不?会不会有什么不良反应??2、一个表,1000条记录(即 一个ip 对应 一条记录),每10分钟,动态添加一个字段 放入 丢包率。
    这样跑10几20小时,字段值更多...3、1000个表...不管怎么想都觉得字段值很多,表的数据量也很多。
有没有人给点好点的建议??PS:不要说用文件保存,我要保存在数据库中。

解决方案 »

  1.   

    我的意思是这样:表:                          10分钟_1      10分钟_2      10分钟_3      10分钟_4   ......
    192.168.xx.xx1           20%           22%           0%           0%
    192.168.xx.xx2           30%           54%           0%           0%
    192.168.xx.xx3           40%           6%            0%           0%
    192.168.xx.xx4           50%           0%            0%           0%
    ......
      

  2.   

    ID   IP                序号   丢包率 
    1   192.168.xx.xx1      1    20% 
    2   192.168.xx.xx2      1    30%   
    3   192.168.xx.xx3      1   40%    
    4   192.168.xx.xx4      1    50% 
    5   192.168.xx.xx1      2    23%
    6   192.168.xx.xx2      2    0% 
    7   192.168.xx.xx3      2    0%   
    8   192.168.xx.xx4      2    0%
    9   192.168.xx.xx1      3    0%
    10   192.168.xx.xx2     3    0% 
    这样呢?
      

  3.   

    ip date  time  丢包率   四个字段,一张表.动态字段的想法不可取,数据库有限制的.
    这点数据根本对数据库造成不了压力.
      

  4.   

    han。稍微改一下啊,表结构:
    ip 时间  丢包率
    ip和时间做主键
      

  5.   

    谢谢 大家意见 基本都是类似 9楼 的方式了。4320000条 记录 对于SQL server不算什么 么?
    如果用 MYSQL 的话是否就比较多了呢?
      

  6.   

    400多万嘛,一年才5000万.对SQL还可以接受.对MYSQL不知道,对oracle小菜一个.
      

  7.   

    表结构设计为下面的:
    id    ip               data          time        rateoflost
    1     192.168.4.1      2009-03-24    07:40       15%
    2     192.168.4.1      2009-03-24    08:00       10%
    3     192.167.4.2      2009-03-24    07:40       12%
    在ip上建立索引,然后,以IP为分区字段,对表进行分区;
    在data上建立索引,便于日后数据分析。
    这样的处理方式很好了。建议不要涉及到列的增加,这样太灵活,日后分析也是个巨大的隐患。
    id不要设置为主键的号。否则分区的时候会不能分区,因为如果有主键的话,分区必须是以主键为分区标志。它就仅仅作为一个序号用就是了。