列式数据库处理的方法和处理设备的制作方法

文档序号:6522626阅读:141来源:国知局
列式数据库处理的方法和处理设备的制作方法
【专利摘要】本发明实施例提供一种列式数据库处理方法,列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性,方法包括:接收应用程序发送的查询请求,查询请求包含了查询条件;根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果;向应用程序发送查询结果。这样由于列式数据库是按照列式存储的,因此查询效率将会显著提升。
【专利说明】列式数据库处理的方法和处理设备
【技术领域】
[0001]本发明实施例涉及数据库技术,尤其涉及一种列式数据库处理的方法和处理设备。
【背景技术】
[0002]列式数据库是以列相关存储架构进行数据存储的数据库,每个列的数据独立紧密存放,一行数据的不同列分别存放在不同的数据区。
[0003]列式数据库的存储分为两个区域:行区和列区。其中,列区存储原始数据;行区存储由数据操纵语言(Data Manipulation Language, DML)事务操作产生的新数据。虽然数据按列组织,但在实际要求数据是行一致的,因此在做数据修改时,涉及到不同列的修改,在这个过程中仍然需要在行区保证事务的ACID属性。
[0004]例如,列式数据库接收一个更新操作请求,其SQL语句如下:UPDATE TABLEl SETF2=10 WHERE F3〈20,则列式数据库将执行如下操作:
[0005]1、扫描TABLE1,记录满足F3〈20条件所在的行号。
[0006]2、对该行号进行加排他锁,使之不能被其他session修改。
[0007]3、将此行号的所有字段读取出来,并将F2的值改为10,然后拼成行记录格式。
[0008]4、将该行记录格式保存到行存区,本次数据更新完成,释放该行号的排他锁。
[0009]由于列式数据库中,一些数据是存储在行区上的,因此当列式数据库接收到查询请求时,需要判断session的需要逐条判断此记录是否提交,例如:SELECT F2 FROM TABLElWHERE F3〈20的步骤为:
[0010]1、扫描TABLEl列区,记录满足F3〈20条件的所在的行号。
[0011]2、判断上述记录的行号是否已被修改,如果记录的行号没有被修改,则在列区读取F2的值,如果该记录的行号已经被修改,则需要到行区读取已经被修改的新记录;
[0012]3、在行区判断最新版本是否是本session修改的,是则返回最新版本,不是则返回上个已提交版本。
[0013]4、列区扫描完成之后,扫描行区部分新增数据,确定是否有满足F3〈20条件,如果有,则输出F2的值。
[0014]从上述论述可知,目前的现有技术的列式数据库的事务处理必须同时涉及到行区和列区,当在列式数据库进行数据查询时,由于列式数据库有行区的存在,需要逐行扫描行区的数据,这样会导致列式数据库的查询效率降低,特别是大数据库容量情况,查询效率将下降的非常多。

【发明内容】

