CN104598485A - 处理数据库表的方法和设备 - Google Patents
处理数据库表的方法和设备 Download PDFInfo
- Publication number
- CN104598485A CN104598485A CN201310535061.3A CN201310535061A CN104598485A CN 104598485 A CN104598485 A CN 104598485A CN 201310535061 A CN201310535061 A CN 201310535061A CN 104598485 A CN104598485 A CN 104598485A
- Authority
- CN
- China
- Prior art keywords
- value sequence
- train value
- row
- sequence
- train
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 title claims abstract description 26
- 230000008569 process Effects 0.000 claims description 35
- 230000008713 feedback mechanism Effects 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 5
- 239000002674 ointment Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 24
- 238000004590 computer program Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000005291 magnetic effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/36—Combined merging and sorting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了用于处理数据库表的方法和设备。所述方法包括:该方法包括:接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述候选列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;如果存在以所述选择列为主列,以所述排序列为从列的索引,则根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。采用根据本发明实施例的方案,可以提高对数据库表的处理效率。
Description
·技术领域
本发明涉及计算机技术,更具体地说,涉及处理数据库表的方法和设备。
·背景技术
数据库软件经常需要对数据库表进行多维处理。例如,考虑如下的SQL语句:
其中,T1是表的名称,其至少包括两列,即C1和C2。上述语句需要从C1和C2这两个维度处理所获取的数据。具体而言,上述语句从T1中选出C1的值为1、5、7或9的那些行;然后根据这些行中C2的值对这些行进行排序;最后取出排在最前面的4行。可以看出,上述语句既对列C1进行了处理,又对列C2进行了处理,所以属于二维处理。
假设T1如图2所示,其中灰色部分表示T1的实际内容。上述语句从T1中选出第1、5、7、9、11、15、17、19行;这些行中C2的值分别为43、34、55、23、76、23、65、54,其按照降序排列为76、65、55、54、43、34、23、23,因此最终取出的行是第11、17、9、19行。
实际的数据库中的表往往有非常多的行,从其中取出的C1值为1、5、7或9的行数目也非常大。按照C2的值对这些数目巨大的行进行排序是非常消耗系统资源的。
因此,需要一种新的处理数据库表的方案,可以提高对数据库表进行多维处理时的效率。
·发明内容
本发明实施例提供了处理数据库表的方法和设备。
根据本发明实施例的一种处理数据库表的方法,该方法包括:接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述候选列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;如果存在以所述选择列为主列,以所述排序列为从列的索引,则根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
根据本发明实施例的处理数据库表的设备包括:指令接收装置,配置为接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述候选列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;节点选择装置,配置为如果存在以所述选择列为主列,以所述排序列为从列的索引,则根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和归并排序装置,配置为对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
采用根据本发明实施例的方案,可以在多维处理中避免对数目巨大的值进行排序,从而提高了多维处理时的效率。
·附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1是适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图;
图2是示例性的数据库表;
图3是根据本发明实施例的处理数据库表的方法的流程图;
图4示出数据库表的索引的示意图;
图5A-图5D示出根据本发明实施例的语句执行过程;
图6示出排序运算的系统开销指数;
图7是根据本发明实施例的处理数据库表的方法的流程图;
图8是根据本发明实施例的处理数据库表的设备的方框图。
·具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、时频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
步骤301,接收对数据库表的至少两个列进行处理的多维处理指令。
行和列是与数据库表对应的基本概念。在本申请中,以纵向为列,横向为行进行说明和图示。但是,本领域技术人员可以理解,也可以以纵向为行,横向为列。因此,在本申请中的“行”和“列”只是表示数据库表中的两个互相垂直的方向,并且其中同一行的不同单元代表同一对象的不同属性的值,而同一列的不同单元代表不同对象的同一属性的值。
例如,在一个记录学生信息的数据库表中,会记载学生的姓名、年龄、学号等信息。同一学生的姓名、年龄、学号构成一行;不同学生的姓名构成一列。
所述两个列中的一个列用于选择需要排序的多个候选行,可以将该列称为选择列;另一个列用于对所述候选行进行排序,可以将该列称为排序列。以代码1中所给出的SQL语句为例,该指令指定C1用于选择需要排序的多个候选行,即行1、5、7、9、11、15、17、19;该指令还指定C2用于对所述候选行进行排序。
步骤302,基于以所述选择列为主列,以所述排序列为从列的索引,根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序(in-order)记载与该节点对应的排序列的值。
可以用SQL语句Index IX(C1,C2)来建立以C1为主列,C2为从列的索引,该索引的名称为IX。本领域技术人员可以理解,建立索引的目的是为了更好地进行检索。因此,所述索引的存在并不取决于是否要执行所述多维处理指令。在建立索引的过程中,会为主列建立二叉排序树,即将主列的各个值作为二叉排序树的各个节点;然后与各节点关联地记载与其对应的从列的值,并且所述从列的值是经过排序的,从而形成从列值序列。
图4示出了针对图2所示的数据库表,以C1为主列,C2为从列所建立的索引的示意图。本领域技术人员可以理解,取决于所采取的算法不同,二叉排序树的实际形式可能与图4所示的形式不同。但是,这并不影响对本发明实施例的说明。在图4所示的索引中,C1的每一个值对应于二叉排序树的一个节点;在每个节点还记载了该值对应的C2的值。对于每个节点而言,其所记载的C2的值是经过排序的。例如,从图2可以看出,第1行和第11行中,C1的值均为1;其中第1行对应的C2的值为43,第11行对应的C2的值为76,其按降序排列应该为76和43。因此,在图4中,节点值为1的节点的从列值序列为76、43。
以代码1所示的SQL语句为例,根据所述选择列选择所述索引中的节点可以得到节点值为1、5、7、9的节点,即图4中的4个灰色的节点。这4个节点分别与两个排序列的值相关联。对于每一个灰色的节点而言,这两个排序列的值是按序(in-order)记载的,从而这两个排序列的值形成了从列值序列。例如,节点值为1的节点的从列值序列是76和43;节点值为5的节点的从列值序列是34和23;节点值为7的节点的从列值序列是65和55;节点值为9的节点的从列值序列是54和23。
步骤303,对所述各从列值序列进行归并(merge)排序,从而得到对所述候选行的排序结果。
本领域技术人员可以理解,如果一个数据集合已经被分成若干个子集,并且这些子集中的元素都是有序的,那么对这些子集进行归并排序所需要的时间开销为logN;该时间开销必然小于对该数据集合中的元素进行直接排序所需要的时间开销NlogN。这里,N所述数据集合中元素的数目。
在本发明实施例中,在建立索引的过程中,已经得到了所述多个子集,即所述从列值序列。因此,对所述从列值序列进行归并排序所需要的时间开销为logN,其必然小于对所述候选行的从列值进行直接排序所需要的时间开销NlogN,其中N为候选行的数目。这样就避免了在任何情况下都需要对所有候选行的从列值进行直接排序,从而提高了多维处理时的效率。
尤其是对于代码1所示的SQL语句,采用本发明实施例的方法可以更加节约时间开销。该SQL语句对候选行按照排序列进行排序的目的只是获得C2值最大的4个候选行,而并不需要获得其他候选行的排序。在这种情况下,通过所述归并排序得到语句执行结果的过程如图5A到5D所示。
在图5A-5D中,灰色的序列表示4个从列值序列,其分别对应于图4中节点值为1、5、7、9的节点。在图5A中,从4个从列值序列各自的最大值中选出一个最大值即76。在图5B中,由于76已经被选取,则76所在的从列值序列中的下一个值43作为该从列值序列中的新的最大值。再次从4个从列值序列各自的最大值中选出一个最大值即65。在图5C中,由于65已经被选取,则65所在的从列值序列中的下一个值55作为该从列值序列中的新的最大值。再次从4个从列值序列各自的最大值中选出一个最大值即55。在图5D中,由于55已经被选取,则55所在的从列值序列中的下一个值应该作为该从列值序列中的新的最大值。由于该从列值序列中没有其他值,可以认为该从列值序列中新的最大值为负无穷(-∞),此时再次从4个从列值序列各自的最大值中选出的最大值是54。由于已经获得了候选行中C2值最大的4行,因此不用继续进行后续的排序计算,从而进一步节约了时间开销。
下面描述根据本发明实施例的步骤303的具体实现。
根据本发明一个实施例,只要存在以所述选择列为主列,以所述排序列为从列的索引,就执行步骤303中的归并排序。
本发明的发明人发现,虽然归并排序由于利用了从列值序列的有序性,从而降低了排序的时间开销,但是从数据库操作的整体性能上来说,并非严格地优于对所有候选行的C2值进行直接排序。这是因为,归并排序的情况下,多个从列值序列需要用多个工作文件(work file)来保存。工作文件的创建、销毁以及系统对这些工作文件所进行的其他管理需要额外的系统时间和空间开销。从列值序列的数目越大,管理工作文件所需的额外系统开销就越多。而在直接排序的情况下,只需要有一个工作文件来记录所有候选行的C2值,从而节约了管理工作文件所带来的系统开销。因此,在当从列值序列的数目较多时,通过归并排序所节省下的时间开销无法抵消管理工作文件所带来的额外系统开销,从而造成系统整体性能下降。
取决于各系统的软硬件配置,从列值序列的数目超过多少时会造型系统开销增加和整体性能下降,需要对系统进行测试后才能确定。图6示出了系统开销指数(measurement)随从列值序列变化的一种典型情况。所述系统开销指数表示进行排序所需的系统开销和管理工作文件所需的系统开销的综合。一般来说,系统开销主要体现在对CPU的使用和对内存的使用上。本领域技术人员可以设置不同的计算方法来将对CPU的使用情况和对内存的使用情况转换成所述系统开销指数。为了便于比较,图6中还示出了直接排序的系统开销指数。本领域技术人员可以理解,在直接排序中不存在管理多个工作文件的开销。因此,直接排序的系统开销指数只取决于进行排序所需的系统开销,从而在图6中显示为常数。
如图6所示,在从列值序列的数目较小时,归并排序的系统开销指数小于直接排序的系统开销指数。典型地,如果只有一个从列值序列,那么该从列值序列的排序可以直接作为所有候选行的排序。这种情况下,排序所需的系统开销和管理工作文件所需的系统开销都非常小。随着从列值序列的数目变大,由于管理工作文件所需的系统开销变大,使得归并排序的系统开销指数逐渐变大。在从列值序列的数目变得超过归并阈值时,归并排序的系统开销指数就大于了直接排序的系统开销指数。
相应地,根据本发明另一实施例,步骤303的具体实现如图7所示。
步骤701,获取所述从列值序列的数目。
在某些情况下,从SQL语句本身就可以获得从列值序列的确切数目。以代码1所列举的SQL语言为例,其从列值序列的数目是4。
在某些情况下,从SQL语句本身可以估算出从列值序列的大概数目。例如如下SQL语句:
上述语句从T1中选出C1的值在100和200之间的那些行作为候选行;然后根据这些候选行中C2的值对这些候选行进行排序;最后取出排在最前面的4行。因此,在C1的值只能取整数的情况下,从列值序列的数目最多不会超过100。
在某些情况下,从SQL语句本身完全无法估算出从列值序列的数目。例如如下SQL语句:
上述语句从T1中选出C1的值大于100的那些行作为候选行;然后根据这些候选行中C2的值对这些候选行进行排序;最后取出排在最前面的4行。由于无法确认C1的值的最大值是多少,因此可以有任意数目的从列值序列。这种情况下,可以将从列值序列的数目标注为无限大。
步骤702,在所述从列值序列的数目小于归并阈值的情况下,对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
如图6所示,当从列值序列的数目大于归并阈值时,归并排序的系统开销指数反而大于直接排序的系统开销指数。因此,只有在从列值序列的数目小于归并阈值时,才采用归并排序。
如果在代码解析阶段就可以确定从列值序列的数目,那么在步骤702中可以直接比较所述从列值序列的数目和所述归并阈值。在某些情况下,虽然无法确定从列值序列的确切数目,但是可以确定所述数目的范围。如代码2所示的SQL语句,所述数目的范围是1到100。如果所述范围中的最大值也小于所述归并阈值(例如所述归并阈值为500),则实际的从列值序列的数目必然也小于所述归并阈值。相应地,也可以执行所述归并排序。
在其他情况下,在代码解析阶段无法判断从列值序列的数目是否小于归并阈值。例如,所确定的从列值序列的数目的范围,其最大值大于所述归并阈值。在代码2所示的SQL语句中,如果所述归并阈值为50,则无法确认实际的从列值序列是否小于所述归并阈值。在有些情况下,甚至无法确定从列值序列的数目的范围,如代码3所示的SQL语句。
可以通过运行时反馈机制来获得从列值序列的数目。根据本发明一个实施例,可以通过遍历所述索引来获得所述从列值序列的数目。如上所述,如果存在以选择列为主列,以排序列为从列的索引,则存在针对选择列C1的所有值的二叉排序树。在所述二叉排序树中,C1的各个值作为二叉排序树的各个节点。本领域技术人员可以理解,二叉排序树的性质是:以任何一个点为根节点,若左子树不空,则左子树上所有节点的节点值均小于该根节点的节点值;若右子树不空,则右子树上所有节点的节点值均大于该根节点的节点值;此外,左、右子树也分别为二叉排序树。利用该性质,可以通过遍历该二叉排序树确定从列节点值序列的数目。如何通过二叉排序树找到节点值满足一定条件的节点是本领域的公知常识。在找到这些节点后,自然就可以确定从列值序列的数目,因为从列值序列与节点是一一对应的。
本领域技术人员还可以设计出其他方案来获得所述从列值序列的数目。例如,可以通过对所有候选行所对应的C1值进行统计,来得到所有这些候选行对应于多少个C1值。由于C1值与从列值序列是一一对应的,所以有多少个C1值就有多少个从列值序列。
图8是根据本发明实施例的用于处理数据库表的设备的方框图。
根据本发明实施例的设备典型地可以通过运行于图1所示的示例性计算机系统上的计算机程序来实现。虽然图1所示的是通用的计算机系统的硬件结构,但是由于该计算机系统运行了所述计算机程序,实现了根据本发明实施例的方案,从而使得该计算机系统/服务器从通用计算机系统/服务器转变成根据本发明实施例的设备。
此外,虽然根据本发明实施例的设备从整体上看是由同一通用计算机系统来实现的,但是组成该设备的各个装置或模块在本质上是由分立的硬件实现的。这是因为,所述通用计算机在运行所述计算机程序时,往往采用诸如分时或分处理器核的共享方式来实现各个装置或模块。以分时实现为例,在特定的时刻,该通用计算机系统作为专用于实现特定装置或模块的硬件;在不同时刻,该通用计算机系统作为专用于实现不同的装置或模块的不同硬件。因此,根据本发明实施例的设备是一系列由硬件方式实现的装置或模块的组合,从而并非仅仅是功能模块构架。相反,根据本发明实施例的设备也可以被理解为主要通过硬件方式实现根据本发明实施例解决方案的实体设备。
根据本发明实施例的用于处理数据库表的设备包括:
指令接收装置,配置为接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述候选列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;
节点选择装置,配置为如果存在以所述选择列为主列,以所述排序列为从列的索引,则根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和
归并排序装置,配置为对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
其中所述归并排序装置包括:
配置为获取所述从列值序列的数目的模块;
配置为在所述从列值序列的数目小于归并阈值的情况下,对所述各从列值序列进行归并排序的模块。
其中配置为获取所述从列值序列的数目的模块包括:
配置为在对所述多维处理指令进行代码解析的阶段获取所述从列值序列的数目的模块。
其中配置为获取所述从列值序列的数目的模块包括:
配置为通过运行时反馈机制来获得所述从列值序列的数目的模块。
其中配置为通过运行时反馈机制来获得所述从列值序列的数目的模块包括:
配置为通过遍历所述索引来获得所述从列值序列的数目的模块。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种处理数据库表的方法,该方法包括:
接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述选择列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;
基于以所述选择列为主列,以所述排序列为从列的索引,根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和
对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
2.如权利要求1所述的方法,其中对所述各从列值序列进行归并排序包括:
获取所述从列值序列的数目;
在所述从列值序列的数目小于归并阈值的情况下,对所述各从列值序列进行归并排序。
3.如权利要求2所述的方法,其中获取所述从列值序列的数目包括:
在对所述多维处理指令进行代码解析的阶段获取所述从列值序列的数目。
4.如权利要求2所述的方法,其中获取所述从列值序列的数目包括:
通过运行时反馈机制来获得所述从列值序列的数目。
5.如权利要求4所述的方法,其中通过运行时反馈机制来获得所述从列值序列的数目包括:
通过遍历所述索引来获得所述从列值序列的数目。
6.一种处理数据库表的设备,该设备包括:
指令接收装置,配置为接收对数据库表的至少两个列进行处理的多维处理指令,所述两个列中的一个是选择列,另一个是排序列,所述多维处理指令根据所述候选列选择需要排序的多个候选行,并且根据所述排序列对所述候选行进行排序;
节点选择装置,配置为基于以所述选择列为主列,以所述排序列为从列的索引,根据所述选择列选择所述索引中的节点,其中各被选择的节点分别与从列值序列相关联,所述从列值序列按序记载与该节点对应的排序列的值;和
归并排序装置,配置为对所述各从列值序列进行归并排序,从而得到对所述候选行的排序结果。
7.如权利要求6所述的设备,其中所述归并排序装置包括:
配置为获取所述从列值序列的数目的模块;
配置为在所述从列值序列的数目小于归并阈值的情况下,对所述各从列值序列进行归并排序的模块。
8.如权利要求7所述的设备,其中配置为获取所述从列值序列的数目的模块包括:
配置为在对所述多维处理指令进行代码解析的阶段获取所述从列值序列的数目的模块。
9.如权利要求7所述的设备,其中配置为获取所述从列值序列的数目的模块包括:
配置为通过运行时反馈机制来获得所述从列值序列的数目的模块。
10.如权利要求9所述的设备,其中配置为通过运行时反馈机制来获得所述从列值序列的数目的模块包括:
配置为通过遍历所述索引来获得所述从列值序列的数目的模块。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310535061.3A CN104598485B (zh) | 2013-11-01 | 2013-11-01 | 处理数据库表的方法和设备 |
US14/489,374 US9805091B2 (en) | 2013-11-01 | 2014-09-17 | Processing a database table |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310535061.3A CN104598485B (zh) | 2013-11-01 | 2013-11-01 | 处理数据库表的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104598485A true CN104598485A (zh) | 2015-05-06 |
CN104598485B CN104598485B (zh) | 2018-05-25 |
Family
ID=53007847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310535061.3A Expired - Fee Related CN104598485B (zh) | 2013-11-01 | 2013-11-01 | 处理数据库表的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9805091B2 (zh) |
CN (1) | CN104598485B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484868A (zh) * | 2016-10-11 | 2017-03-08 | 华胜信泰信息产业发展有限公司 | 基于limit语义的数据排序方法和数据排序装置 |
CN112085644A (zh) * | 2019-06-12 | 2020-12-15 | 上海赜睿信息科技有限公司 | 多列数据排序方法、装置、可读存储介质和电子设备 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10664474B1 (en) | 2013-03-15 | 2020-05-26 | Progress Software Corporation | Query system |
CN110309169B (zh) * | 2018-04-12 | 2024-06-21 | 腾讯科技(北京)有限公司 | 关系链存储系统的数据查询方法、装置、介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185557B1 (en) * | 1998-07-31 | 2001-02-06 | Unisys Corporation | Merge join process |
US20090138428A1 (en) * | 2005-03-15 | 2009-05-28 | Hyperion Solutions Corporation, A Delaware Corporation | Dimensionality reduction |
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
CN102651008A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 在关系数据库中组织数据记录的方法和设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5822748A (en) | 1997-02-28 | 1998-10-13 | Oracle Corporation | Group by and distinct sort elimination using cost-based optimization |
US6438562B1 (en) * | 1999-08-24 | 2002-08-20 | Oracle Corporation | Parallel index maintenance |
US7765211B2 (en) * | 2003-04-29 | 2010-07-27 | International Business Machines Corporation | System and method for space management of multidimensionally clustered tables |
CA2427216A1 (en) | 2003-04-30 | 2004-10-30 | Ibm Canada Limited - Ibm Canada Limitee | Slow materialization sort of partially ordered inputs in a database system |
US20090063458A1 (en) | 2007-08-31 | 2009-03-05 | International Business Machines Corporation | method and system for minimizing sorting |
US8478775B2 (en) | 2008-10-05 | 2013-07-02 | Microsoft Corporation | Efficient large-scale filtering and/or sorting for querying of column based data encoded structures |
US8356060B2 (en) * | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
-
2013
- 2013-11-01 CN CN201310535061.3A patent/CN104598485B/zh not_active Expired - Fee Related
-
2014
- 2014-09-17 US US14/489,374 patent/US9805091B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6185557B1 (en) * | 1998-07-31 | 2001-02-06 | Unisys Corporation | Merge join process |
US20090138428A1 (en) * | 2005-03-15 | 2009-05-28 | Hyperion Solutions Corporation, A Delaware Corporation | Dimensionality reduction |
CN101751406A (zh) * | 2008-12-18 | 2010-06-23 | 赵伟 | 一种实现基于列存储的关系型数据库的方法及装置 |
CN102651008A (zh) * | 2011-02-28 | 2012-08-29 | 国际商业机器公司 | 在关系数据库中组织数据记录的方法和设备 |
Non-Patent Citations (2)
Title |
---|
《2012 IEEE 28TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING》 * |
《广西科学院学报 》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484868A (zh) * | 2016-10-11 | 2017-03-08 | 华胜信泰信息产业发展有限公司 | 基于limit语义的数据排序方法和数据排序装置 |
CN106484868B (zh) * | 2016-10-11 | 2019-07-09 | 华胜信泰信息产业发展有限公司 | 基于limit语义的数据排序方法和数据排序装置 |
CN112085644A (zh) * | 2019-06-12 | 2020-12-15 | 上海赜睿信息科技有限公司 | 多列数据排序方法、装置、可读存储介质和电子设备 |
CN112085644B (zh) * | 2019-06-12 | 2024-05-14 | 上海赜睿信息科技有限公司 | 多列数据排序方法、装置、可读存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20150127666A1 (en) | 2015-05-07 |
US9805091B2 (en) | 2017-10-31 |
CN104598485B (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10162598B2 (en) | Flash optimized columnar data layout and data access algorithms for big data query engines | |
CN103902698B (zh) | 一种数据存储系统和存储方法 | |
CN104021161A (zh) | 一种聚簇存储方法及装置 | |
CN104252472B (zh) | 用于并行化数据处理的方法和装置 | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
CN105653554A (zh) | 一种文件数据比对方法和系统 | |
US20120096054A1 (en) | Reading rows from memory prior to reading rows from secondary storage | |
US11151138B2 (en) | Computer program for processing a pivot query | |
US20200257647A1 (en) | System, method and apparatus for enabling partial data transfers with indicators | |
US20110179013A1 (en) | Search Log Online Analytic Processing | |
CN104598485A (zh) | 处理数据库表的方法和设备 | |
CN116881430B (zh) | 一种产业链识别方法、装置、电子设备及可读存储介质 | |
CN116383422B (zh) | 一种基于锚点的无监督跨模态哈希检索方法 | |
CN113407785A (zh) | 一种基于分布式储存系统的数据处理方法和系统 | |
Li et al. | A real linear and parallel multiple longest common subsequences (MLCS) algorithm | |
CN111984745B (zh) | 数据库字段动态扩展方法、装置、设备及存储介质 | |
CN111046085B (zh) | 数据的溯源处理方法及装置、介质和设备 | |
Langfelder et al. | Package ‘WGCNA’ | |
US20160224685A1 (en) | Counting bloom filter | |
CN103678355B (zh) | 文本挖掘方法和文本挖掘装置 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN115221360A (zh) | 树形结构配置方法和系统 | |
Wandelt et al. | Sequence factorization with multiple references | |
CN112579841B (zh) | 一种多模态数据库建立方法、检索方法及系统 | |
KR101664712B1 (ko) | 해시 테이블 접근 없이 참 양성 여부를 판단할 수 있는 블룸 필터 쿼리 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180525 |
|
CF01 | Termination of patent right due to non-payment of annual fee |