数据库处理设备、数据库处理方法及记录介质的制作方法

文档序号:6366608阅读:171来源:国知局
专利名称:数据库处理设备、数据库处理方法及记录介质的制作方法
技术领域
本发明涉及基于通用计算图形处理单元(GPGPU)的数据库技术。
背景技术
近年来,GPGPU技术受到关注,其使得诸如图形处理单元(GPU)的并行运算单元执行通用运算处理。在运算单元的并行度与并行操作的吞吐量方面,GPU比中央处理单元(CPU)高。此外,GPU具有与SMD运算单元的配置相类似的配置,来为多个运算单元提供指令。为了展现出采用GPGPU的高处理性能,要求使分支指令的数目较小,也要求不仅使某组运算单元中的一个运算单元的数据供应量与其它运算单元的数据供应量相一致,还要求保持要供应的数据的连续性。可以想到,基于列存储的数据结构是适于由诸如GPGPU之类的并行运算单元执行 的处理的结构。由于列存储而将固定长度数据的数据处理表示为逐列的固定长度的序列,从而为GPGPU的数据处理提供足够的数据。例如,对于一个大规模文本,在非专利文献I中公开了在GPGPU的帮助下对该文本内容执行全文本研究的技术。HIGASHI RYUICHI,FUJM0T0 N0RIYUKI,和 HAGIWARA KENICHI“An Investigationof CUDA based Fast Full Text Search for Large-Scale Texts on Main Memory,,,TheInstitute of Electronics, Information 和 Communication Engineers, InformationProcessing Society of Japan, No. 19, 2008, ppl39_144 (非专利文献 I)。然而,还没有实现用于有效存储包括可变长度数据的数据组的数据库及有效处理这种数据库的数据库处理方法。

发明内容
在考虑了上述问题的情况下实现了本发明,本发明的目的在于提供数据库处理系统,数据处理方法,本发明的方法可以通过采用并行运算单元实现对可变长度数据的有效数据库处理。本发明是数据库处理设备,包括并行运算单元;数据存储部件,其决定对应所述并行运算单元的数据处理的单位的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中;以及并行运算部件,当对所述列存储数据库中存储的数据执行处理时,其参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将分段分配给所述每个线程,并使每个线程执行并行运算操作。本发明是在包括并行运算单元的数据库处理设备中的数据库处理方法,包括数据存储步骤,决定对应并行运算单元的数据处理的单位的分段长度,以及相应地将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中;以及并行运算步骤,当对所述列存储数据库中存储的数据执行处理时,参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将分段分配给所述每个线程,并使每个线程执行并行运算操作。本发明是存储了程序的非临时性计算机可读存储介质,该程序用于使包括并行计算单元的计算机执行以下处理数据存储处理,决定对应并行运算单元的数据处理的单位的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中;以及并行运算处理,当对所述列存储数据库中存储的数据执行处理时,参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将分段分配给所述每个线程,并使每个线程执行并行运算操作。 根据本发明,也可以通过采用并行运算单元来实现对可变长度数据的有效数据库处理。


·通过阅读以下详细描述和附图,本发明的这些和其它的目的、特征和有效效果将变得更明显,其中图I是根据本发明示例实施例的数据库系统的系统配置的示意图;图2是示出了数据库的数据结构的一个示例的视图;图3是用于说明数据库系统操作的流程图;图4是用于举例说明在存储区域中记录的检索处理结果的视图;图5是用于举例说明在预定存储区域中记录的再处理结果的视图;图6是用于举例说明该数据库系统的操作的概要的视图;图7是用于说明分配分段的过程的流程图;以及图8是用于说明准备数据的过程的流程图。
具体实施例方式
在下文中,将参考

