一种实时数据库整数型关键字存储方法及其查找算法技术

技术编号:10910919 阅读:138 留言:1更新日期:2015-01-14 18:12
本发明专利技术公开了一种实时数据库整数型关键字存储方法及其查找算法,将实时数据库中整型关键字的表的数据根据关键字大小分别存储在预先设定好的两块存储空间中,分别采用非紧密存储和紧密存储的方式,对应分别采用直接定位查找和二分查找的算法。具有能够避免记录在插入和删除时带来内存移动,从而提高实时库整体效率的优点。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了,将实时数据库中整型关键字的表的数据根据关键字大小分别存储在预先设定好的两块存储空间中,分别采用非紧密存储和紧密存储的方式,对应分别采用直接定位查找和二分查找的算法。具有能够避免记录在插入和删除时带来内存移动,从而提高实时库整体效率的优点。【专利说明】
本专利技术涉及实时数据库技术应用领域。
技术介绍
整数型关键字是实时数据库常用的关键字类型之一,使用整数型关键字的实时数据库的表只有一个关键字,该关键字为整数型。该实时数据库的存储和查找都依赖于整数型关键字,被广泛的应用在实时库领域中。 整数型关键字的表在实时库中通常以案关键字排序后连续存储方式为主,查找算法以二分查找法为主。如图1所示,为一个连续存储方式的举例示意图,在连续存储方式中,每条记录按关键字排序,连续的存储在内存空间中。 连续存储的问题是,记录和记录之间按找关键字排序紧密排列,中间没有空洞,从中间插入或删除记录会带来内存移动,移动的内存块越大,效率越低;移动的内存块越大,效率越低。二分查找的问题是,其查找算法时间复杂度为0(log2n),记录数越多效率越低。
技术实现思路
本专利技术的目的是针对现有技术存在的不足,提供,从中间插入和删除记录时不需要做内存移动,从而提高实时库插入和删除记录的效率。 为实现上述目的,本专利技术实时数据库整数型关键字存储方法及其查找算法可采用如下技术方案: —种实时数据库整数型关键字存储方法,对于实时数据库中以整型值作为关键字的表,根据预设值,将记录数据根据关键字大小分别采用非紧密排列与紧密排列的存储方法,具体包括: 1)每张表的存储空间分为等大小的两部分,每张表设定一个最大记录个数,每个部分的大小为单条记录个数X最大记录个数,其中第一块存储空间采用非紧密排列,第二块存储空间采用紧密排列; 2)对于整数型关键字值小于或等于最大记录个数的记录,将这部分记录存储在第一块记录空间中,记录的位置是整数型关键字值作为下标对应的存储空间中的位置,如果记录存在则记录头置为1,如果不存在则记录头置为0 ; 3)对于整数型关键字大于最大记录个数的记录,按整数型关键字排序紧密存储在第二块存储空间中。 与
技术介绍
相比,本专利技术提供的整数型关键字表实时库数据存储方式采用预先为一定量的关键字指定固定的位置,关键字为N的记录相对于存储空间的偏移量就是NX (每条记录所占大小),如果记录存在则记录头置为1,如果不存在则记录头置为0。这样做能够避免记录在插入和删除时带来内存移动,从而提高实时库整体效率。 本专利技术针对上述实时数据库整数型关键字存储方法还提供根据关键字的查找方法,如下: 1)对于所查找记录整数型关键字小于或等于最大记录个数的情况下,直接使用记录整数型关键字作为查找点,将第一块存储区域该点记录返回; 2)对于所查找记录整数型关键字大于最大记录个数的情况下,使用二分查找算法从第二块存储区域查询到对应的记录返回。 3、根据权利要求2所述的实时数据库整数型关键字存储方法,其特征在于, 上述存储方法和查找算法,同样适用于长整数型、短整数型作为关键字的实时库表。 与现有技术相比,本专利技术中的该查找方法的时间复杂度为0(1),与记录个数无关,效率高于现有的二分查找算法。对于溢出区的数据仍然使用二分查找算法,同样是为了满足任意关键字都可以存储的需求。 【专利附图】【附图说明】 图1为现有技术中整数型关键字连续存储方式一个举例的示意图。 图2为本专利技术中的整数型关键字非连续存储方式一个举例的示意图。 图3为本专利技术中的记录定位查找算法的流程图。 【具体实施方式】 下面结合附图和具体实施例,进一步阐明本专利技术,应理解这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围,在阅读了本专利技术之后,本领域技术人员对本专利技术的各种等价形式的修改均落于本申请所附权利要求所限定的范围。 请参阅图1及图2所示,本专利技术提供一种非连续存储的整数型关键字表存储方式。该存储方式包括以下几个部分: (1)对表的整数型关键字设置一个范围,比如Μ ; (2)建立一个有Μ条记录的存储空间,称为直接定位区。每条记录存储空间有两部分组成,一部分是记录头信息,用来标记该记录是否存在,一部分用来存放记录实体信息; (3)假设一条记录的关键字为Ν,并且0〈Ν〈 =Μ,如果记录存在,则直接定位区中第Ν条记录的记录头记为1,如果该记录不存在则记为0 ; (4)在存储空间直接定位区之后,建立一个存放关键字值>Μ的记录的存储空间,称为溢出区; (5)溢出区中的记录按关键字排序连续存储,和现有技术相同。 本专利技术提供的记录存储方式如图2所示。 针对本专利技术提出的这种记录存储方式,本专利技术提出一种按关键字查找记录的算法,称为直接定位算法,包括以下内容: (1)对于关键字Ν,如果0〈N〈 = Μ,直接定位区第Ν条记录,判断记录头,如果记录头为1,则说明记录存在,从直接定位区第Ν条记录的记录实体区得到记录; (2)对于关键字Ν,如果0〈N〈 = Μ,直接定位区第Ν条记录,判断记录头,如果记录头为0,则说明关键字为Ν的记录不存在; (3)对于关键字Ν>Μ,仍使用二分查找法在溢出区中判断关键字为Ν的记录是否存在,判断依据和现有技术相同。 本专利技术提供的查找算法如图3所示。 本专利技术提出的整数型关键字存储方法和查找算法,同样适用于长整数型、短整数型作为关键字的实时库表; 本专利技术提出的整数型关键字存储方法和查找算法同样适用于取数字型关键字的一部分作为直接定位存储依据的情况,如以关键字除上一个正整数取模做直接定位,以整数型关键字的某几个比特的值做直接定位等。 本专利技术涉及的实时数据库整数型关键字存储方法及其查找算法是结合工作在应用层的自主开发的实时库上实现,不依赖于具体的操作系统,适用于各种操作系统。本专利技术涉及的实时数据库整数型关键字存储方法及其查找算法保证了可移植性,能够随着实时库系统安全、稳定地运行在 IBM ΑΙΧλ Sun Solaris、Alpha Tru64、HPUX、Linux、Windows 等操作系统平台上;系统编程语言釆用ANSI C/C++,并符合IEEE P0SIX.2标准。【权利要求】1.一种实时数据库整数型关键字存储方法,其特征在于,对于实时数据库中以整型值作为关键字的表,根据预设值,将记录数据根据关键字大小分别采用非紧密排列与紧密排列的存储方法,具体包括: 1)每张表的存储空间分为等大小的两部分,每张表设定一个最大记录个数,每个部分的大小为单条记录个数X最大记录个数,其中第一块存储空间采用非紧密排列,第二块存储空间采用紧密排列; 2)对于整数型关键字值小于或等于最大记录个数的记录,将这部分记录存储在第一块记录空间中,记录的位置是整数型关键字值作为下标对应的存储空间中的位置,如果记录存在则记录头置为I,如果不存在则记录头置为O ; 3)对于整数型关键字大于最大记录个数的记录,按整数型关键字排序紧密存储在第二块存储空间中。2.根据权利要求1所述的实时数据库整数型关键字存储方法,其特征在于,还提供根据关键字的查找方法,如下: 1)对于所查找记录整数型关键字小于或等于最大记录本文档来自技高网
...
一种实时数据库整数型关键字存储方法及其查找算法

【技术保护点】
一种实时数据库整数型关键字存储方法,其特征在于,对于实时数据库中以整型值作为关键字的表,根据预设值,将记录数据根据关键字大小分别采用非紧密排列与紧密排列的存储方法,具体包括:1)每张表的存储空间分为等大小的两部分,每张表设定一个最大记录个数,每个部分的大小为单条记录个数×最大记录个数,其中第一块存储空间采用非紧密排列,第二块存储空间采用紧密排列;2)对于整数型关键字值小于或等于最大记录个数的记录,将这部分记录存储在第一块记录空间中,记录的位置是整数型关键字值作为下标对应的存储空间中的位置,如果记录存在则记录头置为1,如果不存在则记录头置为0;3)对于整数型关键字大于最大记录个数的记录,按整数型关键字排序紧密存储在第二块存储空间中。

【技术特征摘要】

【专利技术属性】
技术研发人员:彭晖王瑾吴庆曦靳晶魏娜
申请(专利权)人:国电南瑞科技股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有1条评论
  • 来自[北京市百度蜘蛛] 2015年01月15日 00:38
    整数(integers)就是像-3,-2,-1,0,1,2,3等这样的数。
    0
1