[0015]本发明实施例提供一种列式数据库处理的方法和处理设备,解决了上述现有技术中,列式数据库的事务处理必须涉及到行区的技术问题。
[0016]第一个方面,本发明提供了一种处理设备,包括:[0017]接口模块,用于接收应用程序发送的查询请求,所述查询请求包含了对列式数据库的查询条件,并将所述查询请求发送给查询模块,其中所述数据列按照列存储的方式存储具体数据,所述列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与所述标记位处于同一行数据的有效性;
[0018]查询模块,用于根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果;并将所述查询结果发送给所述接口模块;
[0019]所述接口模块,还用于接收所述查询模块发送的查询结果,向所述应用程序发送所述查询结果。
[0020]在第一个方面的第一种可能的实现方式中,查询模块包括第一生成单元,第二生成单元和获取单元,其中,第一生成单元,用于根据查询条件,扫描查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,涉及到的数据列中满足的查询条件的在条件位图相应行的值是有效的,涉及到的数据列中不满足的查询条件的在条件位图相应行的值是无效的;第二生成单元,用于根据标记列和一个以上的条件位图,生成查询位图,其中,当复制的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,用于根据查询位图,获得满足查询条件的和标记列的标记位是有效的查询结果。
[0021]结合在第一个方面的第一种可能的实现方式中,第二种可能实现方式为:查询模块还包括确定单元,其中,确定单元,用于确定存在事务提交时标记列的待进行的修改,事务为查询请求所在的事务,在临时存储区域中存储标记列,将存储的标记列作为查询请求的私有标记列,并根据事务提交时标记列的待进行的修改,更新私有标记列,使得更新后的私有标记列的被修改的标记位的值表示了事务中当前标记位对应的数据的有效性;第二生成单元,具体用于根据更新后的私有标记列和一个以上的条件位图,生成查询位图,其中,当更新后的私有标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当更新后的私有标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,具体用于根据查询位图,获得满足查询条件和更新后的私有标记列的标记位是有效的的查询结果。
[0022]结合在第一个方面的第一种可能的实现方式中,第三种可能的实现方式为:确定单元,还用于确定不存在事务提交时标记列的待进行的修改时,事务为查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将存储的标记列作为另一个共享标记列,并设置另一个共享标记列的版本号与查询请求的对应关系,如果已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置已存储的共享标记列的版本号与查询请求的对应关系;第二生成单元,具体用于根据共享标记列的版本号与查询请求的对应关系,在临时存储区域中确定查询请求对应的共享标记列,根据查询请求对应的共享标记列和一个以上的条件位图,生成查询位图,其中,当查询请求对应的共享的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当查询请求对应的标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,具体用于根据查询位图,获得满足查询条件和查询请求对应的标记列的标记位是有效的的查询结果。
[0023]第二个方面,本发明还提供了另一种处理设备,包括接口模块,修改模块,记录模块和提交模块,其中,接口模块,用于在一个事务中,接收应用程序发送的修改请求,修改请求包含了对列式数据库的修改条件,并将修改请求发送给修改模块,其中数据列按照列存储的方式存储具体数据,列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与标记位处于同一行数据的有效性;修改模块,用于根据修改条件,对标记列和一个以上的数据列进行修改处理;记录模块,用于记录事务提交时标记列的待进行的修改;提交模块,用于提交事务时,按照记录的事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在修改处理后与标记位处于同一行的数据的有效性。
[0024]第三个方面,本发明还提供了一种列式数据库处理方法,列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性,方法包括:接收应用程序发送的查询请求,查询请求包含了查询条件;根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果;向应用程序发送查询结果。
[0025]在第三方面的第一种可能的实现方式中,根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果,具体包括:根据查询条件,扫描查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,涉及到的数据列中满足的查询条件的在条件位图相应行的值是有效的,涉及到的数据列中不满足的查询条件的在条件位图相应行的值是无效的;根据标记列和一个以上的条件位图,生成查询位图,其中,当标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和标记列的标记位是有效的查询结果。
[0026]结合第三方面的第一种可能的实现方式中,第二种可能的实现方式,在根据查询条件,扫描查询条件所涉及到的数据列之前,还包括:确定存在事务提交时标记列的待进行的修改,事务为查询请求所在的事务,在临时存储区域中存储标记列,将存储的标记列作为查询请求的私有标记列,并根据事务提交时标记列的待进行的修改,更新私有标记列,使得更新后的私有标记列的被修改的标记位的值表示了事务中当前标记位对应的数据的有效性;根据标记列和一个以上的条件位图,生成查询位图,其中,当标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和标记列的标记位是有效的的查询结果,具体为:根据更新后的私有标记列和一个以上的条件位图,生成查询位图,其中,当更新后的私有标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当更新后的私有标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和更新后的私有标记列的标记位是有效的的查询结果。
[0027]结合第三方面的第一种可能的实现方式中,第三种可能的实现方式为,在根据查询条件,扫描查询条件所涉及到的数据列之前,还包括:确定不存在事务提交时标记列的待进行的修改时,事务为查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将存储的标记列作为另一个共享标记列,并设置另一个共享标记列的版本号与查询请求的对应关系,如果已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置已存储的共享标记列的版本号与查询请求的对应关系;
[0028]根据标记列和一个以上的条件位图,生成查询位图,其中,当标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和标记列的标记位是有效的的查询结果,具体为:根据共享标记列的版本号与查询请求的对应关系,在临时存储区域中确定查询请求对应的共享标记列,根据查询请求对应的共享标记列和一个以上的条件位图,生成查询位图,其中,当查询请求对应的共享的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当查询请求对应的标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和查询请求对应的标记列的标记位是有效的的查询结果。
[0029]第四个方面,一种列式数据库处理方法,列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性,方法包括:在一个事务中,接收应用程序发送的修改请求,修改请求包含了修改条件;根据修改条件,对标记列和一个以上的数据列进行修改处理,记录事务提交时标记列的待进行的修改;提交事务时,按照记录的事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在修改处理后与标记位处于同一行的数据的有效性。
[0030]第五个方面,本发明还提供了一种处理设备,包括收发器和处理器,其中,收发器用于接收应用程序发送的查询请求,查询请求包含了查询条件,并将查询请求发送给处理器,以及接收处理器发送的查询结果,其中列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性;处理器,用于接收收发器发送的查询请求,根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果,并将查询结果发送给收发器。
[0031]在第五方面的第一种可能的实现方式中,处理器,具体用于根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果,具体包括:根据查询条件,扫描查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,涉及到的数据列中满足的查询条件的在条件位图相应行的值是有效的,涉及到的数据列中不满足的查询条件的在条件位图相应行的值是无效的;根据标记列和一个以上的条件位图,生成查询位图,其中,当标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和标记列的标记位是有效的查询结果。
[0032]结合第五方面的第一种可能的实现方式中,第二种可能的实现方式,处理器,还用于在根据查询条件,扫描查询条件所涉及到的数据列之前,确定存在事务提交时标记列的待进行的修改,事务为查询请求所在的事务,在临时存储区域中存储标记列,将存储的标记列作为查询请求的私有标记列,并根据事务提交时标记列的待进行的修改,更新私有标记列,使得更新后的私有标记列的被修改的标记位的值表示了事务中当前标记位对应的数据的有效性;处理器进一步用于根据更新后的私有标记列和一个以上的条件位图,生成查询位图,其中,当更新后的私有标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当更新后的私有标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和更新后的私有标记列的标记位是有效的的查询结果。
[0033]结合第五方面的第一种可能的实现方式中,第三种可能的实现方式为,处理器,还用于在根据查询条件,扫描查询条件所涉及到的数据列之前,还包括:确定不存在事务提交时标记列的待进行的修改时,事务为查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将存储的标记列作为另一个共享标记列,并设置另一个共享标记列的版本号与查询请求的对应关系,如果已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置已存储的共享标记列的版本号与查询请求的对应关系;处理器进一步用于根据共享标记列的版本号与查询请求的对应关系,在临时存储区域中确定查询请求对应的共享标记列,根据查询请求对应的共享标记列和一个以上的条件位图,生成查询位图,其中,当查询请求对应的共享的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当查询请求对应的标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;根据查询位图,获得满足查询条件和查询请求对应的标记列的标记位是有效的的查询结果。
[0034]第六个方面,一种处理设备,包括收发器和处理器,其中,收发器用于在一个事务中,接收应用程序发送的修改请求,修改请求包含了修改条件,并将修改请求发送给处理器,以及接收处理器发送的修改结果,其中列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性;处理器,用于接收收发器发送的修改请求,根据修改条件,对标记列和一个以上的数据列进行修改处理,记录事务提交时标记列的待进行的修改;提交事务时,按照记录的事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在修改处理后与标记位处于同一行的数据的有效性。
[0035]在本发明实施例中,在列式数据库中增加一列专门用于表示数据列各行数值的有效性的标记列,这样就可以通过标记列,可以实现所有的数据都被存储在列区,而无需一个专门的的行区存储数据修改时的数据,这样进行数据查询时,就可以完全在列区进行数据查询,而无需到行区中进行查询了,提高了数据查询的效率,特别在大数据的应用,查询效率有显著的提升。
【专利附图】

