发明名称 一种网管海量历史数据管理方法
摘要 本发明涉及网管管理系统中历史数据的管理,具体说是一种网管海量历史数据管理方法,通过二级分表规则实现数据库分表,把保存有网管海量历史数据的单个表保存的数据,切分后保存到多个结构相同的分表中,减少单表的容量,从而提高单表的处理效率,并对各个分表进行以下管理:A历史数据分表管理,B历史数据插入管理,C历史数据查询管理,D历史数据转移管理。本发明所述的网管海量历史数据管理方法,能保存海量历史数据,并能高效的进行数据的插入、查询、转移而不影响网管软件的正常使用,提高了网管管理系统的工作效率。
申请公布号 CN102867071B 申请公布日期 2015.04.29
申请号 CN201210401421.6 申请日期 2012.10.19
申请人 烽火通信科技股份有限公司 发明人 邹昊
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 北京捷诚信通专利事务所(普通合伙) 11221 代理人 魏殿绅;庞炳良
主权项 一种网管海量历史数据管理方法,其特征在于:通过二级分表规则实现数据库分表,把保存有网管海量历史数据的单个表保存的数据,切分后保存到多个结构相同的分表中,减少单表的容量,从而提高单表的处理效率,并对各个分表进行以下管理:A历史数据分表管理,B历史数据插入管理,C历史数据查询管理,D历史数据转移管理;二级分表规则用xml格式的文件纪录,其中:历史数据类型data_type,表示数据表保存数据的类型,分组总数group_count,表示对这种数据表分组的总数,分组内分表总数split_count,表示每个分组内分表数最大值,分表内行总数row_count,表示分表内行总数,当一个分表的数据量超过这个值的时候,就需要创建一个新的分表;所述历史数据分表管理的处理流程包括以下步骤:A1、读取记载有数据表的二级分表规则的文件,获取历史数据类型data_type、分组总数group_count、分组内分表总数split_count和分表内行总数row_count;读取数据库分表信息表,获取所有分表的分组号group_no、分表序号table_no、当前正在使用标记current_flag和已使用标记in_use_flag,将这些信息保存到一个分组号为键,分表信息列表为值的map对象中,所述分表信息列表包括分表序号table_no、当前正在使用标记current_flag和已使用标记in_use_flag,其中map的键的取值范围从1到分组总数group_count,如果在数据库分表信息表中没有某个键对应的分表信息,那么在map中该键对应的分表信息列表就为空;A2、遍历A1得到的map对象;A3、根据遍历的结果,如果map对象中当前分组号对应的分表信息列表为空,则转至步骤A4,否则,转至步骤A5;A4、在当前分组号的分组中创建一个可用的分表,分配分表序号为1,设置分表当前正在使用标记为1,已使用标记为1,将该分表的信息插入数据库分表信息表后转至步骤A5;A5、将数据库分表信息表中记载的分表信息,按分组号为键,逐条插入到分组分表信息缓存中,该缓存用于记录所有分组中已创建的分表的信息,将当前正在使用标记为1的分表信息,按分组号为键,将分表序号插入分组当前分表序号缓存,该缓存记录每个分组中current_flag为1的分表的分表序号,转步骤A6;分组当前分表序号缓存内的分表,需要检查其是否超过分表内行总数;A6、使用定时器并等待,如果定时器未超时则一直等待,当定时器超时后,如果接收到应用程序退出的信号,则退出历史数据分表管理的处理流程;否则,转入步骤A7;A7、遍历分组当前分表序号缓存,如果未遍历完则转步骤A8,若遍历完则转步骤A6;A8、读取当前分组中分表序号,根据当前分组的组号和分表序号构造分表的名称,获取分表数据行数;A9、如果分表数据行数大于分表规则中分表内行总数row_count,则转步骤A10、否则转步骤A7;A10、创建新分表,新分表的分表序号为分表所在分组中原来current_flag为1的分表的分表序号值加上1,然后在数据库分表信息表中插入该新分表的信息,并将该新分表的信息插入到分组分表信息缓存中,然后将分组当前分表序号缓存中的当前分组对应的分表序号改为新分表的分表序号;A11、判断当前分组中分表总个数是否大于分组内分表总数split_count,如果大于则转步骤A12,如果小于则转步骤A7;A12、更新数据库分表信息表中该分组内分表序号最小分表的已使用标记in_use_flag为0,标识该分表不会在数据插入和查询中使用,并将被历史数据转移管理流程处理,并从分组分表信息缓存中删除该分表的记录,转步骤A11。
地址 430074 湖北省武汉市东湖开发区关东科技园东信路5号