数据加载方法

文档序号:7689365阅读:300来源:国知局
专利名称:数据加载方法
技术领域
本发明涉及通信领域,尤其涉及一种内存数据加载的方法。
技术背景在NGN应用领域,大客户系统面向电信大用户,提供i舌务台, 计费,统计,增值等业务,和传统话务台相比,传统话务台嵌入交 换机的应用之中,直接使用交换机的数据库,由交换机提供统一数 据接口,所以不必关心数据是如何加载的,而NGN大客户系统作 为传统话务台的升级,相对独立于核心网,为提供自己的业务和凄t 据需求,必然使用到数据接口,数据接口的效率是直接影响到整个 系统的性能的。有两种可以使用的数据接口使用方法1、直4妄依赖 使用SQL语句操作商用物理数据库(如SYBASE、 SQLSERVER等 原始数据),这种方法简单直接,但是查询太慢效率不高;2、将物 理库加载内存通过遍历的方法,这种方法在凄史据不多情况下没有问 题,但是数据量大时就会浪费大量查询次数和时间,效率也不会很 高。因此大客户系统的内存数据系统,需要避免上述使用缺陷,需 要选择一种合适的方式加载物理库数据并提供定位相对直接的数据 查询^妄口, Y更于才是高^:据查询效率和更新岁丈率。本发明就是描述一 种如何加载内存数据、维护数据以及迅速定位查找数据的方法。因此,需要一种H据加载的解决方案,能够解决上述相关4支术 中的问题。发明内容针对上述问题,本发明旨在提供一种内存数据加载方法,以克 服直4妻使用物理数据库查询lt据效率慢的缺陷,纟是供快速查询凄史据 *接口的适应方法,使话务台业务更加流畅,性能更优化。才艮据本发明,^是供了一种数据加载方法,包括以下步骤步骤 S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104, 创建索引表沖突区的数据区、创建沖突队列,其中,在索引表沖突 区的数据区中记录冲突位置以及对应于沖突位置的沖突队列;以及 步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据 索引关键字计算冲突位置,并将沖突位置添加到冲突队列中。步骤S104还包括以下步骤创建内存表的空闲位置链表。内存表具有一个或多个索引。在内存表具有多个索引的情况下,创建内存表的空闲位置《连表 的步骤还包括创建主副索引关系表,并将多个索引中的主索引的 记录位置和多个索引中的副索引的记录位置关联到主副索引关系表 中。在增加数据时,该方法还包括以下步骤计算数据的主索引关 4建字对应的沖突位置,并#4居沖突位置找到相应的沖突队列;4企测 内存表中是否有空闲位置,如果有,则将数据的记录插入到空闲位 置中,否则,扩展内存表,并将数据的记录插入到内存表的扩展位 置中,以及将对应于扩展位置的沖突位置添加到冲突队列中。扩展内存表的步骤还包括以下步骤如果内存表有多个索引, 则建立关于扩展位置的主副索引关系表。在删除数据时,该方法还包括以下步艰《计算H据的主索引关 4建字对应的沖突位置,并根据冲突位置找到相应的沖突队列;以及 在冲突队列中删除对应于冲突位置的实际记录位置,以在空闲列表 中增加空闲位置。在冲突队列中删除对应于沖突位置的实际记录位置的步骤还包 ^括以下步驶《如果内存表有多个索引,则删除关于空闲位置的主副 索引关系表。在更新数据时,该方法还包括以下步-骤计算凌t据的主索引关 4建字对应的冲突位置,并才艮据沖突位置找到相应的沖突队列;更新 沖突队列中的数据的实际记录位置所对应的内存表中的数据。该方法还包括以下步骤查询凄史据时,才艮据查询的索引关4建字 计算出沖突位置,并根据沖突位置找到相应的沖突队列;在沖突队 列中的数据的实际记录位置所对应的内存表中找到查询的凄t据的记 录。相專交于直纟妄读取物理库的方法,本发明改进了 ^:据加栽的方法 和查询方法,降低了查询次凄t,提高了查询速度,对大型数据应用 有明显的效率提升。本发明的其它特征和优点将在随后的i兌明书中阐述,并且,部 分地从说明书中变得显而易见,或者通过实施本发明而了解。本发 明的目的和其他优点可通过在所写的说明书、权利要求书、以及附 图中所特别指出的结构来实现和获得。


