一种话单排重方法和装置.pdf

上传人:b*** 文档编号:1282007 上传时间:2018-04-12 格式:PDF 页数:23 大小:680.10KB
返回 下载 相关 举报
摘要
申请专利号:

CN200910223729.4

申请日:

2009.11.18

公开号:

CN102065192A

公开日:

2011.05.18

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04M 15/00申请日:20091118|||公开

IPC分类号:

H04M15/00; G06F17/30

主分类号:

H04M15/00

申请人:

中国移动通信集团安徽有限公司

发明人:

余鹰; 见春蕾

地址:

230061 安徽省合肥市长江西路99号

优先权:

专利代理机构:

北京中誉威圣知识产权代理有限公司 11279

代理人:

丛芳;彭晓玲

PDF下载: PDF下载
内容摘要

本发明公开了一种话单排重方法及装置,其中,该方法包括:将排重索引内存划分为对应磁盘的多个内存索引堆,每个内存索引堆与对应磁盘中的话单索引文件对应;根据接收的话单文件及内存索引堆中对应的话单索引文件,对话单文件进行排重,生成新的话单索引文件;将内存索引堆中的新话单索引文件保存到对应的磁盘。本发明的话单排重方法和装置,将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了工作效率。

权利要求书

1: 一种话单排重方法, 其特征在于, 包括 : 将排重索引内存划分为对应磁盘的多个内存索引堆, 每个所述内存索引堆与对应磁盘 中的话单索引文件对应 ; 根据接收的话单文件及所述内存索引堆中对应的话单索引文件, 对所述话单文件进行 排重, 生成新的话单索引文件 ; 将所述内存索引堆中的新话单索引文件保存到对应的磁盘。
2: 根据权利要求 1 所述的方法, 其特征在于, 还包括 : 在生成新的话单索引文件时, 还生成排重索引增量文件 ; 在系统出现故障无法将内存索引堆中的新话单索引文件保存到对应的磁盘时, 将所述 排重索引增量文件与对应的磁盘中的话单索引文件合并, 生成新的话单索引文件。
3: 根据权利要求 2 所述的方法, 其特征在于, 在生成所述排重索引增量文件后还包括 : 将内存索引堆中的排重索引增量文件保存到临时目录下, 生成事务控制日志, 所述事 务控制日志中记录有所述排重索引增量文件的临时目录和目标目录 ; 将排重索引增量文件由临时目录移动到目标目录, 删除事务控制日志。
4: 根据权利要求 3 所述的方法, 其特征在于, 还包括 : 如果在所述将排重索引增量文件保存到临时目录、 再由临时目录移动到目标目录的步 骤中系统出现故障, 在系统初始化时, 再次执行所述将排重索引增量文件保存到临时目录、 再由临时目录移动到目标目录的步骤。
5: 根据权利要求 1 所述的方法, 其特征在于, 包括 : 按照时间和业务类型将排重索引内存划分为对应磁盘的多个内存索引堆。
6: 根据权利要求 1 所述的方法, 其特征在于, 所述根据接收的话单文件及所述内存索 引堆中对应的话单索引文件对所述话单文件进行排重的步骤包括 : 从所述排重索引内存中查找对应的内存索引堆, 当未查找到对应的内存索引堆时, 从 对应磁盘中的话单索引文件中加载 ; 在所述对应的内存索引堆中查找所述话单对应的排重关键字, 对每条话单进行排重。
7: 根据权利要求 6 所述的方法, 其特征在于, 所述对每条话单进行排重的步骤具体包 括: 在对应的内存索引堆中查找所述话单对应的排重关键字, 如果找到, 该条话单为重单, 否则先对内存索引堆加锁, 在该内存索引堆中增加该排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改标识, 然后对该内存索引堆解锁, 并生成排重输出文件 ; 所述排重输出文件包括 : 正常输出话单文件、 重单输出文件、 排重索引增量文件。
8: 根据权利要求 7 所述的方法, 其特征在于, 所述将内存索引堆中的新话单索引文件 保存到对应的磁盘的步骤具体包括 : 在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值 ; 如果超过, 将该内存索引堆中的新话单索引文件保存到磁盘中 ; 所述空间阈值包括 : 设置修改标识的内存索引堆的个数达到一定数量, 排重索引内存 的空间大小超过一定阈值, 或者内存索引堆的个数达到一定数量。
9: 一种话单排重装置, 其特征在于, 包括 : 排重索引内存, 用于存储对应磁盘的多个以堆存放的话单索引文件, 每个内存索引堆 2 与对应磁盘中的话单索引文件对应 ; 排重处理单元, 用于根据接收的话单文件及内存索引堆中对应的话单索引文件, 对所 述话单文件进行排重, 生成新的话单索引文件 ; 索引保存单元, 用于将内存索引堆中的新话单索引文件保存到对应的磁盘。
10: 根据权利要求 9 所述的装置, 其特征在于, 所述排重处理单元包括 : 排重模块, 用于根据读取的话单的业务类型查找对应的内存索引堆, 根据话单的排重 关键字进行话单排重, 将所述话单文件中的排重关键字加入到所述内存索引堆中, 形成新 的话单索引文件 ; 事务控制模块, 用于生成排重输出文件和事务控制日志, 调用所述排重模块, 将所述排 重输出文件由临时目录移动到目标目录 ; 合并模块, 用于读取排重索引增量文件中的堆关键字和话单关键字, 查找对应的话单 索引文件是否存在, 根据查找结果, 追加话单关键字 ; 所述排重输出文件包括 : 正常输出话单文件、 重单输出文件、 排重索引增量文件。
11: 根据权利要求 10 所述的装置, 其特征在于, 所述排重模块包括 : 获取子模块, 用于获取话单文件中每条话单的堆关键字和排重关键字 ; 索引堆查找子模块, 用于根据所述堆关键字查找对应的内存索引堆, 如果没有找到, 则 从磁盘的话单索引文件中加载 ; 关键字查找子模块, 用于在所述内存索引堆中查找话单文件中的所述排重关键字, 如 果找到, 则判断该条话单为重单, 否则通知加解锁子模块 ; 加解锁子模块, 用于对内存索引堆加锁、 解锁 ; 新索引生成子模块, 用于在未找到话单文件中的所述排重关键字的内存索引堆中增加 排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改标识, 并生成排重输出文件。
12: 根据权利要求 10 所述的装置, 其特征在于, 所述事务控制模块包括 : 输出保存子模块, 用于将正常输出话单文件、 重单输出文件、 排重索引增量文件保存到 临时目录下 ; 日志生成子模块, 用于生成事务控制日志, 所述事务控制日志中记录有输入文件、 正常 输出话单文件、 重单输出文件和排重索引增量文件的临时目录和目标目录 ; 输出移动子模块, 用于将输入文件、 正常输出话单文件、 重单输出文件和排重索引增量 文件由临时目录移动到目标目录 ; 日志删除子模块, 用于删除事务控制日志。
13: 根据权利要求 10 所述的装置, 其特征在于, 所述合并模块包括 : 读取子模块, 用于读取排重索引增量文件中的堆关键字和话单关键字 ; 索引文件查找子模块, 用于根据所述堆关键字查找对应的话单索引文件是否存在 ; 追加子模块, 用于如果话单索引文件存在, 则追加所述话单关键字, 否则, 则建立话单 索引文件, 并追加话单关键字。
14: 根据权利要求 9 所述的装置, 其特征在于, 所述索引保存单元包括 : 堆识别模块, 用于在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过 空间阈值 ; 任务分配模块, 用于根据所述堆识别模块的识别结果, 将操作任务分配给磁盘保存模 3 块和内存清空模块 ; 磁盘保存模块, 用于对内存索引堆上锁, 以写方式打开临时物理索引文件, 将该内存索 引堆中的新话单索引文件写入所述临时物理索引文件, 再将所述临时物理索引文件移动到 磁盘中 ; 内存清空模块, 用于所述磁盘保存模块将所述临时物理索引文件移动完毕后, 清空所 述内存索引堆, 释放内存索引堆的锁 ; 所述空间阈值包括 : 设置修改标识的内存索引堆的个数达到一定数量, 排重索引内存 的空间大小超过一定阈值, 或者内存索引堆的个数达到一定数量。
15: 根据权利要求 10-13 中任意一项所述的装置, 其特征在于, 还包括 : 所述事务控制模块, 还用于在初始化时, 判断在索引增量文件目录下是否有排重索引 增量文件, 如果有, 则调用所述合并模块将所述排重索引增量文件与话单索引文件合并 ; 判 断事务控制日志的内容是否执行完毕, 若不完毕, 则重新执行事务控制日志的内容。

说明书