【附图说明】
[0036]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
[0037]图1是根据本发明实施例的一个网络环境示意图;
[0038]图2是根据本发明实施例的另一个网络环境示意图;
[0039]图3是根据本发明实施例的另一个处理设备的示意性框图;
[0040]图4是根据本发明实施例的一个处理设备的示意性框图;
[0041]图5是根据本发明实施例的另一个处理设备的示意性框图;
[0042]图6是根据本发明实施例的另一个处理设备的结构示意性框图;
[0043]图7是根据本发明实施例的又一个处理设备的结构示意性框图;
[0044]图8是根据本发明实施例的一种列式数据库处理方法的流程图;
[0045]图9是根据本发明实施例的另一种列式数据库处理方法的流程图;
[0046]图10是根据本发明实施例的列式数据库查询方法的流程图;
[0047]图11是根据本发明实施例的条件位图与标记列与运算示意图;
[0048]图12是根据本发明实施例的列式数据库插入方法的流程图;
[0049]图13是根据本发明实施例的列式数据库更新方法的流程图;
[0050]图14是根据本发明实施例的列式数据库删除方法的流程图。
【具体实施方式】
[0051]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052]首先介绍本发明实施例所提出的列式存储的架构,列式数据库中将数据和表头分开存储,表头中包括了各个列的属性和当前记录数,属性可以包括该列的名称,该列数值的字段类型和该列的起始地址等,如表1为一个表头,该表头的列名、字段属性和该列的起始地址,其中列名如行号,标记,F2和F3,各个列的数值字段属性为整型、字符型和长整型等,该列的起始地址,用于当进行数据扫描时,如:查询,更新和删除等,从该起始地址进行扫描读取数据,扫描至当前记录数为止。另外,在标记列中还记录当前标记列的版本号,当标记列每次更新一次,标记列的版本号都会更新一次,通常的标记列的版本号可以是连续递增的数字或字母加连续递增的数字,例如:当前标记列的版本是vl,当标记列被更新一次后,该标记列的版本号将被更新为v2。当前记录数记录当前表有多少行数的值,例如当前如表1所示,有4行数据,那么此时当前记录数即为4。
【权利要求】
1.一种处理设备,其特征在于,包括: 接口模块,用于接收应用程序发送的查询请求,所述查询请求包含了对列式数据库的查询条件,并将所述查询请求发送给查询模块,其中所述数据列按照列存储的方式存储具体数据,所述列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与所述标记位处于同一行数据的有效性; 查询模块,用于根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果;并将所述查询结果发送给所述接口模块; 所述接口模块,还用于接收所述查询模块发送的查询结果,向所述应用程序发送所述查询结果。
2.如权利要求1所述的处理设备,其特征在于,所述查询模块包括第一生成单元,第二生成单元和获取单元,其中, 所述第一生成单元,用于根据所述查询条件,扫描所述查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,所述涉及到的数据列中满足的查询条件的在所述条件位图相应行的值是有效的,所述涉及到的数据列中不满足的查询条件的在所述条件位图相应行的值是无效的; 所述第二生成单元,用于根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述复制的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,用于根据所述查询位图,获得满足所述查询条件的和所述标记列的标记位是有效的查询结果。`
3.如权利要求2所述的处理设备,其特征在于,所述第二生成单元,具体用于当所述标记列为位图,将所述标记列和所述一个以上的条件位图进行相与运算,生成查询位图,其中,所述标记列的标记位的值,条件位图的每行的值,以及查询位图每行的值为O或I。
4.如权利要求2所述的处理设备,其特征在于,所述查询模块还包括确定单元,其中, 所述确定单元,用于确定存在事务提交时标记列的待进行的修改,所述事务为所述查询请求所在的事务,在临时存储区域中存储所述标记列,将所述存储的标记列作为所述查询请求的私有标记列,并根据所述事务提交时标记列的待进行的修改,更新所述私有标记列,使得所述更新后的私有标记列的被修改的标记位的值表示了所述事务中当前所述标记位对应的数据的有效性; 所述第二生成单元,具体用于根据所述更新后的私有标记列和所述一个以上的条件位图,生成查询位图,其中,当所述更新后的私有标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述更新后的私有标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,具体用于根据所述查询位图,获得满足所述查询条件和所述更新后的私有标记列的标记位是有效的的查询结果。
5.如权利要求2所述的处理设备,其特征在于,所述查询模块还包括确定单元,其中,所述确定单元,还用于确定不存在事务提交时标记列的待进行的修改时,所述事务为所述查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将所述存储在临时存储区域中的标记列作为另一个共享标记列,并设置所述另一个共享标记列的版本号与所述查询请求的对应关系,如果所述已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置所述已存储的共享标记列的版本号与所述查询请求的对应关系; 所述第二生成单元,具体用于根据共享标记列的版本号与所述查询请求的对应关系,在临时存储区域中确定所述查询请求对应的共享标记列,根据所述查询请求对应的共享标记列和所述一个以上的条件位图,生成查询位图,其中,当所述查询请求对应的共享的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述查询请求对应的标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,具体用于根据所述查询位图,获得满足所述查询条件和所述查询请求对应的标记列的标记位是有效的的查询结果。
6.如权利要求4或5所述的处理设备,其特征在于,所述查询模块还包括锁处理单元,用于在所述复制标记列之前,对所述标记列加排他锁,在所述复制标记列之后,对所述标记列解排他锁。
7.如权利要求1所述的处理设备,其特征在于,还包括:修改模块,记录模块和提交模块;其中, 所述接口模块,还用于在一个事务中,接收应用程序发送的修改请求,所述修改请求包含了修改条件,并将修改请求发送给修改模块; 所述修改模块,用于接收所述接口模块发送的修改请求,根据所述修改条件,对所述标记列和所述一个以上的数据列 进行修改处理; 所述记录模块,用于记录所述事务提交时标记列的待进行的修改; 所述提交模块,用于提交所述事务时,按照所述记录的所述事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在所述修改处理后与所述标记位处于同一行的数据的有效性; 所述接口模块,还用于向所述应用程序发送所述修改响应。
8.如权利要求7所述的处理设备,其特征在于,所述修改模块包括更新单元,用于当所述修改请求具体为更新请求,所述修改条件具体为更新条件时,在所述一个以上的数据列中,查询到满足所述更新条件的数据,其中,所述满足所述更新条件的数据所在行的标记位的值是有效的;在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述更新条件中需要更新的行数是相同的;将在所述一个以上的数据列中,满足更新条件的数据所在行的数据,分别复制到所述新增行中,并将所述新增行的标记位的值设置为无效;根据所述更新条件,在所述新增行中,将待更新的数据进行修改; 所述记录模块,具体用于记录所述事务提交时,需要将所述满足更新条件的数据所在行的标记位的值修改为无效,将所述新增行的标记位的值修改为有效。
9.如权利要求8所述的处理设备,其特征在于,所述修改模块包括行号处理单元,用于当所述列式数据库还包括行号列,所述行号列存储了各行的行号时,将所述新增行的行号设置为所述满足更新条件的数据所在行的行号。
10.如权利要求7所述的处理设备,其特征在于,所述修改模块包括插入单元,用于当修改请求具体为插入请求,所述修改条件具体为插入条件时,根据所述插入条件,在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述插入条件中需要插入的行数是相同的;在所述新增行中添加数据,并设置所述新增行的标记位为无效; 所述记录模块,具有用于记录所述事务提交时,需要将所述新增行的标记位的值修改为有效。
11.如权利要求7所述的处理设备,其特征在于,所述修改模块包括删除单元,用于当所述修改请求具体为删除请求,所述修改条件具体为删除条件时,在所述一个以上的数据列中,查询到满足所述删除条件的数据; 所述记录模块,用于记录所述事务提交时,需要将所述满足所述删除条件的数据所在行的标记位的值修改为无效。
12.—种处理设备,其特征在于,包括接口模块,修改模块,记录模块和提交模块,其中, 所述接口模块,用于在一个事务中,接收应用程序发送的修改请求,所述修改请求包含 了对列式数据库的修改条件,并将所述修改请求发送给修改模块,其中所述数据列按照列存储的方式存储具体数据,所述列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与所述标记位处于同一行数据的有效性; 所述修改模块,用于根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理; 所述记录模块,用于记录所述事务提交时标记列的待进行的修改; 所述提交模块,用于提交所述事务时,按照所述记录的所述事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在所述修改处理后与所述标记位处于同一行的数据的有效性。
13.如权利要求12所述的处理设备,其特征在于,所述修改模块包括更新单元,用于当所述修改请求具体为更新请求,所述修改条件具体为更新条件时,在所述一个以上的数据列中,查询到满足所述更新条件的数据,其中,所述满足所述更新条件的数据所在行的标记位的值是有效的;在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述更新条件中需要更新的行数是相同的;将在所述一个以上的数据列中,满足更新条件的数据所在行的数据,分别复制到所述新增行中,并将所述新增行的标记位的值设置为无效;根据所述更新条件,在所述新增行中,将待更新的数据进行修改; 所述记录模块,具体用于记录所述事务提交时,需要将所述满足更新条件的数据所在行的标记位的值修改为无效,将所述新增行的标记位的值修改为有效。
14.如权利要求13所述的处理设备,其特征在于,所述修改模块包括行号处理单元,用于当所述列式数据库还包括行号列,所述行号列存储了各行的行号时,将所述新增行的行号设置为所述满足更新条件的数据所在行的行号。
15.如权利要求12所述的处理设备,其特征在于,所述修改模块包括插入单元,用于当修改请求具体为插入请求,所述修改条件具体为插入条件时,根据所述插入条件,在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述插入条件中需要插入的行数是相同的;在所述新增行中添加数据,并设置所述新增行的标记位为无效;所述记录模块,具有用于记录所述事务提交时,需要将所述新增行的标记位的值修改为有效。
16.如权利要求11所述的处理设备,其特征在于,所述修改模块包括删除单元,用于当所述修改请求具体为删除请求,所述修改条件具体为删除条件时,在所述一个以上的数据列中,查询到满足所述删除条件的数据; 所述记录模块,用于记录所述事务提交时,需要将所述满足所述删除条件的数据所在行的标记位的值修改为无效。
17.如权利要求12所述的处理设备,其特征在于,还包括:查询模块,其中, 所述接口模块,还用于接收应用程序发送的查询请求,所述查询请求包含了对列式数据库的查询条件,并将所述查询请求发送给所述查询模块; 所述查询模块,用于根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果;并将所述查询结果发送给所述接口模块; 所述接口模块,还用于接收所述查询模块发送的查询结果,向所述应用程序发送所述查询结果。
18.如权利要求17所述的处理设备,其特征在于,所述查询模块包括第一生成单元,第二生成单元和获取单元,其中, 所述第一生成单元,用于根据所述查询条件,扫描所述查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,所述涉及到的数据列中满足的查询条件的在所述条件位图相应行的值是有效的,所述涉及到的数据列中不满足的查询条件的在所述条件位图相应行的值是无效的; 所述第二生成单元,用于根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述复制的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,用于根据所述查询位图,获得满足所述查询条件的和所述标记列的标记位是有效的查询结果。
19.如权利要求18所述的处理设备,其特征在于,所述第二生成单元,具体用于当所述标记列为位图,将所述标记列和所述一个以上的条件位图进行相与运算,生成查询位图,其中,所述标记列的标记位的值,条件位图的每行的值,以及查询位图每行的值为O或I。
20.如权利要求18所述的处理设备,其特征在于,所述查询模块还包括确定单元,其中, 所述确定单元,用于确定存在事务提交时标记列的待进行的修改,所述事务为所述查询请求所在的事务,在临时存储区域中存储所述标记列,将所述存储的标记列作为所述查询请求的私有标记列,并根据所述事务提交时标记列的待进行的修改,更新所述私有标记列,使得所述更新后的私有标记列的被修改的标记位的值表示了所述事务中当前所述标记位对应的数据的有效性; 所述第二生成单元,具体用于根据所述更新后的私有标记列和所述一个以上的条件位图,生成查询位图,其中,当所述更新后的私有标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述更新后的私有标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,具体用于根据所述查询位图,获得满足所述查询条件和所述更新后的私有标记列的标记位是有效的的查询结果。
21.如权利要求18所述的处理设备,其特征在于,所述查询模块还包括确定单元,其中, 所述确定单元,用于确定不存在事务提交时标记列的待进行的修改时,所述事务为所述查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将所述存储在临时存储区域中的标记列作为另一个共享标记列,并设置所述另一个共享标记列的版本号与所述查询请求的对应关系,如果所述已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置所述已存储的共享标记列的版本号与所述查询请求的对应关系; 所述第二生成单元,具体用于根据共享标记列的版本号与所述查询请求的对应关系,在临时存储区域中确定所述查询请求对应的共享标记列,根据所述查询请求对应的共享标记列和所述一个以上的条件位图,生成查询位图,其中,当所述查询请求对应的共享的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述查询请求对应的标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 所述获取单元,具体用于根据所述查询位图,获得满足所述查询条件和所述查询请求对应的标记列的标记位是有效的的查询结果。
22.—种列式数据库处理方法,其特征在于,所述列式数据库包含了标记列和一个以上的数据列,其中,所述数据列按照列存储的方式存储具体数据,所述标记列的每行标记位的值用于表示了与所述标记位处 于同一行数据的有效性,所述方法包括: 接收应用程序发送的查询请求,所述查询请求包含了查询条件; 根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果; 向所述应用程序发送所述查询结果。
23.如权利要求22所述的方法,其特征在于,所述根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果,具体包括: 根据所述查询条件,扫描所述查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,所述涉及到的数据列中满足的查询条件的在所述条件位图相应行的值是有效的,所述涉及到的数据列中不满足的查询条件的在所述条件位图相应行的值是无效的; 根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 根据所述查询位图,获得满足所述查询条件和所述标记列的标记位是有效的查询结果。
24.如权利要求23所述的方法,其特征在于,所述标记列为位图,根据所述标记列和所述一个以上的条件位图,生成查询位图,具体包括: 将所述标记列和所述一个以上的条件位图进行相与运算,生成查询位图,其中,所述标记列的标记位的值,条件位图的每行的值,以及查询位图每行的值为O或I。
25.如权利要求23的所述的方法,其特征在于,在根据所述查询条件,扫描所述查询条件所涉及到的数据列之前,还包括: 确定存在事务提交时标记列的待进行的修改,所述事务为所述查询请求所在的事务,在临时存储区域中存储所述标记列,将所述存储的标记列作为所述查询请求的私有标记列,并根据所述事务提交时标记列的待进行的修改,更新所述私有标记列,使得所述更新后的私有标记列的被修改的标记位的值表示了所述事务中当前所述标记位对应的数据的有效性; 所述根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述标记列的标记位是有效的的查询结果,具体为: 根据所述更新后的私有标记列和所述一个以上的条件位图,生成查询位图,其中,当所述更新后的私有标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述更新后的私有标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述更新后的私有标记列的标记位是有效的的查询结果。
26.如权利要求23的所述的方法,其特征在于,在根据所述查询条件,扫描所述查询条件所涉及到的数据列之前,`还包括: 确定不存在事务提交时标记列的待进行的修改时,所述事务为所述查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将所述存储在临时存储区域中的标记列作为另Iv共孚标记列,并设置所述另一个共享标记列的版本号与所述查询请求的对应关系,如果所述已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置所述已存储的共享标记列的版本号与所述查询请求的对应关系; 所述根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述标记列的标记位是有效的的查询结果,具体为: 根据共享标记列的版本号与所述查询请求的对应关系,在临时存储区域中确定所述查询请求对应的共享标记列,根据所述查询请求对应的共享标记列和所述一个以上的条件位图,生成查询位图,其中,当所述查询请求对应的共享的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述查询请求对应的标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述查询请求对应的标记列的标记位是有效的的查询结果。
27.如权利要求25所述的方法,其特征在于,在所述复制标记列之前,还包括:对所述标记列加排他锁;在所述复制标记列之后,还包括:对所述标记列解排他锁。
28.如权利要求22所述的方法,其特征在于,所述方法还包括: 在一个事务中,接收应用程序发送的修改请求,所述修改请求包含了修改条件; 根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改; 提交所述事务时,按照所述记录的所述事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在所述修改处理后与所述标记位处于同一行的数据的有效性; 向所述应用程序发送所述修改响应。
29.如权利要求28所述的方法,其特征在于,所述修改请求具体为更新请求,所述修改条件具体为更新条件; 所述根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改,具体包括: 在所述一个以上的数据列中,查询到满足所述更新条件的数据,其中,所述满足所述更新条件的数据所在行的标记位的值是有效的; 在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述更新条件中需要更新的行数是相同的; 将在所述一个以上的数据列中,满足更新条件的数据所在行的数据,分别复制到所述新增行中,并将所述新增行的标记位的值设置为无效; 根据所述更新条件,在所述新增行中,将待更新的数据进行修改; 记录所述事务提交时,需要将所述满足更新条件的数据所在行的标记位的值修改为无效,将所述新增行的标记位的值修改为有效。
30.如权利要求28所述的方法,其特征在于,所述列式数据库还包括行号列,所述行号列存储了各行的行号;所述方法还包括:将所述新增行的行号设置为所述满足更新条件的数据所在行的行号。
31.如权利要求28所述的方法,其特征在于,所述修改请求具体为插入请求,所述修改条件具体为插入条件; 所述根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改,具体包括: 根据所述插入条件,在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述插入条件中需要插入的行数是相同的;在所述新增行中添加数据,并设置所述新增行的标记位为无效; 记录所述事务提交时,需要将所述新增行的标记位的值修改为有效。
32.—种列式数据库处理方法,其特征在于,所述列式数据库包含了标记列和一个以上的数据列,其中,所述数据列按照列存储的方式存储具体数据,所述标记列的每行标记位的值用于表示了与所述标记位处于同一行数据的有效性,所述方法包括: 在一个事务中,接收应用程序发送的修改请求,所述修改请求包含了修改条件; 根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改; 提交所述事务时,按照所述记录的所述事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在所述修改处理后与所述标记位处于同一行的数据的有效性。
33.如权利要求32所述的方法,其特征在于,所述修改请求具体为更新请求,所述修改条件具体为更新条件; 所述根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改,具体包括: 在所述一个以上的数据列中,查询到满足所述更新条件的数据,其中,所述满足所述更新条件的数据所在行的标记位的值是有效的; 在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述更新条件中需要更新的行数是相同的; 将在所述一个以上的数据列中,满足更新条件的数据所在行的数据,分别复制到所述新增行中,并将所述新增行的标记位的值设置为无效; 根据所述更新条件,在所述新增行中,将待更新的数据进行修改; 记录所述事务提交时,需要 将所述满足更新条件的数据所在行的标记位的值修改为无效,将所述新增行的标记位的值修改为有效。
34.如权利要求33所述的方法,其特征在于,所述列式数据库还包括行号列,所述行号列存储了各行的行号; 所述方法还包括:将所述新增行的行号设置为所述满足更新条件的数据所在行的行号。
35.如权利要求32所述的方法,其特征在于,所述修改请求具体为插入请求,所述修改条件具体为插入条件; 所述根据所述修改条件,对所述标记列和所述一个以上的数据列进行修改处理,记录所述事务提交时标记列的待进行的修改,具体包括: 根据所述插入条件,在所述一个以上的数据列和所述标记列上添加新增行,所述新增行的行数与所述插入条件中需要插入的行数是相同的;在所述新增行中添加数据,并设置所述新增行的标记位为无效; 记录所述事务提交时,需要将所述新增行的标记位的值修改为有效。
36.如权利要求32所述的方法,其特征在于,所述方法还包括: 接收应用程序发送的查询请求,所述查询请求包含了查询条件; 根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果; 向所述应用程序发送所述查询结果。
37.如权利要求36所述的方法,其特征在于,所述根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果,具体包括: 根据所述查询条件,扫描所述查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,所述涉及到的数据列中满足的查询条件的在所述条件位图相应行的值是有效的,所述涉及到的数据列中不满足的查询条件的在所述条件位图相应行的值是无效的; 根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述复制的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的; 根据所述查询位图,获得满足所述查询条件的查询结果。
38.如权利要求37所述的方法,其特征在于,所述标记列为位图,根据所述标记列和所述一个以上的条件位图,生成查询位图,具体包括: 将所述标记列和所述一个以上的条件位图进行相与运算,生成查询位图,其中,所述标记列的标记位的值,条件位图的每行的值,以及查询位图每行的值为O或I。
39.如权利要求36-38的任一所述的方法,其特征在于,在根据所述查询条件,扫描所述查询条件所涉及到的数据列之前,还包括: 确定存在事务提交时标记列的待进行的修改,所述事务为所述查询请求所在的事务,在临时存储区域中存储所述标记列,将所述存储的标记列作为所述查询请求的私有标记列,并根据所述事务提交时标记列的待进行的修改,更新所述私有标记列,使得所述更新后的私有标记列的被修改的标记位的值表示了所述事务中当前所述标记位对应的数据的有效性; 所述根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述标记列的标记位是有效的的查询结果,具体为: 根据所述更新后的私有标记列和所述一个以上的条件位图,生成查询位图,其中,当所述更新后的私有标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述更新后的私有标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述更新后的私有标记列的标记位是有效的的查询结果。
40.如权利要求36-38的任一所述的方法,其特征在于,在根据所述查询条件,扫描所述查询条件所涉及到的数据列之前,还包括: 确定不存在事务提交时标记列的待进行的修改时,所述事务为所述查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将所述存储在临时存储区域中的标记列作为另Iv共孚标记列,并设置所述另一个共享标记列的版本号与所述查询请求的对应关系,如果所述已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置所述已存储的共享标记列的版本号与所述查询请求的对应关系; 所述根据所述标记列和所述一个以上的条件位图,生成查询位图,其中,当所述标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述标记列的标记位是有效的的查询结果,具体为: 根据共享标记列的版本号与所述查询请求的对应关系,在临时存储区域中确定所述查询请求对应的共享标记列,根据所述查询请求对应的共享标记列和所述一个以上的条件位图,生成查询位图,其中,当所述查询请求对应的共享的标记列和所述条件位图的同一行的值均为有效值时,所述查询位图同一行的值是有效的,当所述查询请求对应的标记列和所述条件位图的同一行的值不全是有效值时,所述查询位图同一行的值是无效的;根据所述查询位图,获得满足所述查询条件和所述查询请求对应的标记列的标记位是有效的的查询结果。
41.如权利要求39或40的方法,其特征在于,还包括:在所述复制标记列之前,还包括:对所述标记列加排他锁; 在所述复制标记列之后, 还包括:对所述标记列解排他锁。
【文档编号】G06F17/30GK103678556SQ201310656482
【公开日】2014年3月26日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】吴继敏, 张庆, 刘成华, 邓勇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1