本发明专利技术公开了一种可实时更新的位图索引方法包括:输入需要查找的内容;通过对应的位图索引串找到需要查找的内容的取值;根据操作获取一个锁然后对数据库进行修改,并设置时间戳;全局的时间戳增加1,释放锁,使系统在执行UDI操作时,有新查询操作到来不需要等待UDI操作完成就可以查询。解决了此技术无法并行操作的问题,实现了更新、插入、删除操作时不阻塞新到来的查询操作,提供了一个高性能的查询操作。经试验论证,本专利提出的技术能大幅降低位图索引并行时操作的时延,提高整个系统的吞吐量。吐量。吐量。
【技术实现步骤摘要】
一种可实时更新的位图索引方法、介质及装置
[0001]本专利技术涉及位图索引
,具体为一种可实时更新的位图索引方法、介质及装置。
技术介绍
[0002]在数据库管理系统中,查找数据是一个被频繁调用的操作,为了降低查询时延、提高查询效率,索引便应运而生。索引之于数据库管理系统,正如目录和一本书关系;通过检索目录,可以快速跳转到对应书目内容,而不是从头至尾翻阅整本书。在数据库系统中,通过索引技术,能从一张表中直接找到特定的记录,而不必顺序扫描整张表,从而能大大提高查询性能。鉴于上述介绍,可见索引在数据库管理系统中占据重要地位。
[0003]位图索引是一种常见的索引,主流的商业、开源数据库如Oracle、DB2、PostgreSQL都支持这种索引。
[0004]相对于其他常见索引,位图索引有其得天独厚的优势。由于位图索引是对不同取值建立对应的bitvector,在多值查询时,这种机制就可以直接选择要查询的值,过滤掉其他无用信息,从而提高查询效率。同时,在一些现代硬件的支持下,计算机处理按位逻辑运算bitwiselogicaloperation的效率很高,因此位图索引很适合处理查询密集的操作。尤其在处理大规模数据集时,位图索引的查询性能优势明显,所以其常用在大型数据仓库和科学数据分析中。
[0005]但随着位图索引技术的广泛应用,其问题也逐渐暴露出来——位图索引的更新问题。即使是Oracle这样成熟的大型商用数据库,也只是使用低效的删除、重建方法。为此,许多新技术被提出以解决这一棘手的问题。如Canahuate的UCB技术,通过维护一个ExistenceBitmap来解决更新问题。目前,此领域最前沿的技术是由Athanassoulis提出的UpBit技术。Athanassoulis提出的UB和fencepointer技术解决了上述问题。
[0006]然而,随着多核技术的发展,业界对适用于多核处理器的并行操作呼声与日俱增。目前,位图索引技术只适用于顺序访问,不支持UDI操作与查询Query操作之间并行发生。即当UDI正在执行时,查询操作不能够被执行,这极大地降低了系统的可用性,同时会引起严重的数据不一致问题。
[0007]虽然可以通过读写锁reader
‑
writerlock来实现并行化,但随之而来的是使用锁的问题。锁的使用会导致UDI操作阻塞查询操作,即当UDI操作要修改某一bitvector时,会对此bitvector上锁,当其他查询操作要访问此bitvector时,只能等待UDI操作结束并释放锁。这一机制会引起较大时延,这对于查询频繁的系统是不可接受的。同时,随着核心数的增加,使用锁的不可拓展性日益显著,这会导致更高的时延和更低吞吐量。
技术实现思路
[0008]本部分的目的在于概述本专利技术的实施例的一些方面以及简要介绍一些较佳实施例。在本部分以及本申请的说明书摘要和专利技术名称中可能会做些简化或省略以避免使本部
分、说明书摘要和专利技术名称的目的模糊,而这种简化或省略不能用于限制本专利技术的范围。
[0009]鉴于上述存在的问题,提出了本专利技术。
[0010]因此,本专利技术解决的技术问题是:现有的位图索引方法存在较大时延和低吞吐量,以及解决锁的使用会导致UDI操作阻塞查询的问题。
[0011]为解决上述技术问题,本专利技术提供如下技术方案:一种可实时更新的位图索引方法,包括:
[0012]输入需要查找的内容;
[0013]通过对应的位图索引串找到所述需要查找内容的取值;
[0014]根据操作获取锁然后对数据库进行修改,并设置时间戳;
[0015]全局的所述时间戳增加1,释放锁,使系统在执行UDI操作时,有新查询操作到来不需要等待UDI操作完成就可以查询。
[0016]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述取值包括:建立其对应的位图索引串,根据需要查找的内容通过对应的位图索引串找到取值。
[0017]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述锁的使用包括:
[0018]当UDI操作要修改位图索引串时,对此位图索引串上锁;
[0019]当其他查询操作要访问此位图索引串时,则等待UDI操作结束并释放锁。
[0020]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述UDI操作包括:更新操作、删除操作和插入操作;
[0021]当有一个查询的事务提交到系统,系统检测其时间戳;
[0022]系统将删除链中小于或者等于此时间戳的所有废弃版本。
[0023]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述更新操作还包括:
[0024]根据行号找到更新前的值,记为old_value;
[0025]根据old_value、更新后的值new_value以及操作时间戳找到相应版本的位图索引串;
[0026]申请获得锁,复制old_value和new_value相应版本的位图索引串,修改相应行数的值,设置其时间戳;
[0027]将old_value和new_value新版的位图索引串分别插入到相应链中;
[0028]全局时间戳增加1,释放锁。
[0029]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述删除操作还包括:
[0030]根据行号找到要删除的值,记为delete_value;
[0031]根据delete_value和操作时间戳找到相应版本的位图索引串;
[0032]申请获得锁,复制此位图索引串,修改相应行数的值,设置其时间戳;
[0033]将delete_value新版的位图索引串插入到delete_value链中;
[0034]全局时间戳增加1,释放锁。
[0035]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:所述插入操作还包括:
[0036]申请获得锁,复制要插入的值insert_value相应版本的位图索引串,修改新增行
数的值,设置其时间戳;
[0037]复制剩余其他值的相应版本的位图索引串,修改新增行数的值,设置其时间戳;
[0038]将所有新的位图索引串插入到其对应的链中;
[0039]全局行数的变量N_ROWS加1;
[0040]全局时间戳增加1,释放锁。
[0041]作为本专利技术所述的可实时更新的位图索引方法,其特征在于:
[0042]所述查询操作还包括:
[0043]根据要查询的值query_value和查询操作的时间戳遍历位图索引串链,找到相应版本的位图索引串;
[0044]遍历这个位图索引串,返回结果。
[0045]一种计算机设备,包括:存储器和处理器;所述存储器存储有计算机程序,其特征在于:所述处理器执行所述计算机程序时实现本专利技术中任一项所述的方法的步骤。
[0046]一种计算机可读存储介质,其上存储有本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种可实时更新的位图索引方法,其特征在于,包括:输入需要查找的内容;通过对应的位图索引串找到所述需要查找内容的取值;根据操作获取锁然后对数据库进行修改,并设置时间戳;全局的所述时间戳增加1,释放锁,使系统在执行UDI操作时,有新查询操作到来不需要等待UDI操作完成就可以查询。2.如权利要求1所述的可实时更新的位图索引方法,其特征在于:所述取值包括:建立其对应的所述位图索引串,根据需要查找的内容通过对应的位图索引串找到取值。3.如权利要求1或2所述的可实时更新的位图索引方法,其特征在于:所述锁的使用包括:当UDI操作要修改位图索引串时,对此位图索引串上锁;当其他查询操作要访问此位图索引串时,则等待UDI操作结束并释放锁。4.如权利要求3所述的可实时更新的位图索引方法,其特征在于:所述UDI操作包括:更新操作、删除操作和插入操作;当有一个查询的事务提交到系统,系统检测其时间戳;系统将删除链中小于或者等于此时间戳的所有废弃版本。5.如权利要求4所述的可实时更新的位图索引方法,其特征在于:所述更新操作还包括:根据行号找到更新前的值,记为old_value;根据old_value、更新后的值new_value以及操作时间戳找到相应版本的位图索引串;申请获得锁,复制old_value和new_value相应版本的位图索引串,修改相应行数的值,设置其时间戳;将old_value和new_value新版的位图索引串分别插入到相应链中;全局时间戳增加1...
【专利技术属性】
技术研发人员:郭少哲,王俊昌,李凌燕,付雄,
申请(专利权)人:南京邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。