一种话单排重方法和装置

    【技术领域】
     本发明涉及通信领域中的业务支撑技术, 具体地, 涉及话单排重的方法及装置。背景技术 排重是计费系统的一个重要环节, 计费系统从网元采集话单后, 为了保证用户话 单的唯一性, 必须进行排重处理, 排除重复的话单。随着电信业务的日益复杂、 运营商的用 户数日益增多, 计费系统每日要处理海量的话单, 排重的性能尤为重要。
     现有的排重技术可以分为三种 : 一种是传统的数据库排重方法, 利用数据库的主 键必须唯一的特性进行排重 ; 一种是文件排重方法, 利用文件系统的文件路径、 文件名或文 件记录必须唯一的特性进行排重 ; 一种是内存排重方法, 利用内存的排重关键字必须唯一 的特性进行排重。相比而言, 内存排重方法由于不需要进行慢速的 IO 和外部数据库系统的 访问, 具备快速数据传输的特点, 因此效率较高。
     现有的内存排重原理是 : (1) 将某一时间段的排重索引文件装入内存, 将装入的 当前话单记录和载入内存的排重索引进行比较 ; (2) 如果排重关键字没有找到对应的时间 段, 则需要装载进此时间段的排重索引文件进入内存, 再进行比较 ; (3) 对应的时间段装入 内存后, 若在内存中命中排重关键字, 表明当前的话单记录是重复的话单记录, 直接写入重 单文件, 若没有命中, 则说明是新的排重索引, 更新内存 ; (4) 将内存中的排重索引更新到 磁盘中。
     申请号为 200810183273.9、 公开日为 2009 年 5 月 27 日的中国发明专利申请公开 了一种话单剔重方法和装置, 该方法和装置在话单的内存排重过程中进行应用, 综合了哈 希表、 平衡二叉树和 MD5 的技术, 提高了话单内存排重的效率, 节约了存储空间。但在另一 方面, 在话单排重时, 如果在内存的排重索引中找不到对应的话单排重关键字, 则需要在内 存中增加新的排重索引, 如果不及时将内存中的新排重索引提交到磁盘中, 那么在程序异 常、 宕机、 掉电时, 新排重索引就可能丢失, 而申请号为 200810183273.9、 公开日为 2009 年 5 月 27 日的中国发明专利申请并没有提出上述如何将内存的排重索引快速的保存到磁盘中 的技术解决方案。
     在实现本发明过程中, 发明人发现现有技术中的将内存的排重索引快速的保存到 磁盘中至少存在如下问题 :
     (1) 以话单为单位输出更新后的索引增量文件, 会导致索引增量文件过多, 将会产 生大量的小而碎的文件, 同时需要大量文件的打开、 关闭操作, 文件太碎降低了磁盘的访问 效率 ;
     (2) 因为需要大量的 IO 读写操作, 直接对索引增量文件进行合并, 消耗的时间较 长;
     (3) 对话单文件中的话单进行排重必须等待索引增量文件合并完毕后或排重索引 保存到磁盘完毕后才可以进行下去, 排重效率不高 ;
     (4) 由于运营商的话单种类众多, 每种话单的数量级和时间跨度特征都不相同,
     例如国际漫游语音 / 短信话单数量较少, 但时间跨度很大, 有可能收到 1 个月前的话单 ; 这 样按照某一时间段加载的内存就会由于要参与的排重数据较多导致排重效率下降的问题。 例如, 某日国际漫游的语音话单有 10 条, 而当日的国内语音话单有 100 万条, 那么需要在 1000010 条话单中查找接收到的国际漫游的语音话单是否存在重单, 不但消耗内存, 而且查 找效率低下, 内存中的排重索引保存到磁盘中的时间也会明显加长。 发明内容 本发明的目的是针对现有技术中话单排重过程中话单索引文件保存到磁盘中存 在的效率低下的缺陷, 提出一种话单排重的方法及装置, 以提高话单排重的整体效率。
     为实现上述目的, 根据本发明的一个方面, 提供了一种话单排重的方法。
     根据本发明实施例的话单排重的方法, 包括 : 将排重索引内存划分为对应磁盘的 多个内存索引堆, 每个内存索引堆与对应磁盘中的话单索引文件对应 ; 根据接收的话单文 件及内存索引堆中对应的话单索引文件, 对话单文件进行排重, 生成新的话单索引文件 ; 将 内存索引堆中的新话单索引文件保存到对应的磁盘。
     在上述技术方案中, 话单排重方法还可以包括 : 在生成新的话单索引文件时, 还生 成排重索引增量文件 ; 在系统出现故障无法将内存索引堆中的新话单索引文件保存到对应 的磁盘时, 将排重索引增量文件与对应的磁盘中的话单索引文件合并, 生成新的话单索引 文件。
     在上述技术方案中, 在生成排重索引增量文件后还可以包括 : 将内存索引堆中的 排重索引增量文件保存到临时目录下, 生成事务控制日志, 事务控制日志中记录有排重索 引增量文件的临时目录和目标目录 ; 将排重索引增量文件由临时目录移动到目标目录, 删 除事务控制日志。
     在上述技术方案中, 话单排重方法还可以包括 : 如果在将排重索引增量文件保存 到临时目录、 再由临时目录移动到目标目录的步骤中系统出现故障, 在系统初始化时, 再次 执行将排重索引增量文件保存到临时目录、 再由临时目录移动到目标目录的步骤。
     在上述技术方案中, 话单排重方法还可以包括 : 按照时间和业务类型将排重索引 内存划分为对应磁盘的多个内存索引堆。
     在上述技术方案中, 根据接收的话单文件及内存索引堆中对应的话单索引文件对 话单文件进行排重的步骤可以包括 : 从排重索引内存中查找对应的内存索引堆, 当未查找 到对应的内存索引堆时, 从对应磁盘中的话单索引文件中加载 ; 在对应的内存索引堆中查 找话单对应的排重关键字, 对每条话单进行排重。
     在上述技术方案中, 对每条话单进行排重的步骤具体可以包括 : 在对应的内存索 引堆中查找话单对应的排重关键字, 如果找到, 该条话单为重单, 否则先对内存索引堆加 锁, 在该内存索引堆中增加该排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改 标识, 然后对该内存索引堆解锁, 并生成排重输出文件 ; 排重输出文件包括 : 正常输出话单 文件、 重单输出文件、 排重索引增量文件。
     在上述技术方案中, 将内存索引堆中的新话单索引文件保存到对应的磁盘的步骤 具体可以包括 : 在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈 值; 如果超过, 将该内存索引堆中的新话单索引文件保存到磁盘中 ; 空间阈值包括 : 设置修
     改标识的内存索引堆的个数达到一定数量, 排重索引内存的空间大小超过一定阈值, 或者 内存索引堆的个数达到一定数量。
     本发明的话单排重方法, 根据时间和业务类型将排重索引内存区进行分堆处理, 每个内存索引堆与磁盘中的话单索引文件一一对应, 在话单排重过程中, 根据话单文件中 的堆关键字查找对应的内存索引堆, 提高了查找效率, 将新的话单索引文件保存到磁盘中, 减少了对磁盘中话单索引文件的 IO 读取次数, 提高了工作效率。
     为实现上述目的, 根据本发明的另一个方面, 提供了一种话单排重装置。
     根据本发明实施例的话单排重装置, 包括 : 排重索引内存, 用于存储对应磁盘的多 个以堆存放的话单索引文件, 每个内存索引堆与对应磁盘中的话单索引文件对应 ; 排重处 理单元, 用于根据接收的话单文件及内存索引堆中对应的话单索引文件, 对话单文件进行 排重, 生成新的话单索引文件 ; 索引保存单元, 用于将内存索引堆中的新话单索引文件保存 到对应的磁盘。
     在上述技术方案中, 排重处理单元可以包括 : 排重模块, 用于根据读取的话单的业 务类型查找对应的内存索引堆, 根据话单的排重关键字进行话单排重, 将话单文件中的排 重关键字加入到内存索引堆中, 形成新的话单索引文件 ; 事务控制模块, 用于生成排重输出 文件和事务控制日志, 调用排重模块, 将排重输出文件由临时目录移动到目标目录 ; 合并模 块, 用于读取排重索引增量文件中的堆关键字和话单关键字, 查找对应的话单索引文件是 否存在, 根据查找结果, 追加话单关键字 ; 排重输出文件包括 : 正常输出话单文件、 重单输 出文件、 排重索引增量文件。 在上述技术方案中, 排重模块可以包括 : 获取子模块, 用于获取话单文件中每条话 单的堆关键字和排重关键字 ; 索引堆查找子模块, 用于根据堆关键字查找对应的内存索引 堆, 如果没有找到, 则从磁盘的话单索引文件中加载 ; 关键字查找子模块, 用于在内存索引 堆中查找话单文件中的排重关键字, 如果找到, 则判断该条话单为重单, 否则通知加解锁子 模块 ; 加解锁子模块, 用于对内存索引堆加锁、 解锁 ; 新索引生成子模块, 用于在未找到话 单文件中的排重关键字的内存索引堆中增加排重关键字, 形成新的话单索引文件, 设置内 存索引堆的修改标识, 并生成排重输出文件。
     在上述技术方案中, 事务控制模块可以包括 : 输出保存子模块, 用于将正常输出话 单文件、 重单输出文件、 排重索引增量文件保存到临时目录下 ; 日志生成子模块, 用于生成 事务控制日志, 事务控制日志中记录有输入文件、 正常输出话单文件、 重单输出文件和排重 索引增量文件的临时目录和目标目录 ; 输出移动子模块, 用于将输入文件、 正常输出话单文 件、 重单输出文件和排重索引增量文件由临时目录移动到目标目录 ; 日志删除子模块, 用于 删除事务控制日志。
     在上述技术方案中, 合并模块可以包括 : 读取子模块, 用于读取排重索引增量文件 中的堆关键字和话单关键字 ; 索引文件查找子模块, 用于根据堆关键字查找对应的话单索 引文件是否存在 ; 追加子模块, 用于如果话单索引文件存在, 则追加话单关键字, 否则, 则建 立话单索引文件, 并追加话单关键字。
     在上述技术方案中, 索引保存单元可以包括 : 堆识别模块, 用于在设置有修改标识 的内存索引堆中判断内存索引堆的空间是否超过空间阈值 ; 任务分配模块, 用于根据堆识 别模块的识别结果, 将操作任务分配给磁盘保存模块和内存清空模块 ; 磁盘保存模块, 用于
     对内存索引堆上锁, 以写方式打开临时物理索引文件, 将该内存索引堆中的新话单索引文 件写入临时物理索引文件, 再将临时物理索引文件移动到磁盘中 ; 内存清空模块, 用于磁盘 保存模块将临时物理索引文件移动完毕后, 清空内存索引堆, 释放内存索引堆的锁 ; 空间阈 值包括 : 设置修改标识的内存索引堆的个数达到一定数量, 排重索引内存的空间大小超过 一定阈值, 或者内存索引堆的个数达到一定数量。
     在上述技术方案中, 话单排重装置还可以包括 : 事务控制模块, 还用于在初始化 时, 判断在索引增量文件目录下是否有排重索引增量文件, 如果有, 则调用合并模块将排重 索引增量文件与话单索引文件合并 ; 判断事务控制日志的内容是否执行完毕, 若不完毕, 则 重新执行事务控制日志的内容。
     本发明的话单排重装置, 根据时间和业务类型将排重索引内存区进行分堆处理, 每个内存索引堆与磁盘中的话单索引文件一一对应, 在话单排重过程中, 根据话单文件中 的堆关键字查找对应的内存索引堆, 提高了查找效率, 克服了现有的话单内存排重装置在 话单索引内存保存到磁盘的工作过程中存在的效率低下 ( 如文件太碎、 保存时间较长、 影 响排重过程、 内存话单索引文件加载过多 ) 的缺陷, 既保证了内存排重的安全性, 又降低了 内存话单索引文件加载的数量, 减少了读取磁盘 IO 的次数, 提高了工作效率。 本发明的其它特征和优点将在随后的说明书中阐述, 并且, 部分地从说明书中变 得显而易见, 或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明 书、 权利要求书、 以及附图中所特别指出的结构来实现和获得。
     下面通过附图和实施例, 对本发明的技术方案做进一步的详细描述。
     附图说明 附图用来提供对本发明的进一步理解, 并且构成说明书的一部分, 与本发明的实 施例一起用于解释本发明, 并不构成对本发明的限制。在附图中 :
     图 1 为根据本发明话单排重方法实施例一的流程图 ;
     图 2 为根据本发明话单排重方法实施例二的流程图 ;
     图 3 为根据图 2 实施例在步骤 S210 与 S212 之间的方法流程图 ;
     图 4 为根据本发明话单排重方法实施例三的流程图 ;
     图 5 为根据本发明话单排重方法实施例四的流程图 ;
     图 6 为根据本发明话单排重装置实施例一的结构示意图 ;
     图 7 为根据本发明话单排重装置实施例二的结构示意图 ;
     图 8 为根据本发明话单排重装置实施例三的结构示意图 ;
     图 9 为图 8 实施例中的合并模块的结构示意图 ;
     图 10 为图 8 实施例中的事物控制模块的结构示意图 ;
     图 11 为图 8 实施例中的排重模块的结构示意图。
     具体实施方式
     以下结合附图对本发明的优选实施例进行说明, 应当理解, 此处所描述的优选实 施例仅用于说明和解释本发明, 并不用于限定本发明。
     方法实施例根据本发明实施例, 提供了一种话单排重方法, 图 1 为根据本发明话单排重方法 实施例一的流程图, 如图 1 所示, 本实施例包括 :
     步骤 S102 : 将排重索引内存进行分堆处理, 每个内存索引堆与磁盘中的话单索引 文件一一对应 ;
     在电信运营商的话单排重的技术中, 由于运营商的业务种类繁多, 各类业务的话 单数据、 时间跨度不同, 例如国际漫游语音话单每日的数量较少, 且时间跨度较大, 而国内 语音话单每日数量较多, 时间跨度较小, 而且各类业务话单之间不会存在重复话单的现象。
     因此, 在本发明的实施例中, 将存储话单索引文件的排重索引内存按照时间和业 务类型进行分堆处理, 每个内存索引堆与磁盘中存储的话单索引文件进行一一对应, 每个 内存索引堆具有两个属性 : 堆关键字和堆修改标识。
     其中, 堆关键字可以取精确到的时间单位、 业务类型, 例如, 语音业务分两个堆, 一 个是国际漫游语音话单, 精确到的时间单位为天、 业务类型为 A1, 一个是国内语音话单, 精 确到的时间单位为分钟, 业务类型为 A2, 短信业务分两个堆, 一个是国际短信话单, 精确到 的时间单位为天, 业务类型为 B1, 一个是国内短信话单, 精确到的时间单位为分钟, 业务类 型为 B2。
     其中, 在对话单文件的查重过程中, 如果内存索引堆中增加新话单, 则形成新的话 单索引文件, 并在该内存索引堆中设置修改标识, 修改标识用于在内存索引堆中判断内存 索引堆的空间是否超过空间阈值, 以判断将该内存索引堆中的新话单索引文件是否保存到 磁盘中, 具体参见图 2 实施例中的步骤 S212 至 S214 和步骤 S436 至 S442 ;
     步骤 S104 : 读取话单文件, 对话单文件进行排重, 生成新的话单索引文件 ;
     步骤 S106 : 将内存索引堆中的新话单索引文件保存到磁盘中。
     本实施例的话单排重方法, 根据时间和业务类型将排重索引内存区进行分堆处 理, 每个内存索引堆与磁盘中的话单索引文件一一对应, 在话单排重过程中, 根据话单文件 中的堆关键字查找对应的内存索引堆, 提高了查找效率, 将新的话单索引文件保存到磁盘 中, 减少了对磁盘中话单索引文件的 IO 读取次数, 提高了工作效率。
     图 2 为根据本发明话单排重方法实施例二的流程图, 如图 2 所示, 本实施例包括 :
     步骤 S202 : 将排重索引内存进行分堆处理, 每个内存索引堆与磁盘中的话单索引 文件一一对应 ;
     步骤 S204 : 每读取一个话单文件, 先获取话单文件中每条话单的堆关键字和排重 关键字 ;
     步骤 S206 : 根据堆关键字在排重索引内存中查找对应的内存索引堆, 如果没有找 到对应的内存索引堆, 则从磁盘的话单索引文件中加载 ;
     步骤 S208 : 在内存索引堆中查找排重关键字 ;
     具体地, 在步骤 S206 中的查找排重关键字的过程中, 可以采用背景技术中提到的 申请号为 200810183273.9、 公开日为 2009 年 5 月 27 日的中国发明专利申请中提到的排重 方法进行查重 ;
     步骤 S210 : 如果找到, 证明该条话单为重单, 否则先对内存索引堆加锁, 在该内存 索引堆中增加排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改标识, 然后对该 内存索引堆解锁, 并生成排重输出文件 ;排重输出文件包括 : 正常输出话单文件、 重单输出文件、 排重索引增量文件 ;
     如图 3 所示, 在步骤 S210 之后还具体包括 :
     步骤 S2102 : 将正常输出话单文件、 重单输出文件、 排重索引增量文件保存到临时 目录下 ;
     步骤 S2104 : 生成事务控制日志, 记录输入文件、 正常输出话单文件、 重单输出文 件和排重索引增量文件的临时目录和目标目录 ;
     步骤 S2106 : 将输入文件、 正常输出话单文件、 重单输出文件和排重索引增量文件 由临时目录移动到目标目录 ;
     步骤 S2108 : 删除事务控制日志 ;
     步骤 S212 : 在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过 空间阈值 ;
     空间阈值包括 : 设置修改标识的内存索引堆的个数达到一定数量, 排重索引内存 的空间大小超过一定阈值, 或者内存索引堆的个数达到一定数量 ;
     步骤 S214 : 如果超过, 将该内存索引堆中的新话单索引文件保存到磁盘中。
     本实施例的话单排重方法, 将排重索引内存进行分堆处理, 每个内存索引堆与磁 盘中的话单索引文件一一对应, 在加载磁盘中的话单索引文件时, 只需将与该内存索引堆 对应的话单索引文件加载即可, 减少了话单索引文件的加载数量, 提高了话单的排重效率 ; 同时, 本实施例的话单排重方法, 将排重输出文件先保存在临时目录下, 生成事务控制日 志, 再将排重输出文件由临时目录移动到目标目录, 如果在上述过程中话单排重装置发生 故障 ( 如程序异常、 宕机、 掉电 ) 无法工作, 由于事务控制日志的存在, 在装置重新启动时, 会根据事物控制日志的内容, 将排重输出文件重新由临时目录移动到目标目录, 保证了排 重输出文件输出的完整性和可靠性。 图 4 为根据本发明话单排重方法实施例三的流程图, 如图 4 所示, 本实施例包括 :
     步骤 S302 : 在话单排重装置初始化时, 首先判断在索引增量文件目录下是否有排 重索引增量文件 ;
     步骤 S304 : 如果有, 则将排重索引增量文件与话单索引文件合并, 合并步骤具体 包括步骤 S306 至 S312 ;
     步骤 S306 : 读取排重索引增量文件中的堆关键字和话单关键字 ;
     步骤 S308 : 根据步骤 S306 中的堆关键字查找对应的话单索引文件是否存在 ;
     步骤 S310 : 对应的话单索引文件如果存在, 则追加步骤 S306 中的话单关键字, 否 则, 则建立话单索引文件, 并追加步骤 S306 中的话单关键字 ;
     步骤 S312 : 删除排重索引增量文件 ;
     步骤 S314 : 判断事务控制日志的内容是否执行完毕 ;
     步骤 S316 : 若事务控制日志的内容没有执行完毕, 则重新执行图 3 中步骤 S2102 至步骤 S2108 的内容。
     本实施例的话单排重方法, 在方法实施例一、 实施例二的基础上, 在话单排重装置 初始化时, 判断如果在索引增量文件目录下有排重索引增量文件, 则证明上一将内存索引 堆中的新话单索引文件保存到磁盘的步骤未完整完成, 磁盘中的话单索引文件为未更新的 原文件, 此时将排重索引增量文件与磁盘内的话单索引文件合并, 即通过内存索引堆中的
     新话单索引文件中的新增的话单索引部分与磁盘内的原话单索引文件合并, 保证了磁盘中 的话单索引文件为最新的话单索引文件, 保证了话单排重的准确性和有效性。
     图 5 为根据本发明话单排重方法实施例四的流程图, 如图 5 所示, 本实施例包括 :
     步骤 S402 : 在话单排重装置初始化时, 首先判断在索引增量文件目录下是否有排 重索引增量文件 ;
     步骤 S404 : 如果有, 则将排重索引增量文件与话单索引文件合并, 合并过程具体 包括步骤 S406 至步骤 S412 ;
     步骤 S406 : 读取排重索引增量文件中的堆关键字和话单关键字 ;
     步骤 S408 : 根据步骤 S406 中的堆关键字查找对应的话单索引文件是否存在 ;
     步骤 S410 : 对应的话单索引文件如果存在, 则追加步骤 S406 中的话单关键字, 否 则, 则建立话单索引文件, 并追加步骤 S406 中的话单关键字 ;
     步骤 S412 : 删除排重索引增量文件 ;
     步骤 S414 : 判断事务控制日志的内容是否执行完毕 ;
     步骤 S416 : 若事务控制日志的内容没有执行完毕, 则重新执行步骤 S428 至步骤 S434 中的内容 ; 步骤 S418 : 将排重索引内存进行分堆处理, 每个内存索引堆与磁盘中的话单索引 文件一一对应 ;
     步骤 S420 : 每读取一个话单文件, 先获取话单文件中每条话单的堆关键字和排重 关键字 ;
     步骤 S422 : 根据堆关键字在对应的内存索引堆中查找对应的内存索引堆, 如果没 有找到对应的内存索引堆, 则从磁盘的话单索引文件中加载 ;
     步骤 S424 : 在内存索引堆中查找排重关键字 ;
     步骤 S426 : 如果找到, 证明该条话单为重单, 否则先对内存索引堆加锁, 在该内存 索引堆中增加排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改标识, 然后对该 内存索引堆解锁, 并生成排重输出文件 ;
     排重输出文件包括 : 正常输出话单文件、 重单输出文件、 排重索引增量文件 ;
     步骤 S428 : 将正常输出话单文件、 重单输出文件、 排重索引增量文件保存到临时 目录下 ;
     步骤 S430 : 生成事务控制日志, 记录输入文件、 正常输出话单文件、 重单输出文件 和排重索引增量文件的临时目录和目标目录 ;
     步骤 S432 : 将输入文件、 正常输出话单文件、 重单输出文件和排重索引增量文件 由临时目录移动到目标目录 ;
     步骤 S434 : 删除事务控制日志 ;
     步骤 S436 : 在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过 空间阈值 ;
     步骤 S438 : 如果超过, 对内存索引堆上锁, 以写方式打开临时物理索引文件 ;
     步骤 S440 : 将该内存索引堆中的新话单索引文件写入临时物理索引文件 ;
     步骤 S442 : 将临时物理索引文件移动到磁盘中, 替换原话单索引文件 ;
     步骤 S444 : 移动完毕后, 清空内存索引堆, 保障内存索引堆占用的空间不会过大 ;
     步骤 S446 : 释放内存索引堆的锁, 并删除排重索引增量文件。
     需要说明的是, 在上述步骤 S436 至 S446 中, 如果话单排重装置出现故障无法将内 存索引堆中的新话单索引文件保存到对应的磁盘时, 将不会进行步骤 S446 中删除排重索 引增量文件的步骤, 在话单排重装置初始化时, 判断出在索引增量文件目录下有排重索引 增量文件, 将排重索引增量文件与话单索引文件合并, 即执行 S402 至 S412 的步骤 ;
     需要说明的是, 在上述步骤 S428 至 S432 中, 如果话单排重装置出现故障无法将输 入文件、 正常输出话单文件、 重单输出文件和排重索引增量文件由临时目录移动到目标目 录时, 在话单排重装置初始化时, 步骤 S414 至 S416 将判断事务控制日志的内容没有执行完 毕, 则重新执行步骤 S428 至步骤 S434 中的内容。
     需要说明的是, 步骤 S436 至 S446 中的内存索引堆中的新话单索引文件保存到对 应的磁盘的步骤与步骤 S420 至 S426 中的话单排重的步骤可以并行工作, 互不干扰。
     本实施例的话单排重方法, 将排重索引内存进行分堆处理, 在话单排重的同时, 将 内存索引堆中的新话单索引文件中的新增的话单索引部分 ( 即排重索引增量文件 ) 定期通 过临时目录移动到目标目录, 并生成事务控制日志, 在话单排重装置正常运转时, 如果内存 索引堆的空间超过空间阈值, 将排重索引内存中的新话单索引文件保存到磁盘中, 替换原 话单索引文件, 提高了话单排重的工作效率 ; 如果话单排重装置发生故障, 则将排重索引增 量文件与磁盘中的原话单索引文件合并, 保证了话单排重的有效性和准确性 ; 由于事务控 制日志的存在, 即使在排重索引增量文件输出的过程中, 话单排重装置出现故障, 也会在话 单排重装置初始化时根据事务控制日志的内容重新执行, 保证了排重索引增量文件输出的 可靠性。 装置实施例
     根据本发明实施例, 提供了一种话单排重装置。图 6 为根据本发明话单排重装置 实施例一的结构示意图, 如图 6 所示, 本实施例包括 :
     排重索引内存 51, 用于存储对应磁盘的多个以堆存放的话单索引文件, 每个内存 索引堆与对应磁盘中的话单索引文件对应 ;
     排重处理单元 52, 用于根据接收的话单文件及内存索引堆中对应的话单索引文 件, 对话单文件进行排重, 生成新的话单索引文件 ;
     索引保存单元 53, 用于将内存索引堆中的新话单索引文件保存到对应的磁盘。
     在本发明的实施例中, 将存储话单索引文件的排重索引内存按照时间和业务类型 进行分堆处理, 每个内存索引堆与磁盘中存储的话单索引文件进行一一对应, 每个内存索 引堆具有两个属性 : 堆关键字和堆修改标识。
     其中, 堆关键字可以取精确到的时间单位、 业务类型。
     其中, 在对话单文件的查重过程中, 如果内存索引堆中增加新话单, 则形成新的话 单索引文件, 并在该内存索引堆中设置修改标识。
     本实施例的话单排重装置, 根据时间和业务类型将排重索引内存区进行分堆处 理, 每个内存索引堆与磁盘中的话单索引文件一一对应, 在话单排重过程中, 根据话单文件 中的堆关键字查找对应的内存索引堆, 提高了查找效率, 克服了现有的话单内存排重装置 在话单索引内存保存到磁盘的工作过程中存在的效率低下 ( 如文件太碎、 保存时间较长、 影响排重过程、 内存话单索引文件加载过多 ) 的缺陷, 既保证了内存排重的安全性, 又降低
     了内存话单索引文件加载的数量, 减少了读取磁盘 IO 的次数, 提高了工作效率。
     图 7 为根据本发明话单排重装置实施例二的结构示意图, 如图 7 所示, 本实施例包 括排重索引内存 61、 排重处理单元 62 和索引保存单元 63, 其功能与图 6 实施例中的对应单 元功能一致, 在此不再赘述。
     排重处理单元 62 包括 :
     合并模块 621, 用于读取排重索引增量文件中的堆关键字和话单关键字, 查找对应 的话单索引文件是否存在, 根据查找结果, 追加话单关键字 ;
     事务控制模块 622, 用于生成排重输出文件和事务控制日志, 调用排重模块 623, 将排重输出文件由临时目录移动到目标目录 ;
     排重模块 623, 用于根据读取的话单的业务类型查找对应的内存索引堆, 根据话单 的排重关键字进行话单排重, 将话单文件中查找到的排重关键字加入到内存索引堆中, 形 成新的话单索引文件 ;
     排重输出文件包括 : 正常输出话单文件、 重单输出文件、 排重索引增量文件。
     索引保存单元 63 包括 :
     堆识别模块 631, 用于在设置有修改标识的内存索引堆中判断内存索引堆的空间 是否超过空间阈值, 将超过空间阈值的内存索引堆的堆关键字列表和操作类型传递给任务 分配模块 632 ;
     其中, 空间阈值包括 : 设置修改标识的内存索引堆的个数达到一定数量, 排重索引 内存的空间大小超过一定阈值, 或者内存索引堆的个数达到一定数量 ;
     任务分配模块 632, 用于根据堆识别模块 631 的识别结果, 将操作任务分配给磁盘 保存模块 633 和内存清空模块 634, 并在磁盘保存模块 633 和内存清空模块 634 完成相应的 操作任务后接收返回的任务操作结果, 其操作任务的分配方法包括顺序分配、 随机分配、 按 函数分配 ; 并在所有的操作任务完成后, 通知增量删除模块 635 删除对应的排重索引增量 文件 ;
     磁盘保存模块 633, 用于对内存索引堆上锁, 以写方式打开临时物理索引文件, 将 该内存索引堆中的新话单索引文件写入临时物理索引文件, 再将临时物理索引文件移动到 磁盘中 ;
     其中, 由于磁盘保存模块 633 将内存索引堆上锁, 因此, 在磁盘保存模块 633 将内 存索引堆中的新话单索引文件移动到磁盘的过程可以与排重模块 623 的排重过程并行, 提 高了排重效率 ;
     内存清空模块 634, 用于磁盘保存模块 633 将临时物理索引文件移动完毕后, 清空 内存索引堆, 释放内存索引堆的锁 ;
     增量删除模块 635, 用于删除排重索引增量文件。
     本实施例的话单排重装置, 将排重索引内存进行分堆处理, 每个内存索引堆与磁 盘中的话单索引文件一一对应, 在加载磁盘中的话单索引文件时, 只需将与该内存索引堆 对应的话单索引文件加载即可, 减少了话单索引文件的加载数量, 提高了话单的排重效率 ; 同时, 本实施例的话单排重装置, 将排重输出文件先保存在临时目录下, 生成事务控制日 志, 再将排重输出文件由临时目录移动到目标目录, 如果在上述过程中话单排重装置发生 故障无法工作, 由于事务控制日志的存在, 在话单排重装置重新启动时, 会根据事物控制日志的内容, 将排重输出文件重新由临时目录移动到目标目录, 保证了排重输出文件输出的 完整性和可靠性。
     图 8 为根据本发明话单排重装置实施例三的结构示意图, 如图 8 所示, 本实施例包 括: 排重索引内存 71、 排重处理单元 72 和索引保存单元 73, 其中, 排重处理单元 72 包括合 并模块 721、 事务控制模块 722、 排重模块 723, 索引保存单元 73 包括堆识别模块 731、 任务 分配模块 732、 磁盘保存模块 733、 内存清空模块 734、 增量删除模块 735, 其功能分别与图 6、 图 7 实施例的对应单元、 模块一致, 在此不再赘述。
     如图 9 所示, 合并模块 721 包括 :
     读取子模块 7211, 用于读取排重索引增量文件中的堆关键字和话单关键字 ;
     索引文件查找子模块 7212, 用于根据堆关键字查找对应的话单索引文件是否存 在;
     追加子模块 7213, 用于如果话单索引文件存在, 则追加话单关键字, 否则, 则建立 话单索引文件, 并追加话单关键字 ;
     增量删除子模块 7214, 用于删除排重索引增量文件。
     如图 10 所示, 事务控制模块 722 包括 :
     输出保存子模块 7221, 用于将正常输出话单文件、 重单输出文件、 排重索引增量文 件保存到临时目录下 ;
     日志生成子模块 7222, 用于生成事务控制日志, 事务控制日志中记录有输入文件、 正常输出话单文件、 重单输出文件和排重索引增量文件的临时目录和目标目录 ;
     输出移动子模块 7223, 用于将输入文件、 正常输出话单文件、 重单输出文件和排重 索引增量文件由临时目录移动到目标目录 ;
     日志删除子模块 7224, 用于删除事务控制日志。
     如图 11 所示, 排重模块 723 包括 :
     获取子模块 7231, 用于获取话单文件中每条话单的堆关键字和排重关键字 ;
     索引堆查找子模块 7232, 用于根据堆关键字查找对应的内存索引堆, 如果没有找 到, 则从磁盘的话单索引文件中加载 ;
     关键字查找子模块 7233, 用于在所述内存索引堆中查找话单文件中的排重关键 字, 如果找到, 则判断该条话单为重单, 否则通知加解锁子模块 7234 ;
     加解锁子模块 7234, 用于对内存索引堆的加锁、 解锁 ;
     新索引生成子模块 7235, 用于在未找到话单文件中的排重关键字的内存索引堆中 增加排重关键字, 形成新的话单索引文件, 设置内存索引堆的修改标识, 并生成排重输出文 件。
     优选地, 事务控制模块 722, 还用于在初始化时, 判断在索引增量文件目录下是否 有排重索引增量文件, 如果有, 则调用合并模块 721 将排重索引增量文件与话单索引文件 合并 ; 判断事务控制日志的内容是否执行完毕, 若不完毕, 则重新执行事务控制日志的内 容。
     本实施例的话单排重装置, 将排重索引内存进行分堆处理, 在话单排重的同时, 将 内存索引堆中的新话单索引文件中的新增的话单索引部分 ( 即排重索引增量文件 ) 定期 通过临时目录移动到目标目录, 并生成事务控制日志, 在话单排重装置正常运转时, 如果内存索引堆的空间在超过空间阈值, 将排重索引内存中的新话单索引文件保存到磁盘中, 替 换原话单索引文件, 提高了话单排重的工作效率 ; 如果话单排重装置发生故障, 则将排重索 引增量文件与磁盘中的原话单索引文件合并, 保证了话单排重的有效性和准确性 ; 由于事 务控制日志的存在, 即使在排重索引增量文件输出的过程中, 话单排重装置出现故障, 也会 在装置初始化时根据事务控制日志的内容重新执行, 保证了排重索引增量文件输出的可靠 性。
     最后应说明的是 : 以上所述仅为本发明的优选实施例而已, 并不用于限制本发明, 尽管参照前述实施例对本发明进行了详细的说明, 对于本领域的技术人员来说, 其依然可 以对前述各实施例所记载的技术方案进行修改, 或者对其中部分技术特征进行等同替换。 凡在本发明的精神和原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的 保护范围之内。

