基于索引和散列的电信计费去重方法及设备的制作方法

文档序号:7659001阅读:116来源:国知局
专利名称:基于索引和散列的电信计费去重方法及设备的制作方法
技术领域
本发明属于电信计费领域,尤其涉及在电信计费支撑系统中对重 复话单的剔除方法。
背景技术
去重是指在电信行业的计费支撑系统中,从某个业务、某个指定 范围内的话单中找出具有相同计费特征的重复话单,并剔除重复话单 以保留单一话单的过程。简单地说,保证计费话单的唯一性过程就是去重。
由于程控交换技术的局限性、计费点选择的差异性、业务种类的 多样性等原因,计费支撑系统釆集的原始话单中有重复话单是不可避 免的。如果不把重复话单剔除,将导致对用户的重复收费、对业务收 入的重复统计等严重问题,因此,在计费支撑系统中,必须及时把重 复话单剔除。
话单去重的基本思路就是选定一定范围内的所有话单中的具有 唯一性标识作用的发话时间、主叫号码、被叫号码、话单类型等字段 作为计费去重元素,在处理新话单时把新话单的计费去重元素与已记 录的话单进行匹配,若相同则为重单。需要指出的是,计费去重元素 并不限于这里所明确指出的。
在实际应用中,从海量的话单中检测并剔除重复话单需要耗费大
量的系统资源,包括CPU、内存、硬盘空间等,这经常成为系统性能
的瓶颈。因此,重复话单剔除是计费支撑系统中的关键技术,也是其 中的难点。
当前在电信计费系统中的去重技术主要有以下三种
1.基于排序的文本去重把要去重的话单集中起来,按计费去
重元素排序,然后通过相邻话单之间的文本比较把重复话单剔除出来。 这种方法的缺点是进行去重之前要把话单静态集中起来,所以不
支持实时的话单处理方式;当业务量增大时,处理效率迅速下降,在 大业务量的计费系统中使用此方法去重是不实际的。
2. 利用数据库的唯一键索引去重把详单入库,在详单库的计 费去重元素上建立唯一键索引,通过DBMS (数据库管理系统)的唯 一性约束来保证话单的唯一性,实现^单去重。
这种方法的不足之处是去重效率严重依赖于数据库的性能,话单 入库时数据库对唯一键索引进行更新的开销很大,当已入库话单数据
量达到一定程度后,话单入库效率会出现指数式的下降,从而拖慢整 个计费系统的处理效率并使系统性能变得不稳定,不能满足计费系统 的要求;在亿级的大业务量下,详单入库意味着数据库空间占用极大 量的磁盘存储,对数据库的管理、维护都很困难。
3. 滑动时间窗去重方法此方法只适用于计费去重元素中包含 有发话时间的业务,使用此方法的前提是计费系统是按照发话时间递 增的顺序采集计费话单的。在系统内将维护一个时间窗,该时间窗内 记录了在一段发话时间内的话单计费去重元素信息。当处理话单时,
首先检查话单的发话时间是否落在时间窗范围之内,如果是,就在时 间窗内查找是否存在有相同计费信息的话单,如有就表示该话单为重 单,如没有,就将该话单的计费信息更新入时间窗,同时将整个时间 窗向后移动,移出时间窗范围的话单的计费信息被自动放弃。
该方法处理效率较高,但不足之处也很明显它对计费去重元素 中不包含发话时间的业务不适用,并且对发话时间在时间窗之前的话 单,由于计费信息已被丢弃,所以无法去重,需辅以其他去重手段, 不是一种全面的解决方案。
电信计费支撑系统是一种较特殊计算机系统,其要处理的数据量 巨大,处理流程复杂,对系统性能要求很高,为满足客户要求和市场 竟争需要,计费系统普遍朝着实时化方向发展,对处理时限的要求更 高。而目前在计费系统中普遍使用的三种去重方法,存在不支持实时
处理、效率低下、性能不稳、解决方案不全面等各种问题。因此,本 发明的目的是解决目前计费系统去重方法中存在的问题,为去重提供 高效、通用的方法。