此处所说明的附图用来冲是供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是示出根据本发明的用于数据加载方法的流程图;图2是示出根据本发明的实施例的用于数据加载的各模块结构图;图3是示出根据本发明实施例的数据区创建以及加载的原始数 据流程图;图4是示出根据本发明实施例的增加数据时的处理流程图; 图5是示出根据本发明实施例的删除数据时的处理流程图; 图6是示出根据本发明实施例的更新数据时的处理流程图;以及图7是示出才艮据本发明实施例的查询lt据时的处理流程图。
具体实施方式
下面将结合附图来详细说明本发明的实施例。图1是示出根据本发明的用于数据加载方法的流程图。参照图 1, ^4居本发明的用于数据的加载方法包括以下步骤步骤S102, 创建索引表的索引数据区,用于存储索引关^T建字;步骤S104,创建 索引表冲突区的数据区、创建冲突队列,其中,在索引表沖突区的 数据区中记录冲突位置以及对应于冲突位置的沖突队列;以及步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据索引 关键字计算冲突位置,并将冲突位置添加到沖突队列中。步骤S104还包括以下步骤创建内存表的空闲位置链表。内存表具有一个或多个索引。在内存表具有多个索引的情况下,创建内存表的空闲位置链表 的步骤还包括创建主副索引关系表,并将多个索引中的主索引的 记录位置和多个索引中的副索引的记录位置关联到主副索引关系表 中。在增加数据时,该方法还包括以下步骤计算凄t据的主索引关 键字对应的沖突位置,并根据冲突位置找到相应的沖突队列;检测 内存表中是否有空闲位置,如果有,则将数据的记录插入到空闲位 置中,否则,扩展内存表,并将数据的记录插入到内存表的扩展位 置中,以及将对应于扩展位置的冲突位置添加到沖突队列中。扩展内存表的步骤还包括以下步骤如果内存表有多个索引, 则建立关于扩展位置的主副索引关系表。在删除数据时,该方法还包括以下步骤计算数据的主索引关 4建字对应的冲突位置,并才艮据沖突位置找到相应的沖突队列;以及 在冲突队列中删除对应于冲突位置的实际记录位置,以在空闲列表 中增加空闲位置。在沖突队列中删除对应于冲突位置的实际记录位置的步骤还包 括以下步骤如果内存表有多个索引,则删除关于空闲位置的主副 索引关系表。在更新数据时,该方法还包括以下步骤计算lt据的主索引关 4建字对应的沖突位置,并才艮据冲突位置找到相应的沖突队列;更新冲突队列中的数据的实际记录位置所对应的内存表中的数据。该方法还包括以下步骤查询凄t据时,才艮据查询的索引关4建字 计算出沖突位置,并^^艮据冲突位置找到相应的沖突队列;在冲突队 列中的数据的实际记录位置所对应的内存表中找到查询的数据的记 录。下面描述本发明的一个实施例。在该实施例中,用于H据加载 的方法包括以下步骤lt据加载;lt据更新;以及lt据查询。数据加载步骤包括创建索引表的索引数据区;创建索引数据 区的冲突数据区;创建沖突数据区内的沖突队列;创建内存表的空 闲队列和主副索引关系,然后开始加载;如果内存表中有i己录,则 根据索引类型和索引的关键字计算冲突区位置;记录下该记录在内 存中的位置,并4巴对应于该位置的沖突位置写入沖突队列;以及如 果有副索引,则增加主副索引对应关系。一旦接收到数据变化信息,则才艮据不同变化类型》务改索引和沖 突区信息,进4于凄t据更新。数据更新包括以下步骤增加lt据时, 计算增加信息的沖突位置;根据沖突位置找到冲突队列;检查内存表中是否有空闲位置,如果有则将翁:据记录在该位置中,没有则将 凄t据记录在内存表之后的位置中,并将该位置添加到沖突队列中。 删除数据时,计算删除信息的冲突位置,根据冲突位置找到冲突队 列,并删除内存表中的对应于沖突位置的位置,以增加空闲位置。 更新数据包括以下步骤根据更新信息计算沖突位置;根据沖突位 置找到冲突队列;才艮据对应于冲突队列中的实际记录位置的内存中 的凄t据。每次查询都是根据已经建好的索引来查询。数据查询包括以下步骤首先根据查询的关键信息,计算索引的沖突位置;找到对应 于沖突位置的沖突队列;以及检查沖突队列中符合条件的记录。本发明是一种通用的数据索? 1建立、查询的比较有效的方法, 对于任何系统都可以采用,在数据更新方面需要其他模块配合。为保证数据更新中的正确性,该方法还冲是供定时加载功能,在 业务不是很忙的情况,重新加载所有数据,避免数据长期运行中, 可能有些更新消息不能正常通知的情况。下面结合图2至图7来描述本发明的另一个实施例。针对需要快速查询数据的应用,本实施例提供了一种加载数据 的方法,根据索引来检索数据,可以有效地减少检索数据时间。本发明是通过几个模块间相互配合应用来实现数据加载方法, 几个^t块的构成参见图2。图2中包括检测数据变化模块202,负责监视数据库的数据变 化,通过触发器或者其他方式获得变化的数据记录,并将变化记录 通知数据接收更新模块;数据接收更新模块204,负责了解是什么数据发生了变化,根 据数据类型调用数据索引维护模块;数据索引维护模块206,负责根据不同类型数据和索引编号更 新索引数据,维护内存数据的正确性和索引的正确性;凄史据接口才莫块208, 4艮据数据索引迅速定位查找凄丈据;以及数据应用模块210,调用数据接口获得正确的内存数据。图3是应用本实施例的数据区创建以及加载原始数据流程图。如图3所示,该加载流禾呈包4舌以下步艰《步骤S302,首先要创建索引表数据区,包括索引表号,内存表 号,索引关键字信息以及索引数据区, 一个内存表可以有多个索引, 索引表号关联每个索引表的数据区;步骤S304 S306,创建索引表沖突区数据区和沖突队列,记录 每个冲突位置和沖突位置对应的冲突队列,每个冲突队列都是记录 内存中相同冲突位置的记录链表。沖突位置计算方法不同,计算出 来的沖突位置也不同,^旦要尽量使沖突位置平均分布,以使每个沖 突队列的长度只有1个是最佳选择;步骤S308,接下来创建内存表的空闲位置链表,在其中存方文连 续内存表中因删除而产生的空闲位置,空闲位置可以作为下次增加 记录时的位置;如果有多个索引,还要创建主副索引关系表,这样 可以通过主索引确定副索引的位置;步-骤S310 S314,创建完初始lt据区后,下面需要往数:悟区中 填充初始凄t据,就是通过读物理库的方式,将每条lt据记录插入内 存表,索引表,并记录冲突位置。每个索引都有自己的索引关键字, 根据索引关键字可以计算出沖突位置,该计算方法是唯一的,保证 在数据更新和查询时,沖突位置保持一致。计算出冲突位置后,对 应于该冲突位置有一个沖突队列,向该队列里增加初始内存表i己录 对应的位置,以后该位置可以寻找内存表中的实际记录值;以及步骤S316,如果有多个索引,将副索引的记录位置和主索引的 记录位置关联进主副索引关系表。完成初始tt据加载后,下面要应对记录变^f匕时,索引的变4匕, 图4示出了 4企测数据增加时的变化流程,具体流程包括步骤S402 S406,增加数据时,首先计算该数据的主索引关键: 字对应的沖突位置,并找到对应于该冲突位置的冲突队列;步驶《S408 ~ S410,判断内存表中是否有空闲4立置,如果内存表 没有空闲位置,则新的数据记录位置就加在内存表中最后一条记录 的后面的位置中(不超过内存表设计容量,否则需要改变设计容量), 这个位置就是新的凄t据记录在内存表中的位置。将该位置加入到沖 突队列中,同时对内存表中该位置赋值,如果有多个索引还要建立 主副索引关系。图5示出了检测数据删除变化的流程,具体流程包括步-骤S502 S506,删除凄史据时,计算该凄t据的主索引关4定字7于 应的冲突位置,并找到对应于该冲突位置的冲突队列;步骤S508 S510,在空闲链表中记录该4立置,删除沖突队列中 的该沖突位置,清除内存表中掉该位置内容,如果有多个索引也要 清除主副索引关系。图6示出了检测数据更新变化的流程,具体流程包括步骤S602 S604,数据更新时,首先计算该数据的主索引关4建 字对应的冲突位置;步骤S606,找到对应于该冲突位置的冲突队列;以及步艰爻S608,直4妄更新内存表中该位置中的内容。以上方法4呆i正^t据索引的可靠性,图7示出了凄史据查找流禾呈, 包括步骤S702 S704,根据查询索引的类型和关键字,计算冲突区 位置;步骤S706,才艮据冲突位置找到沖突队列;以及步骤S708,该队列里记录的内存表位置对应的内存表内容就是 查询结果。相较于直接读取物理库的方法,本发明改进了凄t据加载的方法 和查询方法,有效地降低了查询次数,提高了查询速度,对大型数 据应用有明显的效率提升。以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。
权利要求
1.一种数据加载方法,其特征在于,包括以下步骤步骤S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在所述索引表冲突区的数据区中记录冲突位置以及对应于所述冲突位置的所述冲突队列;以及步骤S106,在加载数据时,将所述数据的记录插入到内存表中,并根据所述索引关键字计算冲突位置,并将所述冲突位置添加到所述冲突队列中。
2. 根据权利要求1所述的方法,其特征在于,所述步骤S104还 包4舌以下步眾《创建内存表的空闲位置《连表。
3. 根据权利要求2所述的方法,其特征在于,所述内存表具有一 个或多个索引。
4. 根据权利要求3所述的方法,其特征在于,在所述内存表具有 多个索引的情况下,创建所述内存表的空闲位置链表的步骤还 包括创建主副索引关系表,并将所述多个索引中的主索引的 记录位置和所述多个索引中的副索引的记录位置关4关到所述 主副索引关系表中。
5. 根据权利要求4所述的方法,其特征在于,在增加数据时,所 述方法还包4舌以下步f《计算所述数据的主索引关键字对应的沖突位置,并4艮据所 述沖突4立置找到相应的沖突队列;检测所述内存表中是否有空闲位置,如果有,则将所述数 据的记录插入到所述空闲位置中,否则,扩展所述内存表,并 将所述数据的记录插入到所述内存表的扩展位置中,以及将对 应于所述扩展位置的沖突位置添加到所述冲突队列中。
6. 根据权利要求5所述的方法,其特征在于,扩展所述内存表的 步艰《还包4舌以下步艰纟如果所述内存表有多个索引,则建立关于所述扩展4立置的 主副索引关系表。
7. 才艮据4又利要求6所述的方法,其特征在于,在删除数据时,所 述方法还包4舌以下步-骤计算所述数据的主索引关键字对应的冲突位置,并4艮据所 述冲突位置找到相应的冲突队列;以及在冲突队列中删除对应于所述冲突4立置的实际记录^f立置, 以在所述空闲列表中增加空闲位置。
8. 根据权利要求7所述的方法,其特征在于,在沖突队列中删除 乂于应于所述沖突^f立置的实际i己录位置的所述步鸟聚还包^舌以下 步骤如果所述内存表有多个索引,则删除关于所述空闲位置的 主副索引关系表。
9. 冲艮据^又利要求8所述的方法,其特征在于,在更新数据时,所 述方法还包4舌以下步艰《计算所述数据的主索引关键字对应的冲突位置,并才艮据所 述冲突位置找到相应的冲突队列;更新所述沖突队列中的所述数据的实际记录位置所乂t应 的所述内存表中的所述凄丈据。
10. 根据权利要求9所述的方法,其特征在于,还包括以下步骤查询数据时,根据查询的所述索引关键字计算出沖突位 置,并根据所述沖突位置找到相应的沖突队列;以及在所述沖突队列中的所述数据的实际记录位置所只于应的 所述内存表中找到查询的所述数据的记录。
全文摘要
本发明公开了一种数据加载方法,包括以下步骤步骤S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在索引表冲突区的数据区中记录冲突位置以及对应于冲突位置的冲突队列;以及步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据索引关键字计算冲突位置,并将冲突位置添加到冲突队列中。本发明改进了数据加载的方法和查询方法,降低了查询次数,提高了查询速度。
文档编号H04Q3/00GK101237595SQ20081008160
公开日2008年8月6日 申请日期2008年2月25日 优先权日2008年2月25日
发明者周冬平, 张海军 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1