一种话单排重方法和装置.pdf_第1页
第1页 / 共23页
一种话单排重方法和装置.pdf_第2页
第2页 / 共23页
一种话单排重方法和装置.pdf_第3页
第3页 / 共23页
点击查看更多>>
资源描述

《一种话单排重方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种话单排重方法和装置.pdf(23页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN102065192A43申请公布日20110518CN102065192ACN102065192A21申请号200910223729422申请日20091118H04M15/00200601G06F17/3020060171申请人中国移动通信集团安徽有限公司地址230061安徽省合肥市长江西路99号72发明人余鹰见春蕾74专利代理机构北京中誉威圣知识产权代理有限公司11279代理人丛芳彭晓玲54发明名称一种话单排重方法和装置57摘要本发明公开了一种话单排重方法及装置,其中,该方法包括将排重索引内存划分为对应磁盘的多个内存索引堆,每个内存索引堆与对应磁盘中的话单索引文件对应;根。

2、据接收的话单文件及内存索引堆中对应的话单索引文件,对话单文件进行排重,生成新的话单索引文件;将内存索引堆中的新话单索引文件保存到对应的磁盘。本发明的话单排重方法和装置,将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了工作效率。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书11页附图8页CN102065202A1/3页21一种话单排重方法,其特征在于,包括将排重索引内存划分为对应磁盘的多个内存索引堆,每个所述内存索引堆与对应磁盘中的话单索引文件对应;根据接收的话单。

3、文件及所述内存索引堆中对应的话单索引文件,对所述话单文件进行排重,生成新的话单索引文件;将所述内存索引堆中的新话单索引文件保存到对应的磁盘。2根据权利要求1所述的方法,其特征在于,还包括在生成新的话单索引文件时,还生成排重索引增量文件;在系统出现故障无法将内存索引堆中的新话单索引文件保存到对应的磁盘时,将所述排重索引增量文件与对应的磁盘中的话单索引文件合并,生成新的话单索引文件。3根据权利要求2所述的方法,其特征在于,在生成所述排重索引增量文件后还包括将内存索引堆中的排重索引增量文件保存到临时目录下,生成事务控制日志,所述事务控制日志中记录有所述排重索引增量文件的临时目录和目标目录;将排重索引。

4、增量文件由临时目录移动到目标目录,删除事务控制日志。4根据权利要求3所述的方法,其特征在于,还包括如果在所述将排重索引增量文件保存到临时目录、再由临时目录移动到目标目录的步骤中系统出现故障,在系统初始化时,再次执行所述将排重索引增量文件保存到临时目录、再由临时目录移动到目标目录的步骤。5根据权利要求1所述的方法,其特征在于,包括按照时间和业务类型将排重索引内存划分为对应磁盘的多个内存索引堆。6根据权利要求1所述的方法,其特征在于,所述根据接收的话单文件及所述内存索引堆中对应的话单索引文件对所述话单文件进行排重的步骤包括从所述排重索引内存中查找对应的内存索引堆,当未查找到对应的内存索引堆时,从对。

5、应磁盘中的话单索引文件中加载;在所述对应的内存索引堆中查找所述话单对应的排重关键字,对每条话单进行排重。7根据权利要求6所述的方法,其特征在于,所述对每条话单进行排重的步骤具体包括在对应的内存索引堆中查找所述话单对应的排重关键字,如果找到,该条话单为重单,否则先对内存索引堆加锁,在该内存索引堆中增加该排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,然后对该内存索引堆解锁,并生成排重输出文件;所述排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件。8根据权利要求7所述的方法,其特征在于,所述将内存索引堆中的新话单索引文件保存到对应的磁盘的步骤具体包括在设置有修改标识的内。

6、存索引堆中判断内存索引堆的空间是否超过空间阈值;如果超过,将该内存索引堆中的新话单索引文件保存到磁盘中;所述空间阈值包括设置修改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量。9一种话单排重装置,其特征在于,包括排重索引内存,用于存储对应磁盘的多个以堆存放的话单索引文件,每个内存索引堆权利要求书CN102065192ACN102065202A2/3页3与对应磁盘中的话单索引文件对应;排重处理单元,用于根据接收的话单文件及内存索引堆中对应的话单索引文件,对所述话单文件进行排重,生成新的话单索引文件;索引保存单元,用于将内存索引堆中的新话单。

7、索引文件保存到对应的磁盘。10根据权利要求9所述的装置,其特征在于,所述排重处理单元包括排重模块,用于根据读取的话单的业务类型查找对应的内存索引堆,根据话单的排重关键字进行话单排重,将所述话单文件中的排重关键字加入到所述内存索引堆中,形成新的话单索引文件;事务控制模块,用于生成排重输出文件和事务控制日志,调用所述排重模块,将所述排重输出文件由临时目录移动到目标目录;合并模块,用于读取排重索引增量文件中的堆关键字和话单关键字,查找对应的话单索引文件是否存在,根据查找结果,追加话单关键字;所述排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件。11根据权利要求10所述的装置,其特征在。

8、于,所述排重模块包括获取子模块,用于获取话单文件中每条话单的堆关键字和排重关键字;索引堆查找子模块,用于根据所述堆关键字查找对应的内存索引堆,如果没有找到,则从磁盘的话单索引文件中加载;关键字查找子模块,用于在所述内存索引堆中查找话单文件中的所述排重关键字,如果找到,则判断该条话单为重单,否则通知加解锁子模块;加解锁子模块,用于对内存索引堆加锁、解锁;新索引生成子模块,用于在未找到话单文件中的所述排重关键字的内存索引堆中增加排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,并生成排重输出文件。12根据权利要求10所述的装置,其特征在于,所述事务控制模块包括输出保存子模块,用于将正常输。

9、出话单文件、重单输出文件、排重索引增量文件保存到临时目录下;日志生成子模块,用于生成事务控制日志,所述事务控制日志中记录有输入文件、正常输出话单文件、重单输出文件和排重索引增量文件的临时目录和目标目录;输出移动子模块,用于将输入文件、正常输出话单文件、重单输出文件和排重索引增量文件由临时目录移动到目标目录;日志删除子模块,用于删除事务控制日志。13根据权利要求10所述的装置,其特征在于,所述合并模块包括读取子模块,用于读取排重索引增量文件中的堆关键字和话单关键字;索引文件查找子模块,用于根据所述堆关键字查找对应的话单索引文件是否存在;追加子模块,用于如果话单索引文件存在,则追加所述话单关键字,。

10、否则,则建立话单索引文件,并追加话单关键字。14根据权利要求9所述的装置,其特征在于,所述索引保存单元包括堆识别模块,用于在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值;任务分配模块,用于根据所述堆识别模块的识别结果,将操作任务分配给磁盘保存模权利要求书CN102065192ACN102065202A3/3页4块和内存清空模块;磁盘保存模块,用于对内存索引堆上锁,以写方式打开临时物理索引文件,将该内存索引堆中的新话单索引文件写入所述临时物理索引文件,再将所述临时物理索引文件移动到磁盘中;内存清空模块,用于所述磁盘保存模块将所述临时物理索引文件移动完毕后,清空所述内存索引堆,。

11、释放内存索引堆的锁;所述空间阈值包括设置修改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量。15根据权利要求1013中任意一项所述的装置,其特征在于,还包括所述事务控制模块,还用于在初始化时,判断在索引增量文件目录下是否有排重索引增量文件,如果有,则调用所述合并模块将所述排重索引增量文件与话单索引文件合并;判断事务控制日志的内容是否执行完毕,若不完毕,则重新执行事务控制日志的内容。权利要求书CN102065192ACN102065202A1/11页5一种话单排重方法和装置技术领域0001本发明涉及通信领域中的业务支撑技术,具体地,涉及话。

12、单排重的方法及装置。背景技术0002排重是计费系统的一个重要环节,计费系统从网元采集话单后,为了保证用户话单的唯一性,必须进行排重处理,排除重复的话单。随着电信业务的日益复杂、运营商的用户数日益增多,计费系统每日要处理海量的话单,排重的性能尤为重要。0003现有的排重技术可以分为三种一种是传统的数据库排重方法,利用数据库的主键必须唯一的特性进行排重;一种是文件排重方法,利用文件系统的文件路径、文件名或文件记录必须唯一的特性进行排重;一种是内存排重方法,利用内存的排重关键字必须唯一的特性进行排重。相比而言,内存排重方法由于不需要进行慢速的IO和外部数据库系统的访问,具备快速数据传输的特点,因此效。

13、率较高。0004现有的内存排重原理是1将某一时间段的排重索引文件装入内存,将装入的当前话单记录和载入内存的排重索引进行比较;2如果排重关键字没有找到对应的时间段,则需要装载进此时间段的排重索引文件进入内存,再进行比较;3对应的时间段装入内存后,若在内存中命中排重关键字,表明当前的话单记录是重复的话单记录,直接写入重单文件,若没有命中,则说明是新的排重索引,更新内存;4将内存中的排重索引更新到磁盘中。0005申请号为2008101832739、公开日为2009年5月27日的中国发明专利申请公开了一种话单剔重方法和装置,该方法和装置在话单的内存排重过程中进行应用,综合了哈希表、平衡二叉树和MD5的。

14、技术,提高了话单内存排重的效率,节约了存储空间。但在另一方面,在话单排重时,如果在内存的排重索引中找不到对应的话单排重关键字,则需要在内存中增加新的排重索引,如果不及时将内存中的新排重索引提交到磁盘中,那么在程序异常、宕机、掉电时,新排重索引就可能丢失,而申请号为2008101832739、公开日为2009年5月27日的中国发明专利申请并没有提出上述如何将内存的排重索引快速的保存到磁盘中的技术解决方案。0006在实现本发明过程中,发明人发现现有技术中的将内存的排重索引快速的保存到磁盘中至少存在如下问题00071以话单为单位输出更新后的索引增量文件,会导致索引增量文件过多,将会产生大量的小而碎的。

15、文件,同时需要大量文件的打开、关闭操作,文件太碎降低了磁盘的访问效率;00082因为需要大量的IO读写操作,直接对索引增量文件进行合并,消耗的时间较长;00093对话单文件中的话单进行排重必须等待索引增量文件合并完毕后或排重索引保存到磁盘完毕后才可以进行下去,排重效率不高;00104由于运营商的话单种类众多,每种话单的数量级和时间跨度特征都不相同,说明书CN102065192ACN102065202A2/11页6例如国际漫游语音/短信话单数量较少,但时间跨度很大,有可能收到1个月前的话单;这样按照某一时间段加载的内存就会由于要参与的排重数据较多导致排重效率下降的问题。例如,某日国际漫游的语音话。

16、单有10条,而当日的国内语音话单有100万条,那么需要在1000010条话单中查找接收到的国际漫游的语音话单是否存在重单,不但消耗内存,而且查找效率低下,内存中的排重索引保存到磁盘中的时间也会明显加长。发明内容0011本发明的目的是针对现有技术中话单排重过程中话单索引文件保存到磁盘中存在的效率低下的缺陷,提出一种话单排重的方法及装置,以提高话单排重的整体效率。0012为实现上述目的,根据本发明的一个方面,提供了一种话单排重的方法。0013根据本发明实施例的话单排重的方法,包括将排重索引内存划分为对应磁盘的多个内存索引堆,每个内存索引堆与对应磁盘中的话单索引文件对应;根据接收的话单文件及内存索引。

17、堆中对应的话单索引文件,对话单文件进行排重,生成新的话单索引文件;将内存索引堆中的新话单索引文件保存到对应的磁盘。0014在上述技术方案中,话单排重方法还可以包括在生成新的话单索引文件时,还生成排重索引增量文件;在系统出现故障无法将内存索引堆中的新话单索引文件保存到对应的磁盘时,将排重索引增量文件与对应的磁盘中的话单索引文件合并,生成新的话单索引文件。0015在上述技术方案中,在生成排重索引增量文件后还可以包括将内存索引堆中的排重索引增量文件保存到临时目录下,生成事务控制日志,事务控制日志中记录有排重索引增量文件的临时目录和目标目录;将排重索引增量文件由临时目录移动到目标目录,删除事务控制日志。

18、。0016在上述技术方案中,话单排重方法还可以包括如果在将排重索引增量文件保存到临时目录、再由临时目录移动到目标目录的步骤中系统出现故障,在系统初始化时,再次执行将排重索引增量文件保存到临时目录、再由临时目录移动到目标目录的步骤。0017在上述技术方案中,话单排重方法还可以包括按照时间和业务类型将排重索引内存划分为对应磁盘的多个内存索引堆。0018在上述技术方案中,根据接收的话单文件及内存索引堆中对应的话单索引文件对话单文件进行排重的步骤可以包括从排重索引内存中查找对应的内存索引堆,当未查找到对应的内存索引堆时,从对应磁盘中的话单索引文件中加载;在对应的内存索引堆中查找话单对应的排重关键字,对。

19、每条话单进行排重。0019在上述技术方案中,对每条话单进行排重的步骤具体可以包括在对应的内存索引堆中查找话单对应的排重关键字,如果找到,该条话单为重单,否则先对内存索引堆加锁,在该内存索引堆中增加该排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,然后对该内存索引堆解锁,并生成排重输出文件;排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件。0020在上述技术方案中,将内存索引堆中的新话单索引文件保存到对应的磁盘的步骤具体可以包括在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值;如果超过,将该内存索引堆中的新话单索引文件保存到磁盘中;空间阈值包括设置修。

20、说明书CN102065192ACN102065202A3/11页7改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量。0021本发明的话单排重方法,根据时间和业务类型将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了查找效率,将新的话单索引文件保存到磁盘中,减少了对磁盘中话单索引文件的IO读取次数,提高了工作效率。0022为实现上述目的,根据本发明的另一个方面,提供了一种话单排重装置。0023根据本发明实施例的话单排重装置,包括排重索引内存,用。

21、于存储对应磁盘的多个以堆存放的话单索引文件,每个内存索引堆与对应磁盘中的话单索引文件对应;排重处理单元,用于根据接收的话单文件及内存索引堆中对应的话单索引文件,对话单文件进行排重,生成新的话单索引文件;索引保存单元,用于将内存索引堆中的新话单索引文件保存到对应的磁盘。0024在上述技术方案中,排重处理单元可以包括排重模块,用于根据读取的话单的业务类型查找对应的内存索引堆,根据话单的排重关键字进行话单排重,将话单文件中的排重关键字加入到内存索引堆中,形成新的话单索引文件;事务控制模块,用于生成排重输出文件和事务控制日志,调用排重模块,将排重输出文件由临时目录移动到目标目录;合并模块,用于读取排重。

22、索引增量文件中的堆关键字和话单关键字,查找对应的话单索引文件是否存在,根据查找结果,追加话单关键字;排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件。0025在上述技术方案中,排重模块可以包括获取子模块,用于获取话单文件中每条话单的堆关键字和排重关键字;索引堆查找子模块,用于根据堆关键字查找对应的内存索引堆,如果没有找到,则从磁盘的话单索引文件中加载;关键字查找子模块,用于在内存索引堆中查找话单文件中的排重关键字,如果找到,则判断该条话单为重单,否则通知加解锁子模块;加解锁子模块,用于对内存索引堆加锁、解锁;新索引生成子模块,用于在未找到话单文件中的排重关键字的内存索引堆中增加。

23、排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,并生成排重输出文件。0026在上述技术方案中,事务控制模块可以包括输出保存子模块,用于将正常输出话单文件、重单输出文件、排重索引增量文件保存到临时目录下;日志生成子模块,用于生成事务控制日志,事务控制日志中记录有输入文件、正常输出话单文件、重单输出文件和排重索引增量文件的临时目录和目标目录;输出移动子模块,用于将输入文件、正常输出话单文件、重单输出文件和排重索引增量文件由临时目录移动到目标目录;日志删除子模块,用于删除事务控制日志。0027在上述技术方案中,合并模块可以包括读取子模块,用于读取排重索引增量文件中的堆关键字和话单关键字;。

24、索引文件查找子模块,用于根据堆关键字查找对应的话单索引文件是否存在;追加子模块,用于如果话单索引文件存在,则追加话单关键字,否则,则建立话单索引文件,并追加话单关键字。0028在上述技术方案中,索引保存单元可以包括堆识别模块,用于在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值;任务分配模块,用于根据堆识别模块的识别结果,将操作任务分配给磁盘保存模块和内存清空模块;磁盘保存模块,用于说明书CN102065192ACN102065202A4/11页8对内存索引堆上锁,以写方式打开临时物理索引文件,将该内存索引堆中的新话单索引文件写入临时物理索引文件,再将临时物理索引文件移动到磁。

25、盘中;内存清空模块,用于磁盘保存模块将临时物理索引文件移动完毕后,清空内存索引堆,释放内存索引堆的锁;空间阈值包括设置修改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量。0029在上述技术方案中,话单排重装置还可以包括事务控制模块,还用于在初始化时,判断在索引增量文件目录下是否有排重索引增量文件,如果有,则调用合并模块将排重索引增量文件与话单索引文件合并;判断事务控制日志的内容是否执行完毕,若不完毕,则重新执行事务控制日志的内容。0030本发明的话单排重装置,根据时间和业务类型将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索。

26、引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了查找效率,克服了现有的话单内存排重装置在话单索引内存保存到磁盘的工作过程中存在的效率低下如文件太碎、保存时间较长、影响排重过程、内存话单索引文件加载过多的缺陷,既保证了内存排重的安全性,又降低了内存话单索引文件加载的数量,减少了读取磁盘IO的次数,提高了工作效率。0031本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。0032下面通过附图和实施例,对本发明。

27、的技术方案做进一步的详细描述。附图说明0033附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中0034图1为根据本发明话单排重方法实施例一的流程图;0035图2为根据本发明话单排重方法实施例二的流程图;0036图3为根据图2实施例在步骤S210与S212之间的方法流程图;0037图4为根据本发明话单排重方法实施例三的流程图;0038图5为根据本发明话单排重方法实施例四的流程图;0039图6为根据本发明话单排重装置实施例一的结构示意图;0040图7为根据本发明话单排重装置实施例二的结构示意图;0041图8为根据本发明话。

28、单排重装置实施例三的结构示意图;0042图9为图8实施例中的合并模块的结构示意图;0043图10为图8实施例中的事物控制模块的结构示意图;0044图11为图8实施例中的排重模块的结构示意图。具体实施方式0045以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。0046方法实施例说明书CN102065192ACN102065202A5/11页90047根据本发明实施例,提供了一种话单排重方法,图1为根据本发明话单排重方法实施例一的流程图,如图1所示,本实施例包括0048步骤S102将排重索引内存进行分堆处理,每个内存索引堆与磁盘。

29、中的话单索引文件一一对应;0049在电信运营商的话单排重的技术中,由于运营商的业务种类繁多,各类业务的话单数据、时间跨度不同,例如国际漫游语音话单每日的数量较少,且时间跨度较大,而国内语音话单每日数量较多,时间跨度较小,而且各类业务话单之间不会存在重复话单的现象。0050因此,在本发明的实施例中,将存储话单索引文件的排重索引内存按照时间和业务类型进行分堆处理,每个内存索引堆与磁盘中存储的话单索引文件进行一一对应,每个内存索引堆具有两个属性堆关键字和堆修改标识。0051其中,堆关键字可以取精确到的时间单位、业务类型,例如,语音业务分两个堆,一个是国际漫游语音话单,精确到的时间单位为天、业务类型为。

30、A1,一个是国内语音话单,精确到的时间单位为分钟,业务类型为A2,短信业务分两个堆,一个是国际短信话单,精确到的时间单位为天,业务类型为B1,一个是国内短信话单,精确到的时间单位为分钟,业务类型为B2。0052其中,在对话单文件的查重过程中,如果内存索引堆中增加新话单,则形成新的话单索引文件,并在该内存索引堆中设置修改标识,修改标识用于在内存索引堆中判断内存索引堆的空间是否超过空间阈值,以判断将该内存索引堆中的新话单索引文件是否保存到磁盘中,具体参见图2实施例中的步骤S212至S214和步骤S436至S442;0053步骤S104读取话单文件,对话单文件进行排重,生成新的话单索引文件;0054。

31、步骤S106将内存索引堆中的新话单索引文件保存到磁盘中。0055本实施例的话单排重方法,根据时间和业务类型将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了查找效率,将新的话单索引文件保存到磁盘中,减少了对磁盘中话单索引文件的IO读取次数,提高了工作效率。0056图2为根据本发明话单排重方法实施例二的流程图,如图2所示,本实施例包括0057步骤S202将排重索引内存进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应;0058步骤S204每读取一个话单文件,先获取话单文件中每条话单的堆关键字和。

32、排重关键字;0059步骤S206根据堆关键字在排重索引内存中查找对应的内存索引堆,如果没有找到对应的内存索引堆,则从磁盘的话单索引文件中加载;0060步骤S208在内存索引堆中查找排重关键字;0061具体地,在步骤S206中的查找排重关键字的过程中,可以采用背景技术中提到的申请号为2008101832739、公开日为2009年5月27日的中国发明专利申请中提到的排重方法进行查重;0062步骤S210如果找到,证明该条话单为重单,否则先对内存索引堆加锁,在该内存索引堆中增加排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,然后对该内存索引堆解锁,并生成排重输出文件;说明书CN10206。

33、5192ACN102065202A6/11页100063排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件;0064如图3所示,在步骤S210之后还具体包括0065步骤S2102将正常输出话单文件、重单输出文件、排重索引增量文件保存到临时目录下;0066步骤S2104生成事务控制日志,记录输入文件、正常输出话单文件、重单输出文件和排重索引增量文件的临时目录和目标目录;0067步骤S2106将输入文件、正常输出话单文件、重单输出文件和排重索引增量文件由临时目录移动到目标目录;0068步骤S2108删除事务控制日志;0069步骤S212在设置有修改标识的内存索引堆中判断内存索引堆的空。

34、间是否超过空间阈值;0070空间阈值包括设置修改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量;0071步骤S214如果超过,将该内存索引堆中的新话单索引文件保存到磁盘中。0072本实施例的话单排重方法,将排重索引内存进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在加载磁盘中的话单索引文件时,只需将与该内存索引堆对应的话单索引文件加载即可,减少了话单索引文件的加载数量,提高了话单的排重效率;同时,本实施例的话单排重方法,将排重输出文件先保存在临时目录下,生成事务控制日志,再将排重输出文件由临时目录移动到目标目录,如果在上述。

35、过程中话单排重装置发生故障如程序异常、宕机、掉电无法工作,由于事务控制日志的存在,在装置重新启动时,会根据事物控制日志的内容,将排重输出文件重新由临时目录移动到目标目录,保证了排重输出文件输出的完整性和可靠性。0073图4为根据本发明话单排重方法实施例三的流程图,如图4所示,本实施例包括0074步骤S302在话单排重装置初始化时,首先判断在索引增量文件目录下是否有排重索引增量文件;0075步骤S304如果有,则将排重索引增量文件与话单索引文件合并,合并步骤具体包括步骤S306至S312;0076步骤S306读取排重索引增量文件中的堆关键字和话单关键字;0077步骤S308根据步骤S306中的堆。

36、关键字查找对应的话单索引文件是否存在;0078步骤S310对应的话单索引文件如果存在,则追加步骤S306中的话单关键字,否则,则建立话单索引文件,并追加步骤S306中的话单关键字;0079步骤S312删除排重索引增量文件;0080步骤S314判断事务控制日志的内容是否执行完毕;0081步骤S316若事务控制日志的内容没有执行完毕,则重新执行图3中步骤S2102至步骤S2108的内容。0082本实施例的话单排重方法,在方法实施例一、实施例二的基础上,在话单排重装置初始化时,判断如果在索引增量文件目录下有排重索引增量文件,则证明上一将内存索引堆中的新话单索引文件保存到磁盘的步骤未完整完成,磁盘中的。

37、话单索引文件为未更新的原文件,此时将排重索引增量文件与磁盘内的话单索引文件合并,即通过内存索引堆中的说明书CN102065192ACN102065202A7/11页11新话单索引文件中的新增的话单索引部分与磁盘内的原话单索引文件合并,保证了磁盘中的话单索引文件为最新的话单索引文件,保证了话单排重的准确性和有效性。0083图5为根据本发明话单排重方法实施例四的流程图,如图5所示,本实施例包括0084步骤S402在话单排重装置初始化时,首先判断在索引增量文件目录下是否有排重索引增量文件;0085步骤S404如果有,则将排重索引增量文件与话单索引文件合并,合并过程具体包括步骤S406至步骤S412;。

38、0086步骤S406读取排重索引增量文件中的堆关键字和话单关键字;0087步骤S408根据步骤S406中的堆关键字查找对应的话单索引文件是否存在;0088步骤S410对应的话单索引文件如果存在,则追加步骤S406中的话单关键字,否则,则建立话单索引文件,并追加步骤S406中的话单关键字;0089步骤S412删除排重索引增量文件;0090步骤S414判断事务控制日志的内容是否执行完毕;0091步骤S416若事务控制日志的内容没有执行完毕,则重新执行步骤S428至步骤S434中的内容;0092步骤S418将排重索引内存进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应;0093步骤S420。

39、每读取一个话单文件,先获取话单文件中每条话单的堆关键字和排重关键字;0094步骤S422根据堆关键字在对应的内存索引堆中查找对应的内存索引堆,如果没有找到对应的内存索引堆,则从磁盘的话单索引文件中加载;0095步骤S424在内存索引堆中查找排重关键字;0096步骤S426如果找到,证明该条话单为重单,否则先对内存索引堆加锁,在该内存索引堆中增加排重关键字,形成新的话单索引文件,设置内存索引堆的修改标识,然后对该内存索引堆解锁,并生成排重输出文件;0097排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件;0098步骤S428将正常输出话单文件、重单输出文件、排重索引增量文件保存到。

40、临时目录下;0099步骤S430生成事务控制日志,记录输入文件、正常输出话单文件、重单输出文件和排重索引增量文件的临时目录和目标目录;0100步骤S432将输入文件、正常输出话单文件、重单输出文件和排重索引增量文件由临时目录移动到目标目录;0101步骤S434删除事务控制日志;0102步骤S436在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值;0103步骤S438如果超过,对内存索引堆上锁,以写方式打开临时物理索引文件;0104步骤S440将该内存索引堆中的新话单索引文件写入临时物理索引文件;0105步骤S442将临时物理索引文件移动到磁盘中,替换原话单索引文件;0106步。

41、骤S444移动完毕后,清空内存索引堆,保障内存索引堆占用的空间不会过大;说明书CN102065192ACN102065202A8/11页120107步骤S446释放内存索引堆的锁,并删除排重索引增量文件。0108需要说明的是,在上述步骤S436至S446中,如果话单排重装置出现故障无法将内存索引堆中的新话单索引文件保存到对应的磁盘时,将不会进行步骤S446中删除排重索引增量文件的步骤,在话单排重装置初始化时,判断出在索引增量文件目录下有排重索引增量文件,将排重索引增量文件与话单索引文件合并,即执行S402至S412的步骤;0109需要说明的是,在上述步骤S428至S432中,如果话单排重装置出。

42、现故障无法将输入文件、正常输出话单文件、重单输出文件和排重索引增量文件由临时目录移动到目标目录时,在话单排重装置初始化时,步骤S414至S416将判断事务控制日志的内容没有执行完毕,则重新执行步骤S428至步骤S434中的内容。0110需要说明的是,步骤S436至S446中的内存索引堆中的新话单索引文件保存到对应的磁盘的步骤与步骤S420至S426中的话单排重的步骤可以并行工作,互不干扰。0111本实施例的话单排重方法,将排重索引内存进行分堆处理,在话单排重的同时,将内存索引堆中的新话单索引文件中的新增的话单索引部分即排重索引增量文件定期通过临时目录移动到目标目录,并生成事务控制日志,在话单排。

43、重装置正常运转时,如果内存索引堆的空间超过空间阈值,将排重索引内存中的新话单索引文件保存到磁盘中,替换原话单索引文件,提高了话单排重的工作效率;如果话单排重装置发生故障,则将排重索引增量文件与磁盘中的原话单索引文件合并,保证了话单排重的有效性和准确性;由于事务控制日志的存在,即使在排重索引增量文件输出的过程中,话单排重装置出现故障,也会在话单排重装置初始化时根据事务控制日志的内容重新执行,保证了排重索引增量文件输出的可靠性。0112装置实施例0113根据本发明实施例,提供了一种话单排重装置。图6为根据本发明话单排重装置实施例一的结构示意图,如图6所示,本实施例包括0114排重索引内存51,用于。

44、存储对应磁盘的多个以堆存放的话单索引文件,每个内存索引堆与对应磁盘中的话单索引文件对应;0115排重处理单元52,用于根据接收的话单文件及内存索引堆中对应的话单索引文件,对话单文件进行排重,生成新的话单索引文件;0116索引保存单元53,用于将内存索引堆中的新话单索引文件保存到对应的磁盘。0117在本发明的实施例中,将存储话单索引文件的排重索引内存按照时间和业务类型进行分堆处理,每个内存索引堆与磁盘中存储的话单索引文件进行一一对应,每个内存索引堆具有两个属性堆关键字和堆修改标识。0118其中,堆关键字可以取精确到的时间单位、业务类型。0119其中,在对话单文件的查重过程中,如果内存索引堆中增加。

45、新话单,则形成新的话单索引文件,并在该内存索引堆中设置修改标识。0120本实施例的话单排重装置,根据时间和业务类型将排重索引内存区进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在话单排重过程中,根据话单文件中的堆关键字查找对应的内存索引堆,提高了查找效率,克服了现有的话单内存排重装置在话单索引内存保存到磁盘的工作过程中存在的效率低下如文件太碎、保存时间较长、影响排重过程、内存话单索引文件加载过多的缺陷,既保证了内存排重的安全性,又降低说明书CN102065192ACN102065202A9/11页13了内存话单索引文件加载的数量,减少了读取磁盘IO的次数,提高了工作效率。0121。

46、图7为根据本发明话单排重装置实施例二的结构示意图,如图7所示,本实施例包括排重索引内存61、排重处理单元62和索引保存单元63,其功能与图6实施例中的对应单元功能一致,在此不再赘述。0122排重处理单元62包括0123合并模块621,用于读取排重索引增量文件中的堆关键字和话单关键字,查找对应的话单索引文件是否存在,根据查找结果,追加话单关键字;0124事务控制模块622,用于生成排重输出文件和事务控制日志,调用排重模块623,将排重输出文件由临时目录移动到目标目录;0125排重模块623,用于根据读取的话单的业务类型查找对应的内存索引堆,根据话单的排重关键字进行话单排重,将话单文件中查找到的排。

47、重关键字加入到内存索引堆中,形成新的话单索引文件;0126排重输出文件包括正常输出话单文件、重单输出文件、排重索引增量文件。0127索引保存单元63包括0128堆识别模块631,用于在设置有修改标识的内存索引堆中判断内存索引堆的空间是否超过空间阈值,将超过空间阈值的内存索引堆的堆关键字列表和操作类型传递给任务分配模块632;0129其中,空间阈值包括设置修改标识的内存索引堆的个数达到一定数量,排重索引内存的空间大小超过一定阈值,或者内存索引堆的个数达到一定数量;0130任务分配模块632,用于根据堆识别模块631的识别结果,将操作任务分配给磁盘保存模块633和内存清空模块634,并在磁盘保存模。

48、块633和内存清空模块634完成相应的操作任务后接收返回的任务操作结果,其操作任务的分配方法包括顺序分配、随机分配、按函数分配;并在所有的操作任务完成后,通知增量删除模块635删除对应的排重索引增量文件;0131磁盘保存模块633,用于对内存索引堆上锁,以写方式打开临时物理索引文件,将该内存索引堆中的新话单索引文件写入临时物理索引文件,再将临时物理索引文件移动到磁盘中;0132其中,由于磁盘保存模块633将内存索引堆上锁,因此,在磁盘保存模块633将内存索引堆中的新话单索引文件移动到磁盘的过程可以与排重模块623的排重过程并行,提高了排重效率;0133内存清空模块634,用于磁盘保存模块633。

49、将临时物理索引文件移动完毕后,清空内存索引堆,释放内存索引堆的锁;0134增量删除模块635,用于删除排重索引增量文件。0135本实施例的话单排重装置,将排重索引内存进行分堆处理,每个内存索引堆与磁盘中的话单索引文件一一对应,在加载磁盘中的话单索引文件时,只需将与该内存索引堆对应的话单索引文件加载即可,减少了话单索引文件的加载数量,提高了话单的排重效率;同时,本实施例的话单排重装置,将排重输出文件先保存在临时目录下,生成事务控制日志,再将排重输出文件由临时目录移动到目标目录,如果在上述过程中话单排重装置发生故障无法工作,由于事务控制日志的存在,在话单排重装置重新启动时,会根据事物控制日说明书C。

50、N102065192ACN102065202A10/11页14志的内容,将排重输出文件重新由临时目录移动到目标目录,保证了排重输出文件输出的完整性和可靠性。0136图8为根据本发明话单排重装置实施例三的结构示意图,如图8所示,本实施例包括排重索引内存71、排重处理单元72和索引保存单元73,其中,排重处理单元72包括合并模块721、事务控制模块722、排重模块723,索引保存单元73包括堆识别模块731、任务分配模块732、磁盘保存模块733、内存清空模块734、增量删除模块735,其功能分别与图6、图7实施例的对应单元、模块一致,在此不再赘述。0137如图9所示,合并模块721包括0138读。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1