本发明的示例实施例。图I是根据本发明示例实施例的数据库系统的系统配置的示意图。如图所示,该系统包括经由诸如局域网(LAN)之类的网络相连的数据库10和数据库处理设备20。数据库10是列存储数据库。数据库10的管理的单位是元组、列、表和模式,可以以多个数的形式将其中的每一种单位存储到高阶的结构中。元组包括数据库内某一行的数据。以元组为单位将特定列的数据存储在某一列存储器中。数据库处理设备20包括主机、协处理器(并行运算单元)等。数据库处理设备20包括并行运算单元环境检测部件21、可变长度数据存储长度决定部件22、可变长度数据存储/处理部件23、并行运算处理部件24和数据处理结果存储/再处理部件25。并行运算单元环境检测部件21获取与该设备的并行运算单元(GPU)的处理能力相关联的信息(数据处理的单位等)。可变长度数据存储长度决定部件22基于并行运算单元环境检测部件21获取的信息决定数据库10中的数据存储的长度(分段长度)。可变长度数据存储/处理部件23基于可变长度数据存储长度决定部件22决定的数据存储长度将数据存入数据库10中。将包括固定长度数据的可变长度元组数据(列元组)存入固定长度的分段中,其中该可变长度元组数据的单位是列单位。必要的话,将某些列的元组数据存入由多个分段组成的分段集合中。图2中示出了数据库10的数据结构的一个示例。如图所示,存入数据库10的数据包括分段和附着于该分段的分段报头。分段具有存储的一列元组的部分数据或全部数据。分段报头具有与存储的列元组相关联的元数据。务必连续存储属于相同元组的分段。分段报头是指示编号(ctid)以及该分段的最后部分的数据位置距离元组的开始位置的偏移量(长度),其中该编号示出了对列元组的部分数据进行存储的顺序。尽管就分段集合内的每一列而言,分段长度可以是固定长度,但是对于每列或每个分段集合,可以独立地设置分段长度。可变长度数据存储长度决定部件22测量列或分段集合内出现的数据长度,从而使得引入与并行运算单元的处理能力相匹配的分段长度成为可能,其中,该并行运算单元的处理效率或空间效率能够通过采用适当的算法而提高。例如,可变长度数据存储长度决定部件22可以设置适于并行运算单元的数据处理的单位的数据长度(4字节长度、8字节长度、16字节长度、32字节长度、64字节长度等)作为存储长 度。此外,可变长度数据存储长度决定部件22可以设置可变长度数据的数据长度的平均值,并且还可以将数据长度设置成适于并行运算单元的数据处理的单位的上述平均值的近似值,作为存储长度。并行运算处理部件24对数据库10中存储的数据执行并行运算处理。数据处理结果存储/再处理部件25处理由并行运算处理部件24得到的运算结果。接下来,作为示例,将利用从数据库10检索某些字符序列的情形,来说明根据本示例实施例的数据库系统的操作。对于检索的执行过程,存在情形I以及情形2,在情形I中,需要重复分段的处理,在情形2中,不需要重复分段的处理。上述情形I包括以下情形,即作为检索目标的字符序列(可变长度字节序列)长于分段的处理/存储的单位的字节长度,以及数据库中作为检索目标的元组配置有多个分段。在这种情况下,通过使每个线程负责成对的分段来执行多阶段处理。第N个线程负责第N个分段和第(N+1)个分段,第(N+1)个线程负责第(N+1)个分段和(N+2)分段。最后一个线程负责最后一个分段。上述情形2包括在如下情形下检索,即每次可以以最短长度(字节)的管理单位使目标数据进入分段,以及在如下情形下的检索,即对于所有分段,一个分段可以分别地构成元组。这些检索的执行过程可以作为上述情形I的特定示例而执行,从而使能了快速的处理,原因在于没有使处理阶段的数目是复数个。因此,在下文中,将通过参考图3,以上述情形I为中心来进行说明。首先,并行运算处理部件24获得用于存储检索过程的结果集的区域(步骤SI)。针对分段内的每个字节,向用于获得检索结果的区域提供比特,以处理多个命中结果等。具体地,在用于存储结果集的区域中,将与作为检索目标的字节序列的第一字节对等的比特位置反转。并行运算处理部件24通过参考附着于分段的元数据来决定要分配给由并行运算单元执行的每个线程的分段(步骤2)。此时,一个线程处理的分段数目可以根据分段长度而改变。例如,通过设置字节的比特长度及分段的字节长度是8的最小公倍数,使得要获取的结果集没有空隙,并且还使得向所有线程提供的数据具有相同的长度。例如,对于分段长度是4字节的分段,可以向线程提供两个分段。对于分段长度是8字节的分段,可以向线程提供一个分段。对于分段长度是16字节的分段,可以向线程提供一个分段。此外,可以基于并行运算单元的数据处理的单位决定要分配给每个线程的分段。对于32比特的运算单元,设置要提供给每个线程的数据长度,使得其是32比特的倍数。基于在步骤S2中决定的内容来执行并行运算处理(步骤S3)。具体地,由每个线程执行以下处理。当向线程提供可变长度字节的序列(检索目标)时,计算作为检索目标的字节序列的长度。此外,向线程提供该线程应该负责的分段集的位置。线程执行以下检索过程顺序地加载指定分段,并且确定是否作为检索目标的字节序列出现在所加载的分段集中。 此外,对于执行检索处理的条件而言,当计算出在目前提供的顺序分段内存储的数据的总长度,并且满足了预定条件[等于或大于(检索的目标字节序列长度-I)的数据的总长度+顺序分段的数据长度]时,线程可以执行检索处理。即,对于执行检索处理的条件而言,当当前执行的分段内的未处理的数据长度长于检索目标的字节序列时,线程可以执行检索处理。当没有满足条件时,线程可以接连地加载下一分段,计算数据的总长度,并且确定是否计算得到的数据总长度满足上述条件。在检索过程中,假定的是,当作为检索目标的字节序列的开始偏移量存在于上述线程负责的开始分段内,并且与作为检索目标的字节序列的匹配区域中已经检测到一个元组ID时,则已经检测到作为检索目标的字节序列,将所述作为检索目标的字节序列的匹配区域的起始位置的比特反转,将得到的结果定义为检索处理结果。将得到的检索处理结果以线程为单位记录到经字节对齐的区域中。图4示出了将检索处理结果记录到预定存储区域的示例。接下来,数据处理结果存储/再处理部件25获得用于对重新计算处理的结果集加以存储的区域,以执行针对上述检索处理结果的重新计算处理(步骤S4)。对于重新计算的结果,为一个元组获得一个比特能力就足够了。即,需要如下大小的能力(元组数目*比特数目+对齐数目)。数据处理结果存储/再处理部件25决定要分配给每个线程的分段(步骤S5)。此时,通过将要分配给一个线程的元组数目设置为8的最小公倍数,即字节的比特长度,使得要获取的元组级别的结果集没有空隙,并且还使得向所有线程提供的数据具有相同的长度。此外,数据处理结果存储/再处理部件25可以基于并行运算单元的数据处理的单位决定要分配的分段。当并行运算单元的数据处理的单位是32比特时,可以设置要提供给每个线程的数据长度,使得其是32比特的倍数。基于在步骤S5中决定的内容执行并行运算处理(步骤S6)。具体地,由每个线程执行以下处理。向线程通知其负责的元组ID、其负责加载检索处理的结果集的位置、以及其负责分段集合的位置。每个线程针对其负责的元组ID执行以下处理。线程从通知的位置加载分段,并且计算该分段的元组ID。线程确定是否计算得到的元组ID是其负责的元组ID,以及当是其负责的元组ID时,加载相应的检索结果,以及当已经设立了标记时,线程确定在上述元组中存在作为检索目标的字节序列,并且设立元组级的标记。将该检索处理结果以线程为单位记录到经字节对齐的区域中。图5示出了将检索处理结果记录到预定存储区域的示例。这允许了是否要示出每个元组中存在的检索目标的字节序列。此外,图6示出了对上述数据库系统的操作的概要。在图6的示例中,将诸如“HELLO”、“parallel”、“GPU”和“GPGPU”之类的元组数据存储到数据库中的每个分段中。对于检索字节序列“GPU”的处理,并行运算处理部件24获得用于存储检索处理的结果的区域,并且基于元数据以及并行运算单元的数据处理的单位来决定要分配给由并行运算单元执行的每个线程的分段。基于该决定的内容将分段分配给每个线程。每个线程针对分配的分段执行检索字节序列“GPU”的运算操作,并且记录处理的结果。在图6中,在运算结果的记录区域中,将与已经检测到“GPU”的字节序列相对应的区域的开始位置中存在的比特反转。接下来,数据处理结果存储/再处理部件25获得用于存储通过重新计算运算结果而获得的处理结果的区域,并且决定要分配给每个线程的元组。此时,并行运算处理部件24将要分配给每个线程的元组数据设置为8的倍数。每个线程加载与所分配的元组相对应的、运算结果,以及当已经为加载的运算结果设立标记时,设立标记,以作为对上述元组的处理结果。在图6中,相应地设立标记“ I ”,作为处理“ 100”和“00100”的结果,其中“ 100”和“00100”是分别设立了标记的运算结果。接下来,将参考图7说明以下处理(上述步骤S2)的细节,即并行运算处理部件24决定要分配给每个线程的分段。并行运算处理部件24根据处理目标数据指定作为分配目标的分段,并且获取所述作为分配目标的分段的分段长度(步骤SI I)。并行运算处理部件24确定是否所述作为分配目标的分段的分段长度是预定数目(步骤S12),该预定数目是8的倍数(8与该分段的最小公倍数等)。当分段长度不是预定数目时(步骤S12 N0),并行运算处理部件24将处理目标数据的其它分段添加到分配目标分段中,再次计算分配目标分段的分段长度(步骤S13),并且返回步骤S12。当分段长度是预定数目时(步骤S12 :是),并行运算处理部件24将分配目标分段分配到线程之一(步骤S14)。并行运算处理部件24确定是否已经完成了对处理目标数据的所有分段的分配(步骤S15),以及当已经完成了分配时(步骤S15 :是),则完成处理。当还没有完成分配时(步骤S15 N0),则并行运算处理部件24返回步骤S11,并且继续为余下分段执行处理。此外,该处理是一个示例,可以采用其它分配处理。接下来,将参考图8说明以下处理,即可变长度数据存储/处理部件23将数据存入数据库10。可变长度数据存储/处理部件23加载存储目标数据(步骤S21)。要加载的数据是包括固定长度数据的可变长度元组数据,其中该可变长度元组数据的单位是列单位。可变长度数据存储/处理部件23将加载的元组数据存入数据库10的分段中(步骤S22)。分段具有固定长度,以及由可变长度数据存储长度决定部件22基于该系统采用的并行计算单元的数据处理的单位等来决定分段长度。可变长度数据存储/处理部件23将与存入分段的元组数据相对应的元数据存入数据库10的分段报头中(步骤S23)。元数据包括用于识别元组数据的ID以及上述分段的最后部分距离元组的开始位置的偏移量。可变长度数据存储/处理部件23确定是否已经完成将所有存储目标数据存入了数据库10 (步骤S24),以及当已经完成时(步骤S24:是),结束过程。当还没有完成时(步骤S24:否),则可变长度数据存储/处理部件23返回步骤S21,并且继续为余下数据执行处理。此外,该处理是一个示例,可以采用其它存储处理。此外,基于通用并行运算单元的数据处理的单位而预先设置的值(例如,4字节长度、8字节长度、16字节长度)可以用作分段的分段长度。如上所述,根据本示例实施例,保持空间效率与处理效率之间的平衡以在GPU上对可变长度数据执行有效处理,允许实现有效的处理。可以通过加载并执行在数据库处理设备20的CPU和协处理器中存储的操作程序等来实现根据以上描述的本发明示例实施例的并行运算单元环境检测部件21、可变长度数据存储长度决定部件22、可变长度数据存储/处理部件23、并行运算处理部件24和数据处理结果存储/再处理部件25,此外,并行运算单元环境检测部件21、可变长度数据存储长度决定部件22、可变长度数据存储/处理部件23、并行运算处理部件24和数据处理结果存储/再处理部件25还可以相应地配置有硬件。可以利用计算机程序实现上述示例实施例中的一部分实施例的功能。可以将上述示例实施例的全部或部分描述为,但不限于以下补充声明。
(补充声明I)列存储数据库的数据结构,数据库的上述数据结构包括分段,具备根据运算单元的数据处理的单位决定的固定长度,该分段具有元组数据,该元组数据包括在该分段中存储的可变长度数据;以及分段报头,指示对所述分段的顺序加以指示的编号以及所述分段的最后部分的数据的位置距离元组开始位置的偏移量。尽管已经参考本发明的示例实施例具体示出和描述了本发明,但本发明不限于这些实施例。本领域普通技术人员应当理解,在不脱离所附权利要求所限定的本发明的精神和范围的情况下,可以对这些实施例进行形式和细节上的多种改变。本申请是基于2011年3月24日提交的日本专利申请号2011-065171以及2012年3月5日提交的日本专利申请号2012-048079,并且要求享有其优先权的权益,在此并入其全部作为参考。
权利要求
1.一种数据库处理设备,包括 并行运算单元; 数据存储部件,决定与所述并行运算单元的数据处理的单位相对应的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中;以及 并行运算部件,当对所述列存储数据库中存储的数据执行处理时参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将所述分段分配给所述每个线程,并使每个线程执行并行运算操作。
2.根据权利要求I所述的数据库处理设备,其中所述并行运算部件包括 第一结果记录部件,使每个线程检索与分配的分段相关的字符序列,并且记录通过将所述分段的字节位置进行比特反转而获得的数据,以作为检索结果;以及 第二结果记录部件,向每个线程分配所述检索结果,使每个线程检测与所述分配的检索结果相关联的比特反转,并且记录检测结果作为元组级的检测结果,其中所述检索结果的数目与所述并行运算单元的数据处理的单位相对应。
3.一种数据库处理方法,用在包括并行运算单元的数据库处理设备中,所述方法包括 数据存储步骤,决定与并行运算单元的数据处理的单位相对应的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中;以及 并行运算步骤,当对所述列存储数据库中存储的数据执行处理时,参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将所述分段分配给所述每个线程,并使所述每个线程执行并行运算操作。
4.根据权利要求3所述的数据库处理方法,其中所述并行运算步骤包括 在每个线程中检索与分配的分段相关的字符序列,并且记录通过将所述分段的字节位置进行比特反转而获得的数据,以作为检索结果;以及 向每个线程分配所述检索结果,在每个线程中检测与所述分配的检索结果相关联的比特反转,并且记录检测结果作为元组级的检测结果,其中所述检索结果的数目与所述并行运算单元的数据处理的单位相对应。
5.一种存储了程序的非临时性计算机可读存储介质,所述程序用于使包括并行计算单元的计算机执行以下处理 数据存储处理,决定与并行运算单元的数据处理的单位相对应的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据存入所述列存储数据库中的分段报头中; 以及并行运算处理,当对所述列存储数据库中存储的数据执行处理时参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将所述分段分配给所述每个线程,并使每个线程执行并行运算操作。
6.根据权利要求5所述的程序,其中所述并行运算处理包括 在每个线程中检索与分配的分段相关的字符序列,并且记录通过将所述分段的字节位置进行比特反转而获得的数据,以作为检索结果;以及向每个线程分配所述检索结果,在每个线程中检测与所述分配的检索结果相关联的比特反转,并且记录检测结果作为元组级的检测结果,其中所述检索结果的数目与所述并行运算单元的数据处 理的单位相对应。
全文摘要
本发明为数据库处理设备、数据库处理方法及记录介质。本发明的数据库系统决定对应并行运算单元的数据处理的单位的分段长度,以及将包括可变长度数据的元组数据存入列存储数据库中的分段中,并将所述分段的元数据相应地存入所述列存储数据库中的分段报头中。当对列存储数据库中存储的数据执行处理时,数据库系统参考所述元数据,决定要分配给由所述并行运算单元执行的每个线程的分段,基于决定的内容将分段分配给每个线程,以及使每个线程执行并行运算操作。
文档编号G06F9/38GK102708145SQ20121007407
公开日2012年10月3日 申请日期2012年3月20日 优先权日2011年3月24日
发明者上村纯平, 柏木岳彦 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1