发明内容
本发明要解决的技术问题在于,针对现有技术缺陷,设计高效、 通用的重复话单查找、识别方法和对已处理话单的计费信息的记录方 法。
为实现上述目的,本发明提供一种基于索引数组和链表的键值文
件组织方式"索引一链表,,方式; 一种基于"索引一链表"方式键值文 件的话单去重方法和一种基于"索引一链表"方式键值文件的键值消除 方法。


以下参考附图来详细介绍本发明,其中
图1示出了根据本发明的"索引-链表"方式键值文件的结构示意
图2示出了根据本发明的基于"索引-链表"方式键值文件的话单 去重方法的流程图3示出了根据本发明的基于"索引-链表,,方式键值文件的键值 消除方法的流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图参 考优选实施例对本发明作进一步的详细描述。
首先参考图l介绍根据本发明的基于索引数组和链表的键值文件 组织方式,即"索引-链表"方式。在图l中示出了根据本发明的"索引 一链表"方式键值文件的结构示意图。如图l所示, 一个键值文件包括 索引区和链表区两部分,索引区是一个固定长度的数组,数组的每个 元素是一个指向一单向链表的头指针。
在根据本发明的方法中,键值文件中的索引区和链表区的功能如
下设索引区数组的长度为N,则将计费话单中一个或多个计费去重 元素通过一定的运算映射为一个取值在0到N-l之间的整数值,该整 数值被称为索引值,该索引值就是索引区中数组的下标;把计费话单 中的计费去重元素通过散列函数计算得到一个整数值,该整数值被称 为去重键值,链表区中各链表中的元素所存放的就是索引值相同的话 单的去重键值,每个链表元素存放一个去重键值。
以下参考图2详细介绍根据本发明的基于"索引-链表"方式键值 文件的话单去重方法。在介绍根据本发明的基于"索引-链表,,方式鍵值 文件的话单去重方法之前,先定义三个参数
参数A:去重键值文件的归类方式。选择计费去重元素中粒度较 大的分量归类出键值文件,例如可按发话时间进行归类,每个小时一 个键值文件,也可用主叫号码的前四位进行归类;
参数B:索引值的计算函数。设定索引数组长度为N,选择一到 两个计费去重元素以简单的运算获得索引值;
参数C:去重键值的计算函数,使用一种散列方法把计费去重元 素转换为一个整数值。例如可使用通用的散列函数,包括CRC循环 冗余校验、MD5等。
图2示出了根据本发明的基于"索引一链表"方式键值文件的话单 去重方法的流程图。如图2所示,根据本发明的基于"索引一链表"方 式键值文件的话单去重方法包括以下步骤
100按照去重键值文件的归类方式(参数A),判定话单所归属 的鍵值文件;
101根据索引值的计算函数(参数B)计算话单的索引值,并根 据去重键值的计算函数(参数C)计算话单的去重鍵值;
102判断键值文件是否在内存中,若已在内存中,则前进到步骤 103;相反,若不在内存中,则前进到步骤105;
103定位到相应的去重鍵值文件,按照索引值定位到链表头指针;
104在链表中查找去重键值,若可找到相同的键值,则判定该话 单是重单,方法结束;若找不到,则判定该话单不是重单,并把去重 键值链入链表末端,方法结束;
105判断磁盘文件系统中是否存在该键值文件,若存在,则前进 到步骤106;反之,若不存在,则前进到步骤109;
106判断内存可用区域对于该键值文件是否足够,若不足,则前 进到步骤107;若足够,则前进到步骤108;
107按照"最近最少使用"原则把内存中符合对换条件的键值文件 对换到磁盘文件系统,以释放足够的内存区域;
108把话单对应的键值文件调入到内存空闲区域中,然后接步骤
103;
109判断内存可用区域是否足够,若不足,则前进到步骤1010; 若足够,则前进到步骤1011;
1010 按照"最近最少使用,,原则把内存中符合对换条件的键值 文件对换到磁盘文件系统,以释放足够的内存区域;
1011 初始化一个内存空闲区域;
1012在已初始化的内存区域中,按照索引值定位到链表头指 针,将鍵值插入到该链表中,并判定该话单不是重单,方法结束。
另一方面,在电信计费系统中,经常会因各种原因,需要对一批 话单进行"负操作,,,即消除这批话单在计费系统中的所有处理结果, 使得系统回复到未处理过这批话单的状态,这被称为回退。回退对应 到去重处理,就是要在键值文件中清除话单的键值。以下参考图3介 绍根据本发明的基于"索引一链表"方式鍵值文件的键值消除方法。
图3示出了根据本发明的基于"索引一链表"方式键值文件的键值 消除方法的流程图。如图3所示,根据本发明的基于"索引一链表"方 式键值文件的键值消除方法包括以下步骤
200按照去重键值文件的归类方式(参数A),判定话单所归属 的键值文件;
201根据索引值的计算函数(参数B)计算索引值,并根据去重
键值的计算函数(参数C)计算去重键值;
202判断键值文件是否在内存中,若已在内存中,则前进到步骤 203;若不在内存中,则接步骤205;
203将话单定位到相应的去重键值文件,并按照索引值定位到链 表头指针;
204在链表中查找去重键值,若可找到相同的键值,则把查找到 的含有相同去重键值的链表节点清除,方法结束;若找不到,则判定 该话单的键值未生成,方法结束;
205判断磁盘文件系统中是否存在该键值文件,若存在,则接步 骤206;若不存在,则判定该话单的键值未生成,方法结束;
206判断内存可用区域对于该鍵值文件是否足够,若不足,则接 步骤207;若足够,则接步骤208;
207按照"最近最少使用"原则把内存中符合对换条件的键值文件 对换到磁盘文件系统,以释放足够的内存区域;
208把话单对应的键值文件调入到内存空闲区域中,然后前进到 步骤203。
以上参考附图详细介绍了根据本发明的基于"索引一 链表"方式 键值文件的话单去重方法和键值消除方法。根据上述技术方案可知, 本发明通过将散列计算、索引查找和链表查找相结合,极大地提高了 计费去重处理的效率。并且只要键值文件有保存,就可对任意话单进 行去重,而不受方法的限制。而且,本发明的方法可支持实时处理的 方式,是一个通用而全面的计费话单去重方法。
与现有技术中的话单去重方法相比,根据本发明的方法具有以下 优点(为便于进行算法复杂度的比较,在下面的论述中设话单总量为 M):
1.现有技术中基于排序的文本去重方法的算法复杂度平均情况 是0(Mlog2M),即算法的复杂度与Mlog2M成线性关系,而且其不支 持实时处理.而根据本发明的方法,计算去重键值和索引值的算法复 杂度都是O(l),,即算法复杂度与M无关,而是常量,并且如果键
值文件的数量是K,索引数组的最大值为N,则在链表查找上的算法 复杂度平均情况是0(M/(NK))。通常,N取值在105 106之间,所以 通过比较可以看出,根据本发明的方法的复杂度大为降低,而且根据 本发明的方法支持实时处理;
2. 现有技术中利用数据库的唯一键索引去重方法的算法复杂度 与DBMS的设计有关,但无论采用哪种DBMS,在海量数据的情况下 对唯一键索引树的重排始终是开销很大的工作,而且这种复杂度是由 DBMS决定的,计费系统的设计者和用户难以采取有效的措施干预和 改进;另外,海量数据库中数据的维护和清理是较为困难的工作。而 根据本发明的方法为使用者提供了很大的灵活性去重键值文件的归 类方式、索引值的计算函数、去重鍵值的计算函数都是算法的参数, 使用者可根据业务特点、主机内存容量、I/O性能等,通过对这些参 数的设置,来控制算法的复杂度和对1/0的要求。而且,在根据本发 明的方法中,去重键值以有规律的文件形式存放,维护容易;
3. 在现有技术中的滑动时间窗去重方法中,对于发话时间在时 间窗之前的话单,由于计费信息已被丢弃,所以无法去重,而需辅以 其他去重手段;另外,对于业务的计费去重元素中不包含发话时间的 情况,这种算法不适用,因此其不是一种全面的解决方案。而根据本 发明的方法对所适用的业务没有限制,而且只要键值文件有保存,就 可对任意话单进行去重。
根据本发明的基于"索引一链表"方式键值文件的话单去重方法 可应用于各种电信业务计费支撑系统。以下介绍根据本发明的方法的 三个具体应用的实施例。
实施例1: 200卡业务计费系统
该业务计费是一种普通的通话业务计费。电信业务实际通话话务 的特征是基本上按发话时间均匀分布,而发话时间也是该业务的计费 去重元素之一,所以选定发话时间作为计算索引值的依据。同时,在 实现中,为了增加索引值的散列程度,并控制去重键值文件的大小, 考虑到一般电话号码的最后两位出现几率是均衡的,所以追加被叫号
码的最后两位作为计算索引值的依据,可以设置具体参数如下
参数A(去重键值文件的归类方式)按发话时间归类,每小时 一个键值文件;
参数B (索引值的计算函数)索引数组长度N-3.6X105,计算 公式为((发话时间分钟数X 60 ) +发话时间秒数)X 100 +被叫 号码最后两位;
参数C (去重键值的计算函数)对计费去重元素"主叫号码"、 "被叫号码"、"卡号"的字符串组合进行CRC循环冗余计算。 实施例2:预付费业务计费系统
预付费业务的特点是包括通话、充值、扣费等各种话单,其中月 租扣缴在每月同一时刻进行,此类话单的发话时间就是扣费时间,因 此会出现大量发话时间相同的话单。使用根据本发明的方法时,如果 只用发话时间计算索引值,就可能出现大量话单的索引值相同,需进 行链表的顺序比较,严重影响处理效率。因此,本方法在该计费系统 的实施中,可以使用发话时间和付费号码相结合来计算索引值,从而 增加散列程度,获得较高的处理效率,可以设置具体参数如下
参数A(去重键值文件的归类方式)按发话时间归类,每小时 一个键值文件;
参数B (索引值的计算函数)索引数组长度N-106,截取付费 号码去除区号后的第2位到第7位作为索引值;
参数C (去重键值的计算函数)对计费去重元素"主叫号码"、 "被叫号码"、"付费号码"、"发话时间"、"话单类别"的字符串组合进 行MD5散列计算。
实施例3: 11808长途电话计费系统
在11808长途电话计费系统中,要求为了便于分本地网处理话单, 去重键值文件必须分本地网存放,为此,根据本发明的方法在该系统 的实施中,对去重键值文件的归类加入本地网的因素,这样就导致去 重键值文件数量增多,键值文件调度频率增加。为了避免因此影响处 理效率,在实施中把索引数组的长度设定为较少的值,即控制去重键
值文件的大小,使系统I/0量减少,可以设置具体参数如下
参数A (去重键值文件的归类方式)按"发话本地网代码+发话 时间"归类,每个本地网每小时一个键值文件;
参数B (索引值的计算函数)索引数组长度N=3600,计算公 式(发话时间分钟数X60 ) +发话时间秒数;
参数C (去重键值的计算函数)对计费去重元素"主叫号码"、 "被叫号码"、的字符串组合进行MD5散列计算。
虽然以上结合优选实施例详细介绍了本发明,但是本发明并不局 限于上述实施例的具体介绍。本发明可进一步更新,或者对本发明所 公开的特征加以新的组合,包括任何相关的权利要求和附图,也可对 本发明所公开的任何方法或者过程进行更新或者进行新组合。
权利要求
1.一种产生话单键值文件的方法,包括生成长度为N的数组,其中所述数组的每个元素存储指向一个单向链表的头指针;根据话单的一个或多个计费去重元素确定所述话单的索引值,其中所述索引值是在0到N-1之间取值的整数;根据所述话单的计费去重元素确定所述话单的键值;将所述话单的键值存储到所述数组中与所述话单的索引值相对应的元素所指向的链表中。
2. 根据权利要求1的产生话单键值文件的方法,其中通过对所 述话单的计费去重元素的散列函数运算确定所述话单的键值。
3. 根据权利要求1或2的产生话单鍵值文件的方法,其中所述 计费去重元素包括发话时间、主叫号码、被叫号码、话单类型。
4. 一种话单去重方法,包括 键值文件确定步骤,确定话单所归属的键值文件; 索引值和键值确定步骤,根据所述话单的计费去重元素确定所述话单的索引值和键值;定位步骤,基于所述话单的索引值定位到所确定的键值文件的一 个链表头指针;判断步骤,在所述头指针所指向的链表中查找所述话单的键值, 如果找到相同的键值,则判断所述话单为重单;如果没有找到相同的 键值,则判断所述话单不是重单,并将所述话单的键值链入所述链表 末端。
5. 根据权利要求4的话单去重方法,其中通过对所述话单的计费去重元素的散列函数运算确定所述话单的键值。
6.根据权利要求4的话单去重方法,其中所述定位步骤之前, 判断所确定的键值文件是否在内存中如果所述键值文件在内存中,则在内存中继续所述定位步骤和判如果所述键值文件不在内存中,则判断所述鍵值文件是否存在 如果所述键值文件存在,则将所述鍵值文件调入内存中,然后在 内存中继续所述定位步骤和判断步骤;如果所述键值文件不存在,则在内存中生成所确定的键值文件,表中,并且判定所述话单不是重单,
7. 根据权利要求6的话单去重方法,其中在将键值文件调入内 存之前,判断内存的可用区域对于所述键值文件是否足够如果内存的可用区域对于所述键值文件足够,则将所述键值文件 调入内存的可用区域;如果内存的可用区域对于所述鍵值文件不足,则将内存中的特定 键值文件对换到磁盘文件系统,以释放足够的内存可用区域,然后将 所述键值文件调入内存的可用区域。
8. 根据权利要求6的话单去重方法,其中在内存中生成所确定 的键值文件之前,判断内存的可用区域对于生成所确定的键值文件是 否足够如果足够,则生成所确定的键值文件;如果不够,则将内存中的特定鍵值文件对换到磁盘文件系统,以 释放足够的内存区域,然后生成所确定的键值文件。
9. 根据权利要求7或8的话单去重方法,其中按照"最近最少使 用"原则将内存中符合对换条件的键值文件对换到磁盘文件系统。
10. 根据权利要求4的话单去重方法,其中所述计费去重元素包 括发话时间、主叫号码、被叫号码、话单类型。
11. 一种从话单键值文件中清除鍵值的方法,包括 键值文件确定步骤,确定话单所归属的键值文件; 索引值和键值确定步骤,根据所述话单的计费去重元素确定所述话单的索引值和鍵值;定位步骤,基于所述话单的索引值定位到所确定的键值文件的一 个链表头指针;清除步骤,在所述头指针所指向的链表中查找所述话单的键值, 如果找到相同的键值,则从所述链表中清除存储与所述话单的键值相 同的键值的节点;如果没有找到相同的键值,则判断未生成所述话单 的键值。
12. 根据权利要求11的方法,其中通过对所述话单的计费去重 元素的散列函数运算确定所述话单的键值。
13. 根据权利要求11的方法,其中在所述定位步骤之前,判断所确定的键值文件是否在内存中如果所述键值文件在内存中,则在内存中继续所述定位步骤和清除步骤;如果所述键值文件不在内存中,则判断所述键值文件是否存在 如果所述键值文件存在,则将所述键值文件调入内存中,然后在 内存中继续所述定位步骤和清除步骤;如果所述鍵值文件不存在,则判定未生成所述话单的鍵值。
14.根据权利要求13的方法,其中在将键值文件调入内存之前, 判断内存的可用区域对于所述键值文件是否足够如果内存的可用区域对于所述键值文件足够,则将所述键值文件 调入内存的可用区域;如果内存的可用区域对于所述键值文件不足,则将内存中的特定 键值文件对换到磁盘文件系统,以释放足够的内存可用区域,然后将 所述鍵值文件调入内存的可用区域。
15. 根据权利要求14的方法,其中按照"最近最少使用"原则将 内存中符合对换条件的键值文件对换到磁盘文件系统。
16. 根据权利要求11的方法,其中所述计费去重元素包括发话 时间、主叫号码、被叫号码、话单类型。
17. —种产生话单键值文件的设备,包括数组生成装置,用于生成长度为N的数组,其中所述数组的每个 元素存储指向一个单向链表的头指针;索引值确定装置,用于根据话单的一个或多个计费去重元素确定 所述话单的索引值,其中所述索引值是在O到N-l之间取值的整数;键值确定装置,用于根据所述话单的计费去重元素确定所述话单 的键值;存储装置,用于将所述话单的键值存储到所述数组中与所述话单 的索引值相对应的元素所指向的链表中。
18. 根据权利要求17的设备,其中所述鍵值确定装置通过散列 函数确定所述话单的鍵值。
19. 根据权利要求17或18的设备,其中所述计费去重元素包括 发话时间、主叫号码、被叫号码、话单类型。
20. —种话单去重设备,包括 存储装置,用于存储话单鍵值文件;和 处理装置,用于执行话单去重处理,包括 鍵值文件确定单元,用于确定话单所归属的键值文件; 索引值和键值确定单元,用于根据所述话单的计费去重元素确定所述话单的索引值和键值;定位单元,用于基于所述话单的索引值定位到所确定的键值文件 的一个链表头指针;判断单元,用于在所述头指针所指向的链表中查找所述话单的键 值,如果找到相同的键值,则判断所述话单为重单;如果没有找到相 同的键值,则判断所述话单不是重单,并将所述话单的键值链入所述 链表末端。
21. 根据权利要求20的话单去重设备,还包括读取装置,用于 将存储在所述存储装置中的话单键值文件调入内存中;其中所述定位单元以及判断单元针对内存中的话单键值执行定 位以及判断操作。
22. 根据权利要求21的话单去重设备,还包括键值文件生成装 置,用于在内存和存储装置中都没有所述话单的键值文件时,在内存 中生成所述话单的键值文件,并判定所述话单不是重单。
23. 根据权利要求22的话单去重设备,还包括文件对换装置, 用于在内存的可用区域对于调入或生成所述键值文件不足时,将内存 中符合对换条件的鍵值文件对换到磁盘文件系统,以释放足够的内存 区域。
24. 根据权利要求23的话单去重设备,其中所述文件对换装置 按照"最近最少使用,,原则将内存中符合对换条件的键值文件对换到磁 盘文件系统。
25. 根据权利要求20的话单去重设备,其中所述索引值和键值 确定单元通过散列函数确定所述话单的键值。
26. 根据权利要求20的话单去重设备,其中所述计费去重元素 包括发话时间、主叫号码、被叫号码、话单类型。
27. —种从话单鍵值文件中清除键值的设备,包括 存储装置,用于存储话单鍵值文件;和 处理装置,用于执行键值清除处理,包括 键值文件确定单元,用于确定话单所归属的键值文件; 索引值和键值确定单元,用于根据所述话单的计费去重元素确定所述话单的索引值和键值;定位单元,用于基于所述话单的索引值定位到所确定的键值文件 的一个链表头指针;清除单元,用于在所述头指针所指向的链表中查找所述话单的键 值,如果找到相同的键值,则从所述链表中清除存储与所述话单的键 值相同的键值的节点;如果没有找到相同的键值,则判断未生成所述 话单的键值。
28. 根据权利要求27的设备,还包括读取装置,用于将存储在 所述存储装置中的话单键值文件调入内存中;其中所述定位单元以及清除单元针对内存中的话单键值执行定 位以及清除操作。
29. 根据权利要求28的设备,还包括文件对换装置,用于在内 存的可用区域对于调入所述鍵值文件不足时,将内存中符合对换条件 的鍵值文件对换到磁盘文件系统,以释放足够的内存区域。
30. 根据权利要求29的设备,其中所述文件对换装置按照"最近 最少使用"原则将内存中符合对换条件的键值文件对换到磁盘文件系 统。
31. 根据权利要求27的设备,其中所述索引值和键值确定单元 通过散列函数确定所述话单的键值。
32. 根据权利要求27的设备,其中所述计费去重元素包括发话 时间、主叫号码、被叫号码、话单类型。
全文摘要
本发明提供一种基于索引数组和链表的键值文件组织方式“索引—链表”方式;一种基于“索引—链表”方式键值文件的话单去重方法和一种基于“索引—链表”方式键值文件的键值消除方法。
文档编号H04M3/22GK101350869SQ20071013700
公开日2009年1月21日 申请日期2007年7月19日 优先权日2007年7月19日
发明者伟 冯, 黄启萦 申请人:中国电信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1