列式数据库处理的方法和处理设备技术

技术编号:9865894 阅读:68 留言:0更新日期:2014-04-03 01:18
本发明专利技术实施例提供一种列式数据库处理方法,列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性,方法包括:接收应用程序发送的查询请求,查询请求包含了查询条件;根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果;向应用程序发送查询结果。这样由于列式数据库是按照列式存储的,因此查询效率将会显著提升。

【技术实现步骤摘要】
列式数据库处理的方法和处理设备
本专利技术实施例涉及数据库技术,尤其涉及一种列式数据库处理的方法和处理设备。
技术介绍
列式数据库是以列相关存储架构进行数据存储的数据库,每个列的数据独立紧密存放,一行数据的不同列分别存放在不同的数据区。列式数据库的存储分为两个区域:行区和列区。其中,列区存储原始数据;行区存储由数据操纵语言(Data Manipulation Language, DML)事务操作产生的新数据。虽然数据按列组织,但在实际要求数据是行一致的,因此在做数据修改时,涉及到不同列的修改,在这个过程中仍然需要在行区保证事务的ACID属性。例如,列式数据库接收一个更新操作请求,其SQL语句如下:UPDATE TABLEl SETF2=10 WHERE F3〈20,则列式数据库将执行如下操作:1、扫描TABLE1,记录满足F3〈20条件所在的行号。2、对该行号进行加排他锁,使之不能被其他session修改。3、将此行号的所有字段读取出来,并将F2的值改为10,然后拼成行记录格式。4、将该行记录格式保存到行存区,本次数据更新完成,释放该行号的排他锁。由于列式数据库中,一些数据是存储在行区上的,因此当列式数据库接收到查询请求时,需要判断session的需要逐条判断此记录是否提交,例如:SELECT F2 FROM TABLElWHERE F3〈20的步骤为:1、扫描TABLEl列区,记录满足F3〈20条件的所在的行号。2、判断上述记录的行号是否已被修改,如果记录的行号没有被修改,则在列区读取F2的值,如果该记录的行号已经被修改,则需要到行区读取已经被修改的新记录;3、在行区判断最新版本是否是本session修改的,是则返回最新版本,不是则返回上个已提交版本。4、列区扫描完成之后,扫描行区部分新增数据,确定是否有满足F3〈20条件,如果有,则输出F2的值。从上述论述可知,目前的现有技术的列式数据库的事务处理必须同时涉及到行区和列区,当在列式数据库进行数据查询时,由于列式数据库有行区的存在,需要逐行扫描行区的数据,这样会导致列式数据库的查询效率降低,特别是大数据库容量情况,查询效率将下降的非常多。
技术实现思路
本专利技术实施例提供一种列式数据库处理的方法和处理设备,解决了上述现有技术中,列式数据库的事务处理必须涉及到行区的技术问题。第一个方面,本专利技术提供了一种处理设备,包括:接口模块,用于接收应用程序发送的查询请求,所述查询请求包含了对列式数据库的查询条件,并将所述查询请求发送给查询模块,其中所述数据列按照列存储的方式存储具体数据,所述列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与所述标记位处于同一行数据的有效性;查询模块,用于根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果;并将所述查询结果发送给所述接口模块;所述接口模块,还用于接收所述查询模块发送的查询结果,向所述应用程序发送所述查询结果。在第一个方面的第一种可能的实现方式中,查询模块包括第一生成单元,第二生成单元和获取单元,其中,第一生成单元,用于根据查询条件,扫描查询条件所涉及到的数据列,并生成一个以上的条件位图,其中,涉及到的数据列中满足的查询条件的在条件位图相应行的值是有效的,涉及到的数据列中不满足的查询条件的在条件位图相应行的值是无效的;第二生成单元,用于根据标记列和一个以上的条件位图,生成查询位图,其中,当复制的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,用于根据查询位图,获得满足查询条件的和标记列的标记位是有效的查询结果。结合在第一个方面的第一种可能的实现方式中,第二种可能实现方式为:查询模块还包括确定单元,其中,确定单元,用于确定存在事务提交时标记列的待进行的修改,事务为查询请求所在的事务,在临时存储区域中存储标记列,将存储的标记列作为查询请求的私有标记列,并根据事务提交时标记列的待进行的修改,更新私有标记列,使得更新后的私有标记列的被修改的标记位的值表示了事务中当前标记位对应的数据的有效性;第二生成单元,具体用于根据更新后的私有标记列和一个以上的条件位图,生成查询位图,其中,当更新后的私有标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当更新后的私有标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,具体用于根据查询位图,获得满足查询条件和更新后的私有标记列的标记位是有效的的查询结果。结合在第一个方面的第一种可能的实现方式中,第三种可能的实现方式为:确定单元,还用于确定不存在事务提交时标记列的待进行的修改时,事务为查询请求所在的事务,当临时存储区域中未存储共享标记列或者当临时存储区域中已存储的共享标记列的版本号与表头中的标记列的版本号不相同时,将数据存储区域中的标记列版本号和标记列存储在临时存储区域中,将存储的标记列作为另一个共享标记列,并设置另一个共享标记列的版本号与查询请求的对应关系,如果已存储的共享标记列的版本号与表头中的标记列的版本号相同,设置已存储的共享标记列的版本号与查询请求的对应关系;第二生成单元,具体用于根据共享标记列的版本号与查询请求的对应关系,在临时存储区域中确定查询请求对应的共享标记列,根据查询请求对应的共享标记列和一个以上的条件位图,生成查询位图,其中,当查询请求对应的共享的标记列和条件位图的同一行的值均为有效值时,查询位图同一行的值是有效的,当查询请求对应的标记列和条件位图的同一行的值不全是有效值时,查询位图同一行的值是无效的;获取单元,具体用于根据查询位图,获得满足查询条件和查询请求对应的标记列的标记位是有效的的查询结果。第二个方面,本专利技术还提供了另一种处理设备,包括接口模块,修改模块,记录模块和提交模块,其中,接口模块,用于在一个事务中,接收应用程序发送的修改请求,修改请求包含了对列式数据库的修改条件,并将修改请求发送给修改模块,其中数据列按照列存储的方式存储具体数据,列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与标记位处于同一行数据的有效性;修改模块,用于根据修改条件,对标记列和一个以上的数据列进行修改处理;记录模块,用于记录事务提交时标记列的待进行的修改;提交模块,用于提交事务时,按照记录的事务提交时标记列的待进行的修改,对标记列进行相应修改,使得修改后的标记列每行标记位的值表示了在修改处理后与标记位处于同一行的数据的有效性。第三个方面,本专利技术还提供了一种列式数据库处理方法,列式数据库包含了标记列和一个以上的数据列,其中,数据列按照列存储的方式存储具体数据,标记列的每行标记位的值用于表示了与标记位处于同一行数据的有效性,方法包括:接收应用程序发送的查询请求,查询请求包含了查询条件;根据标记列和查询条件,在一个以上的数据列上进行查询,获得同时满足查询条件和标记列的标记位是有效的查询结果;向应用程序发送查询结果。在第三方面的第一种可能的实现方式中,根据标记列和查询条件,在一个以上的数据列上进本文档来自技高网
...
列式数据库处理的方法和处理设备

【技术保护点】
一种处理设备,其特征在于,包括:接口模块,用于接收应用程序发送的查询请求,所述查询请求包含了对列式数据库的查询条件,并将所述查询请求发送给查询模块,其中所述数据列按照列存储的方式存储具体数据,所述列式数据库包含了标记列和一个以上的数据列,其中,标记列的每行标记位的值用于表示与所述标记位处于同一行数据的有效性;查询模块,用于根据所述标记列和所述查询条件,在所述一个以上的数据列上进行查询,获得同时满足所述查询条件和所述标记列的标记位是有效的查询结果;并将所述查询结果发送给所述接口模块;所述接口模块,还用于接收所述查询模块发送的查询结果,向所述应用程序发送所述查询结果。

【技术特征摘要】
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.—种列式数据库处理方法,其特征在于,所述列式数据库包含了标记列和一个以上的数据列,其中,所述数据列按照列存储的方式存储具体数据,所述标记列的每行标记位的值用于表示了与所述标记位处 于同一行数...

【专利技术属性】
技术研发人员:吴继敏张庆刘成华邓勇
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1