CN101237595A - 数据加载方法 - Google Patents
数据加载方法 Download PDFInfo
- Publication number
- CN101237595A CN101237595A CNA2008100816014A CN200810081601A CN101237595A CN 101237595 A CN101237595 A CN 101237595A CN A2008100816014 A CNA2008100816014 A CN A2008100816014A CN 200810081601 A CN200810081601 A CN 200810081601A CN 101237595 A CN101237595 A CN 101237595A
- Authority
- CN
- China
- Prior art keywords
- data
- index
- memory table
- collision position
- record
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Abstract
本发明公开了一种数据加载方法,包括以下步骤:步骤S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在索引表冲突区的数据区中记录冲突位置以及对应于冲突位置的冲突队列;以及步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据索引关键字计算冲突位置,并将冲突位置添加到冲突队列中。本发明改进了数据加载的方法和查询方法,降低了查询次数,提高了查询速度。
Description
技术领域
本发明涉及通信领域,尤其涉及一种内存数据加载的方法。
背景技术
在NGN应用领域,大客户系统面向电信大用户,提供话务台,计费,统计,增值等业务,和传统话务台相比,传统话务台嵌入交换机的应用之中,直接使用交换机的数据库,由交换机提供统一数据接口,所以不必关心数据是如何加载的,而NGN大客户系统作为传统话务台的升级,相对独立于核心网,为提供自己的业务和数据需求,必然使用到数据接口,数据接口的效率是直接影响到整个系统的性能的。有两种可以使用的数据接口使用方法:1、直接依赖使用SQL语句操作商用物理数据库(如SYBASE、SQLSERVER等原始数据),这种方法简单直接,但是查询太慢效率不高;2、将物理库加载内存通过遍历的方法,这种方法在数据不多情况下没有问题,但是数据量大时就会浪费大量查询次数和时间,效率也不会很高。因此大客户系统的内存数据系统,需要避免上述使用缺陷,需要选择一种合适的方式加载物理库数据并提供定位相对直接的数据查询接口,便于提高数据查询效率和更新效率。本发明就是描述一种如何加载内存数据、维护数据以及迅速定位查找数据的方法。
因此,需要一种数据加载的解决方案,能够解决上述相关技术中的问题。
发明内容
针对上述问题,本发明旨在提供一种内存数据加载方法,以克服直接使用物理数据库查询数据效率慢的缺陷,提供快速查询数据接口的适应方法,使话务台业务更加流畅,性能更优化。
根据本发明,提供了一种数据加载方法,包括以下步骤:步骤S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在索引表冲突区的数据区中记录冲突位置以及对应于冲突位置的冲突队列;以及步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据索引关键字计算冲突位置,并将冲突位置添加到冲突队列中。
步骤S104还包括以下步骤:创建内存表的空闲位置链表。
内存表具有一个或多个索引。
在内存表具有多个索引的情况下,创建内存表的空闲位置链表的步骤还包括:创建主副索引关系表,并将多个索引中的主索引的记录位置和多个索引中的副索引的记录位置关联到主副索引关系表中。
在增加数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;检测内存表中是否有空闲位置,如果有,则将数据的记录插入到空闲位置中,否则,扩展内存表,并将数据的记录插入到内存表的扩展位置中,以及将对应于扩展位置的冲突位置添加到冲突队列中。
扩展内存表的步骤还包括以下步骤:如果内存表有多个索引,则建立关于扩展位置的主副索引关系表。
在删除数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;以及在冲突队列中删除对应于冲突位置的实际记录位置,以在空闲列表中增加空闲位置。
在冲突队列中删除对应于冲突位置的实际记录位置的步骤还包括以下步骤:如果内存表有多个索引,则删除关于空闲位置的主副索引关系表。
在更新数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;更新冲突队列中的数据的实际记录位置所对应的内存表中的数据。
该方法还包括以下步骤:查询数据时,根据查询的索引关键字计算出冲突位置,并根据冲突位置找到相应的冲突队列;在冲突队列中的数据的实际记录位置所对应的内存表中找到查询的数据的记录。
相较于直接读取物理库的方法,本发明改进了数据加载的方法和查询方法,降低了查询次数,提高了查询速度,对大型数据应用有明显的效率提升。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是示出根据本发明的用于数据加载方法的流程图;
图2是示出根据本发明的实施例的用于数据加载的各模块结构图;
图3是示出根据本发明实施例的数据区创建以及加载的原始数据流程图;
图4是示出根据本发明实施例的增加数据时的处理流程图;
图5是示出根据本发明实施例的删除数据时的处理流程图;
图6是示出根据本发明实施例的更新数据时的处理流程图;以及
图7是示出根据本发明实施例的查询数据时的处理流程图。
具体实施方式
下面将结合附图来详细说明本发明的实施例。
图1是示出根据本发明的用于数据加载方法的流程图。参照图1,根据本发明的用于数据的加载方法包括以下步骤:步骤S102,创建索引表的索引数据区,用于存储索引关键字;步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在索引表冲突区的数据区中记录冲突位置以及对应于冲突位置的冲突队列;以及步骤S106,在加载数据时,将数据的记录插入到内存表中,并根据索引关键字计算冲突位置,并将冲突位置添加到冲突队列中。
步骤S104还包括以下步骤:创建内存表的空闲位置链表。内存表具有一个或多个索引。
在内存表具有多个索引的情况下,创建内存表的空闲位置链表的步骤还包括:创建主副索引关系表,并将多个索引中的主索引的记录位置和多个索引中的副索引的记录位置关联到主副索引关系表中。
在增加数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;检测内存表中是否有空闲位置,如果有,则将数据的记录插入到空闲位置中,否则,扩展内存表,并将数据的记录插入到内存表的扩展位置中,以及将对应于扩展位置的冲突位置添加到冲突队列中。
扩展内存表的步骤还包括以下步骤:如果内存表有多个索引,则建立关于扩展位置的主副索引关系表。
在删除数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;以及在冲突队列中删除对应于冲突位置的实际记录位置,以在空闲列表中增加空闲位置。
在冲突队列中删除对应于冲突位置的实际记录位置的步骤还包括以下步骤:如果内存表有多个索引,则删除关于空闲位置的主副索引关系表。
在更新数据时,该方法还包括以下步骤:计算数据的主索引关键字对应的冲突位置,并根据冲突位置找到相应的冲突队列;更新冲突队列中的数据的实际记录位置所对应的内存表中的数据。
该方法还包括以下步骤:查询数据时,根据查询的索引关键字计算出冲突位置,并根据冲突位置找到相应的冲突队列;在冲突队列中的数据的实际记录位置所对应的内存表中找到查询的数据的记录。
下面描述本发明的一个实施例。在该实施例中,用于数据加载的方法包括以下步骤:数据加载;数据更新;以及数据查询。
数据加载步骤包括:创建索引表的索引数据区;创建索引数据区的冲突数据区;创建冲突数据区内的冲突队列;创建内存表的空闲队列和主副索引关系,然后开始加载;如果内存表中有记录,则根据索引类型和索引的关键字计算冲突区位置;记录下该记录在内存中的位置,并把对应于该位置的冲突位置写入冲突队列;以及如果有副索引,则增加主副索引对应关系。
一旦接收到数据变化信息,则根据不同变化类型修改索引和冲突区信息,进行数据更新。数据更新包括以下步骤:增加数据时,计算增加信息的冲突位置;根据冲突位置找到冲突队列;检查内存表中是否有空闲位置,如果有则将数据记录在该位置中,没有则将数据记录在内存表之后的位置中,并将该位置添加到冲突队列中。删除数据时,计算删除信息的冲突位置,根据冲突位置找到冲突队列,并删除内存表中的对应于冲突位置的位置,以增加空闲位置。更新数据包括以下步骤:根据更新信息计算冲突位置;根据冲突位置找到冲突队列;根据对应于冲突队列中的实际记录位置的内存中的数据。
每次查询都是根据已经建好的索引来查询。数据查询包括以下步骤:首先根据查询的关键信息,计算索引的冲突位置;找到对应于冲突位置的冲突队列;以及检查冲突队列中符合条件的记录。
本发明是一种通用的数据索引建立、查询的比较有效的方法,对于任何系统都可以采用,在数据更新方面需要其他模块配合。
为保证数据更新中的正确性,该方法还提供定时加载功能,在业务不是很忙的情况,重新加载所有数据,避免数据长期运行中,可能有些更新消息不能正常通知的情况。
下面结合图2至图7来描述本发明的另一个实施例。
针对需要快速查询数据的应用,本实施例提供了一种加载数据的方法,根据索引来检索数据,可以有效地减少检索数据时间。
本发明是通过几个模块间相互配合应用来实现数据加载方法,几个模块的构成参见图2。
图2中包括检测数据变化模块202,负责监视数据库的数据变化,通过触发器或者其他方式获得变化的数据记录,并将变化记录通知数据接收更新模块;
数据接收更新模块204,负责了解是什么数据发生了变化,根据数据类型调用数据索引维护模块;
数据索引维护模块206,负责根据不同类型数据和索引编号更新索引数据,维护内存数据的正确性和索引的正确性;
数据接口模块208,根据数据索引迅速定位查找数据;以及
数据应用模块210,调用数据接口获得正确的内存数据。
图3是应用本实施例的数据区创建以及加载原始数据流程图。如图3所示,该加载流程包括以下步骤:
步骤S302,首先要创建索引表数据区,包括索引表号,内存表号,索引关键字信息以及索引数据区,一个内存表可以有多个索引,索引表号关联每个索引表的数据区;
步骤S304~S306,创建索引表冲突区数据区和冲突队列,记录每个冲突位置和冲突位置对应的冲突队列,每个冲突队列都是记录内存中相同冲突位置的记录链表。冲突位置计算方法不同,计算出来的冲突位置也不同,但要尽量使冲突位置平均分布,以使每个冲突队列的长度只有1个是最佳选择;
步骤S308,接下来创建内存表的空闲位置链表,在其中存放连续内存表中因删除而产生的空闲位置,空闲位置可以作为下次增加记录时的位置;如果有多个索引,还要创建主副索引关系表,这样可以通过主索引确定副索引的位置;
步骤S310~S314,创建完初始数据区后,下面需要往数据区中填充初始数据,就是通过读物理库的方式,将每条数据记录插入内存表,索引表,并记录冲突位置。每个索引都有自己的索引关键字,根据索引关键字可以计算出冲突位置,该计算方法是唯一的,保证在数据更新和查询时,冲突位置保持一致。计算出冲突位置后,对应于该冲突位置有一个冲突队列,向该队列里增加初始内存表记录对应的位置,以后该位置可以寻找内存表中的实际记录值;以及
步骤S316,如果有多个索引,将副索引的记录位置和主索引的记录位置关联进主副索引关系表。
完成初始数据加载后,下面要应对记录变化时,索引的变化,图4示出了检测数据增加时的变化流程,具体流程包括:
步骤S402~S406,增加数据时,首先计算该数据的主索引关键字对应的冲突位置,并找到对应于该冲突位置的冲突队列;
步骤S408~S410,判断内存表中是否有空闲位置,如果内存表没有空闲位置,则新的数据记录位置就加在内存表中最后一条记录的后面的位置中(不超过内存表设计容量,否则需要改变设计容量),这个位置就是新的数据记录在内存表中的位置。将该位置加入到冲突队列中,同时对内存表中该位置赋值,如果有多个索引还要建立主副索引关系。
图5示出了检测数据删除变化的流程,具体流程包括:
步骤S502~S506,删除数据时,计算该数据的主索引关键字对应的冲突位置,并找到对应于该冲突位置的冲突队列;
步骤S508~S510,在空闲链表中记录该位置,删除冲突队列中的该冲突位置,清除内存表中掉该位置内容,如果有多个索引也要清除主副索引关系。
图6示出了检测数据更新变化的流程,具体流程包括:
步骤S602~S604,数据更新时,首先计算该数据的主索引关键字对应的冲突位置;
步骤S606,找到对应于该冲突位置的冲突队列;以及
步骤S608,直接更新内存表中该位置中的内容。
以上方法保证数据索引的可靠性,图7示出了数据查找流程,包括:
步骤S702~S704,根据查询索引的类型和关键字,计算冲突区位置;
步骤S706,根据冲突位置找到冲突队列;以及
步骤S708,该队列里记录的内存表位置对应的内存表内容就是查询结果。
相较于直接读取物理库的方法,本发明改进了数据加载的方法和查询方法,有效地降低了查询次数,提高了查询速度,对大型数据应用有明显的效率提升。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据加载方法,其特征在于,包括以下步骤:
步骤S102,创建索引表的索引数据区,用于存储索引关键字;
步骤S104,创建索引表冲突区的数据区、创建冲突队列,其中,在所述索引表冲突区的数据区中记录冲突位置以及对应于所述冲突位置的所述冲突队列;以及
步骤S106,在加载数据时,将所述数据的记录插入到内存表中,并根据所述索引关键字计算冲突位置,并将所述冲突位置添加到所述冲突队列中。
2.根据权利要求1所述的方法,其特征在于,所述步骤S104还包括以下步骤:创建内存表的空闲位置链表。
3.根据权利要求2所述的方法,其特征在于,所述内存表具有一个或多个索引。
4.根据权利要求3所述的方法,其特征在于,在所述内存表具有多个索引的情况下,创建所述内存表的空闲位置链表的步骤还包括:创建主副索引关系表,并将所述多个索引中的主索引的记录位置和所述多个索引中的副索引的记录位置关联到所述主副索引关系表中。
5.根据权利要求4所述的方法,其特征在于,在增加数据时,所述方法还包括以下步骤:
计算所述数据的主索引关键字对应的冲突位置,并根据所述冲突位置找到相应的冲突队列;
检测所述内存表中是否有空闲位置,如果有,则将所述数据的记录插入到所述空闲位置中,否则,扩展所述内存表,并将所述数据的记录插入到所述内存表的扩展位置中,以及将对应于所述扩展位置的冲突位置添加到所述冲突队列中。
6.根据权利要求5所述的方法,其特征在于,扩展所述内存表的步骤还包括以下步骤:
如果所述内存表有多个索引,则建立关于所述扩展位置的主副索引关系表。
7.根据权利要求6所述的方法,其特征在于,在删除数据时,所述方法还包括以下步骤:
计算所述数据的主索引关键字对应的冲突位置,并根据所述冲突位置找到相应的冲突队列;以及
在冲突队列中删除对应于所述冲突位置的实际记录位置,以在所述空闲列表中增加空闲位置。
8.根据权利要求7所述的方法,其特征在于,在冲突队列中删除对应于所述冲突位置的实际记录位置的所述步骤还包括以下步骤:
如果所述内存表有多个索引,则删除关于所述空闲位置的主副索引关系表。
9.根据权利要求8所述的方法,其特征在于,在更新数据时,所述方法还包括以下步骤:
计算所述数据的主索引关键字对应的冲突位置,并根据所述冲突位置找到相应的冲突队列;
更新所述冲突队列中的所述数据的实际记录位置所对应的所述内存表中的所述数据。
10.根据权利要求9所述的方法,其特征在于,还包括以下步骤:
查询数据时,根据查询的所述索引关键字计算出冲突位置,并根据所述冲突位置找到相应的冲突队列;以及
在所述冲突队列中的所述数据的实际记录位置所对应的所述内存表中找到查询的所述数据的记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100816014A CN101237595B (zh) | 2008-02-25 | 2008-02-25 | 数据加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100816014A CN101237595B (zh) | 2008-02-25 | 2008-02-25 | 数据加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101237595A true CN101237595A (zh) | 2008-08-06 |
CN101237595B CN101237595B (zh) | 2011-07-13 |
Family
ID=39920900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100816014A Expired - Fee Related CN101237595B (zh) | 2008-02-25 | 2008-02-25 | 数据加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101237595B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731369A (zh) * | 2013-12-27 | 2014-04-16 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据队列的更新方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6061678A (en) * | 1997-10-31 | 2000-05-09 | Oracle Corporation | Approach for managing access to large objects in database systems using large object indexes |
CN1269043C (zh) * | 2003-01-16 | 2006-08-09 | 矽统科技股份有限公司 | 内存地址的重新映射方法 |
CN100375476C (zh) * | 2003-12-23 | 2008-03-12 | 中兴通讯股份有限公司 | 一种优化基站系统中网管占用内存的方法 |
-
2008
- 2008-02-25 CN CN2008100816014A patent/CN101237595B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731369A (zh) * | 2013-12-27 | 2014-04-16 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据队列的更新方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN101237595B (zh) | 2011-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100589087C (zh) | 一种通用缓存的方法 | |
CN101876983B (zh) | 数据库分区方法与系统 | |
CN102419770B (zh) | 文件共享系统及实现文件共享的方法、文件索引服务设备 | |
CN102932415A (zh) | 一种镜像文件存储方法及装置 | |
WO1992021090A1 (en) | Relational data base memory utilization analyzer | |
CN102375852A (zh) | 建立数据索引的方法、利用该索引查询数据的方法和系统 | |
CN101923571B (zh) | 管理终端数据记录的方法及装置 | |
CN102298633A (zh) | 一种分布式海量数据排重方法及系统 | |
CN111538724A (zh) | 管理索引的方法 | |
CN104035925A (zh) | 数据存储方法、装置和存储系统 | |
CN105354193A (zh) | 数据库数据缓存方法、查询方法及缓存装置、查询装置 | |
CN101093482A (zh) | 一种大量信息存储和检索的方法 | |
CN102542041A (zh) | 栅格数据处理方法及系统 | |
CN102117305B (zh) | 查询数据的系统、方法和数据管理系统 | |
CN110008289B (zh) | 一种关系数据库、电网模型数据存储及检索方法 | |
CN110716924B (zh) | 删除过期数据的方法和装置 | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN101237595B (zh) | 数据加载方法 | |
CN110007860A (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
CN101136765A (zh) | 一种快速访问信息模型的方法 | |
CN102799583A (zh) | 一种面向对象的存取方法及系统 | |
CN112488708B (zh) | 区块链账户关联性查询方法及虚假交易筛选方法 | |
CN102065192B (zh) | 一种话单排重方法和装置 | |
CN113688148A (zh) | 城轨数据查询方法、装置、电子设备及可读存储介质 | |
CN101217385A (zh) | 暂存处理计费话单的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110713 Termination date: 20180225 |
|
CF01 | Termination of patent right due to non-payment of annual fee |