CN103885984B - 处理数据库查询结果集的方法和设备 - Google Patents
处理数据库查询结果集的方法和设备 Download PDFInfo
- Publication number
- CN103885984B CN103885984B CN201210563722.9A CN201210563722A CN103885984B CN 103885984 B CN103885984 B CN 103885984B CN 201210563722 A CN201210563722 A CN 201210563722A CN 103885984 B CN103885984 B CN 103885984B
- Authority
- CN
- China
- Prior art keywords
- event
- database query
- query result
- database
- handling
- 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.)
- Expired - Fee Related
Links
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/24532—Query optimisation of parallel queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供一种处理数据库查询结果集的方法。该方法包括读取所述数据库查询结果集的所有原始数据;生成多个事件,其中所述多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息,所述主体信息包括对应于所述数据库查询结果集的至少部分原始数据;对所述多个事件进行并行处理以返回各个事件的处理结果;以及按照所述事件标头信息对返回的事件处理结果进行排序。本发明的其它实施方式还提供相应的数据库客户端和计算机程序产品。
Description
技术领域
本发明涉及数据库技术,更具体地,涉及处理数据库查询结果集的方法和设备。
背景技术
在现代企业应用系统中,数据库管理系统(DBMS)占据了非常重要的位置,大多数应用需要向数据库存储持久化数据。对于这些应用,应用自身和数据库的设计及运行时环境均是关乎系统性能的重要因素。但是,在某些情形下,应用和数据库之间的连接方式和操作机制,特别是对于数据库查询结果集的处理方法,也是影响系统性能至关重要的因素。
每一种编程语言均具有其数据库访问接口或者标准。例如,在Java EE技术中,Java Database Connectivity(JDBC)被设计为用于向数据库添加、修改、去除以及查询数据的标准应用编程接口(API);由微软公司提出的Open DatabaseConnectivity(ODBC)是另一种提供连接性的标准。这些接口和组件已经被广泛地用于实践中,并且它们在与数据库的交互和处理方式上具有大致相同的机制。
图1示意性描述了使用现有技术(例如JDBC)的数据库客户端对数据库执行查询操作的处理流程。
如图1所示,在步骤S110,数据库客户端打开到数据库服务器的连接。接着在步骤S120,由数据库服务器执行请求的查询操作。在步骤S130,返回表示查询结果的查询结果集。
步骤S140示出了在现有技术中在数据库客户端中处理数据库查询结果集的流程。在现有技术方案中,对于查询结果集的处理是串行执行的。只有在当前行已经被解析和读取后,用户才能移动光标到下一行接着处理。在步骤S141中,以串行方式逐行加载原始数据流,解析从数据库服务器返回的数据库查询结果集。在步骤S142-S144中示意性地示出了逐行读取查询结果集数据进行处理的串行过程。
在步骤S150中,数据库客户端读取完毕后关闭与数据库服务器的连接。
许多查询操作需要一次性返回大量的数据记录,例如业务报表、数据分析、商业智能以及业务要求的一次性查询显示大量数据。这时,现有的串行处理过程所耗费的时间会随着返回的数据量成线性增长。特别地,当应用需要从数据库查询大量数据,且要求很小的响应时间时,现有的串行处理机制将无法满足需要。而且,现有的处理机制虽然简单易行,但是其单线程的运行方式无法充分利用现代多核处理器所带来的处理性能的扩展。
在现有技术中没有提供解决上述技术问题的解决方案。
发明内容
为了解决现有技术中存在的问题,本发明的实施方式提供一种用于处理数据库查询结果集的解决方案,其中通过事件驱动来执行对于数据库查询结果集的并行处理。
根据本发明的一个方面,提供了一种用于处理数据库查询结果集的方法。该方法包括读取数据库查询结果集的所有原始数据;生成多个事件,其中多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息,该主体信息包括对应于数据库查询结果集的至少部分原始数据;对多个事件进行并行处理以返回各个事件的处理结果;以及按照标头信息对返回的事件处理结果进行排序。
根据本发明的另一个方面,提供了一种数据库客户端。该数据库客户端包括执行结果管理器,被配置用于读取数据库查询结果集的所有原始数据,并且被配置用于生成多个事件,其中多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息,该主体信息包括对应于数据库查询结果集的至少部分原始数据;事件处理管理器,被配置用于对多个事件进行并行处理以向执行结果管理器返回各个事件的处理结果,其中执行结果管理器还被配置用于按照标头信息对返回的事件处理结果进行排序。
根据本发明的另一个方面,提供了一种用于处理数据库查询结果集的装置。该用于处理数据库查询结果集的装置包括用于读取数据库查询结果集的所有原始数据的装置;用于生成多个事件的装置,其中多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息,主体信息包括对应于数据库查询结果集的至少部分原始数据;用于对多个事件进行并行处理以返回各个事件的处理结果的装置;以及用于按照标头信息对返回的事件处理结果进行排序的装置。
根据本发明的另一个方面,提供了一种计算机程序产品。该计算机程序产品包括可由处理器执行的计算机程序代码,当通过处理器运行计算机程序代码时能够执行根据本发明实施方式的用于处理数据库查询结果集的方法。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示意性描述了使用现有技术(例如JDBC)的数据库客户端对数据库执行查询操作的处理流程。
图2示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图3示出了根据本发明一个实施方式的用于处理数据库查询结果集的方法的流程图。
图4示出了根据本发明一个实施方式的事件实例的数据结构。
图5示出了根据本发明一个实施方式的数据库客户端的架构的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
图2示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图2显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统/服务器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系统、磁带驱动器以及数据备份存储系统等。
根据本发明的实施方式,提出一种用于处理数据库查询结果集的解决方案,其中通过事件驱动来执行对于数据库查询结果集的并行处理。根据本发明的一个实施方式,对于数据库查询结果集的读取是独立的工作并且将不会被阻塞或者中断。为数据库查询结果集生成多个事件(即事件实例),数据库查询结果集通过响应相应事件对查询结果集进行并行解析并且然后被转换为所需的对象。
图3示出了根据本发明一个实施方式的用于处理数据库查询结果集的方法的流程图。
如图3所示,在步骤S310中,读取数据库查询结果集的所有原始数据。
与现有技术相区别,根据本发明实施方式,无需等待查询结果集中的对应于一个数据行的原始数据被读取、解析和处理之后在读取下一数据行的原始数据,而是不间断地连续读取数据库查询结果集中的全部原始数据,由此可以在最短的时间内完全读取查询结果。
根据本发明的一个实施方式,数据库客户端可以被配置为以二进制数据流形式读取所述数据库查询结果集的所有原始数据。从数据库服务器到应用服务器的数据流传输可以采用任何适当的数据流技术,以提高访问性能并且降低数据访问响应时间。例如,在http://docs.oracle.com/cd/B28359_01/java.111/b31224/jstreams.htm#autoId11可以找到可以应用于本发明的实施方式的数据流技术的示例,通过引用将其结合于此。通过二进制数据流读取数据库查询结果,结合对数据的延迟解析,可以在最短时间内完全读取查询结果。
虽然本文将以二进制数据流为示例来说明根据本发明的一个或多个实施方式,但是本领域技术人员应该理解,根据本发明的其它实施方式还可以采用任何其它适当形式读取数据库查询结果集的所有原始数据,而不会背离本发明的实质。这些可以采用的数据形式包括但不限于XML代码形式、字符形式,等等。
在步骤S320中,生成多个事件。该多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息。事件的主体信息包括对应于数据库查询结果集的至少部分原始数据。
根据本发明的一个实施方式,可以在执行步骤S310中的读取操作的过程中同步地执行步骤S320的生成事件的操作。
根据本发明的一个实施方式,将读取的二进制数据流形式的数据库查询结果集以一个或多个数据行为单位进行划分,将划分后的一个或多个数据行形成为事件的主体信息,并且为事件添加标头信息。在一个实现中,数据库客户端例如可以调用数据库特定的解析适配器来实现对数据库查询结果集的二进制数据进行划分,由此生成多个事件。
图4示出了根据本发明一个实施方式的事件的数据结构。
如图4所示,每个事件包括标头信息和主体信息。
标头信息记录与该事件实例有关的属性信息,例如该事件的序号、该事件所包含的数据行数目、对应事件处理逻辑类的标识等等。应注意到,虽然在图4的示例中给出了具体的标头信息项,但是本领域的技术人员可以在标头信息中记录任何所需的有关事件的属性信息以便于后续的处理,因此在图4所描述示例中仅是出于说明的目的而非穷举性限制。
主体信息包括从数据库查询结果集中划分的对应于一个或多个数据行的原始数据。在一个实现方式中,主体信息可以是包括二进制数据格式的一个或多个数据行的二进制数据阵列。事件中数据行的数目可以是预先设定的,并且可以根据性能的考虑而改变。
在一个示例中,事件所包括的数据行数目可以为m行。在读取二进制数据流形式的数据库查询结果集的过程中,当解析到第m个行分隔符时,则生成序号为1的事件,将该m行作为该事件的主体信息并且为该事件添加相应的标头信息;以此类推,每解析m个行分隔符,则生成相应的事件,例如序号为n的事件,将该m行作为该事件的主体信息,并且为该事件添加相应的标头信息,直到读取完数据库查询结果集的所有二进制数据为止。
在步骤S330中,对多个事件进行并行处理以返回各个事件的处理结果。
根据本发明一个实施方式,通过使用多个线程,对多个事件进行并行处理以返回各个事件的处理结果。例如,在一个实施方式中,可以通过使用提供数据库特定的二进制数据解析功能的解析适配器来解析事件的主体信息。可以预先为不同的处理注册不同的事件处理逻辑,由此在运行时通过定制的事件处理逻辑类对不同事件类进行处理。在一种实现中,可以为每个事件生成相应的工作线程;在其它实现中,也可以允许所有事件共享固定数目的工作线程。
通过由事件驱动对数据库查询结果集进行并行的处理,可以显著降低对查询结果的处理时间,提高基于数据库的应用的响应速度,并且还可以提高数据库服务器的并发容量。
在步骤S340中,按照事件标头信息对返回的事件解析的结果进行排序,以向数据库应用返回对于整个数据库查询结果集的处理结果。
根据本发明实施方式的对数据库查询结果集的处理方法提供了事件驱动的处理机制,消除了对数据库查询结果集的读取、解析和访问之间的耦合,使得能够相对独立的执行读取、解析和访问。而且,在特定实现方式中,还可以在读取二进制流的过程中执行解析,由此进一步提高了处理的效率。根据本发明实施方式的对数据库查询结果集的处理方法消除了现有处理方法的单线程限制,支持用于数据库查询结果的多线程异步处理,这允许充分使用多核CPU的能力以加速处理。
图5示出了根据本发明一个实施方式的数据库客户端的架构的框图。
如图5所示,数据库客户端500被配置为包括执行结果管理器510以及事件处理管理器520。
执行结果管理器510提供接口以返回经处理的数据库查询结果集。数据库应用在使用根据本发明实施方式的数据库客户端500时仅需与执行结果管理器510进行交互,而并不需要知晓内部复杂的事件处理逻辑。
根据本发明的实施方式,执行结果管理器510被配置用于读取数据库查询结果集的所有原始数据。根据一个实施方式,执行结果管理器510可以以二进制数据流形式读取所述数据库查询结果集的所有原始数据。执行结果管理器510可以采用任何适当的数据流技术实现从数据库服务器到应用服务器的数据流传输,以提高访问性能并且降低数据访问响应时间。虽然本文以二进制数据流为示例来说明根据本发明的一个或多个实施方式,但是本领域技术人员应该理解,根据本发明的其它实施方式还可以采用任何其它适当形式读取数据库查询结果集的所有原始数据,而不会背离本发明的实质。这些可以采用的数据形式包括但不限于XML代码形式、字符形式,等等。
接着,执行结果管理器510还被配置用于基于读取的原始数据生成多个事件,其中多个事件中的每个事件包括至少指示该事件序号的标头信息以及主体信息,该主体信息包括对应于数据库查询结果集的至少部分原始数据。根据本发明的一个实施方式,执行结果管理器510可以被配置用于在读取所述数据库查询结果集的所有数据行的过程中执行生成多个事件的操作。
在一个实施方式中,执行结果管理器510可以被配置为以一个或多个数据行为单位对二进制数据进行划分从而形成多个事件的主体信息;以及添加所述多个事件的标头信息。数据库客户端500还可以包括解析适配器530以用于提供数据库特定的二进制数据解析功能。由于从不同的数据库返回的数据流流的格式可能是不同的,因此每个数据库需要具有其自身特定的解析适配器530(图5中仅作为示例示出一个解析适配器530)。例如,对于ODBC数据库可以采用ODBC解析适配器,对于JDBC数据库可以采用JDBC解析适配器,等等。执行结果管理器510例如可以被配置为调用该解析适配器530实现对数据库查询结果集的二进制数据进行划分,由此生成多个事件。具体而言,执行结果管理器510借助于解析适配器530的功能将数据库查询结果集的二进制数据流按照预定的数据行数目划分为具有行数据的一系列事件,形成包括标头信息和主体信息的事件(例如,具有图4所示的数据结构),然后将事件传递到事件处理管理器520以便进行诸如解析、转换等并行处理。
事件处理管理器520负责对事件的调度和处理。事件处理管理器520,被配置用于对多个事件进行并行处理以向执行结果管理器510返回各个事件的处理结果。在一些实现中,事件处理管理器520可以被配置为通过使用解析适配器530解析事件的主体信息,并且通过定制的事件处理逻辑类对不同事件类进行的处理。当事件发生时,事件处理管理器520可以生成相应的事件实例传送到对应的事件处理逻辑类的实例以进行处理。
根据本发明的实施方式,事件处理管理器520可以被配置为通过使用多个线程对多个事件进行并行处理以返回各个事件的处理结果。存在多种线程调度和管理的方法。例如,在一个实现方式中,当新的事件到来时,事件处理管理器520会生成一个的线程,以执行事件处理逻辑的实例,事件处理逻辑的实例在独立的线程中完成解析和处理操作,在处理完成后销毁线程。但是,如果数据库查询结果很多,会产生大量的事件,这种方式将频繁发生线程的生成和销毁。在另一种实现方式中,可以维持线程池,其中存在固定数目的工作线程,并且这些线程一起共享所有的事件负荷,通过共享的固定数目的工作线程实现事件处理逻辑的实例,从而避免大量的线程生成和销毁开销。
在事件处理管理器520处理过各个事件之后,将处理结果返回给执行结果管理器510。
执行结果管理器510还被配置用于按照事件的标头信息对返回的事件处理结果进行排序。具体而言,执行结果管理器510在解析和转换之后保持处理结果。事件处理管理器520负责事件处理并向执行结果管理器510返回处理结果。但是,由于事件处理是异步执行的,并且返回的处理结果相对于原数据库查询结果集的顺序可能是顺序颠倒的。执行结果管理器510将按照数据库查询操作返回的查询结果集的顺序重新排列处理后的结果。
相较于现有技术,本发明的各种实施方式具有以下优点中的一个或多个:
-能够提供对于数据库查询结果的高效读取和解析机制,以减少对查询结果的处理时间,并且提高基于数据库的应用的响应速度。当查询结果集包括大量数据时,本发明一个或多个实施方式的数据库客户端在处理速度方面将具有更明显的优点;
-能够缩短数据库查询的整体时间消耗,并且能够尽可能快的释放与数据库服务器之间的连接,以及提高数据库引擎的并发容量;
-能够消除现有串行处理方法的单线程限制,允许充分使用多核CPU的能力以加速处理;
-能够支持对于查询结果集原始数据流的访问,并且能够对原查询结果集再次进行传递、保存、解析。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (13)
1.一种用于处理数据库查询结果集的方法,包括:
读取所述数据库查询结果集的所有原始数据;
生成多个事件,其中所述多个事件中的每个事件包括指示该事件序号的标头信息以及主体信息,所述主体信息包括对应于所述数据库查询结果集的部分原始数据;
对所述多个事件进行并行处理以返回各个事件的处理结果;以及
按照所述标头信息对返回的事件处理结果进行排序;
其中在读取所述数据库查询结果集的所有原始数据的过程中执行生成多个事件的操作。
2.根据权利要求1所述的方法,其中所述读取所述数据库查询结果集的所有原始数据包括:
以二进制数据流形式读取所述数据库查询结果集的所有原始数据。
3.根据权利要求2所述的方法,其中所述生成多个事件包括:
以一个或多个数据行为单位划分所述二进制数据流形式的所述数据库查询结果集,以形成所述多个事件的主体信息;以及
添加所述多个事件的标头信息。
4.根据权利要求1所述的方法,其中对所述多个事件进行并行处理以返回各个事件的处理结果是通过使用多个线程进行的。
5.根据权利要求4所述的方法,其中使用提供数据库特定的二进制数据解析功能的解析适配器来解析事件的主体信息,并且通过定制的事件处理逻辑类对不同事件类进行处理。
6.根据权利要求4所述的方法,其中:
为每个事件生成工作线程;或者
所有事件共享固定数目的工作线程。
7.一种数据库客户端,包括:
执行结果管理器,被配置用于读取数据库查询结果集的所有原始数据,并且被配置用于生成多个事件,其中所述多个事件中的每个事件包括指示该事件序号的标头信息以及主体信息,所述主体信息包括对应于所述数据库查询结果集的部分原始数据;
事件处理管理器,被配置用于对所述多个事件进行并行处理以向所述执行结果管理器返回各个事件的处理结果,
其中所述执行结果管理器还被配置用于按照所述标头信息对返回的事件处理结果进行排序;
其中所述执行结果管理器被配置用于在读取所述数据库查询结果集的所有原始数据的过程中执行生成多个事件的操作。
8.根据权利要求7所述的数据库客户端,其中所述执行结果管理器被配置用于以二进制数据流形式读取所述数据库查询结果集的所有原始数据。
9.根据权利要求8所述的数据库客户端,其中所述执行结果管理器进一步被配置为:
以一个或多个数据行为单位划分所述二进制数据流形式的所述数据库查询结果集,以形成所述多个事件的主体信息;以及
添加所述多个事件的标头信息。
10.根据权利要求7所述的数据库客户端,进一步包括解析适配器,用于提供数据库特定的二进制数据解析功能,
其中所述事件处理管理器被配置为通过使用所述解析适配器解析事件的主体信息,并且通过定制的事件处理逻辑类对不同事件类进行处理。
11.根据权利要求7所述的数据库客户端,其中所述事件处理管理器被配置为通过使用多个线程对所述多个事件进行并行处理以返回各个事件的处理结果。
12.根据权利要求11所述的数据库客户端,其中所述事件处理管理器被配置为:
为每个事件生成工作线程;或者
所有事件共享固定数目的工作线程。
13.一种用于处理数据库查询结果集的装置,包括:
用于读取所述数据库查询结果集的所有原始数据的装置;
用于生成多个事件的装置,其中所述多个事件中的每个事件包括指示该事件序号的标头信息以及主体信息,所述主体信息包括对应于所述数据库查询结果集的部分原始数据;
用于对所述多个事件进行并行处理以返回各个事件的处理结果的装置;以及
用于按照所述标头信息对返回的事件处理结果进行排序的装置;
其中所述用于处理数据库查询结果集的装置在读取所述数据库查询结果集的所有原始数据的过程中执行生成多个事件的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563722.9A CN103885984B (zh) | 2012-12-21 | 2012-12-21 | 处理数据库查询结果集的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563722.9A CN103885984B (zh) | 2012-12-21 | 2012-12-21 | 处理数据库查询结果集的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103885984A CN103885984A (zh) | 2014-06-25 |
CN103885984B true CN103885984B (zh) | 2018-05-04 |
Family
ID=50954879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210563722.9A Expired - Fee Related CN103885984B (zh) | 2012-12-21 | 2012-12-21 | 处理数据库查询结果集的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885984B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1107107A1 (en) * | 1999-12-10 | 2001-06-13 | Koninklijke Philips Electronics N.V. | Parallel data processing and shuffling |
CN1946054A (zh) * | 2006-09-30 | 2007-04-11 | 华为技术有限公司 | 一种高速数据流的传输方法、装置及数据交换设备 |
CN101311931A (zh) * | 2007-05-21 | 2008-11-26 | Sap股份公司 | 基于值的出现的表压缩 |
CN102158408A (zh) * | 2011-04-01 | 2011-08-17 | 华为技术有限公司 | 数据流处理方法和装置 |
-
2012
- 2012-12-21 CN CN201210563722.9A patent/CN103885984B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1107107A1 (en) * | 1999-12-10 | 2001-06-13 | Koninklijke Philips Electronics N.V. | Parallel data processing and shuffling |
CN1946054A (zh) * | 2006-09-30 | 2007-04-11 | 华为技术有限公司 | 一种高速数据流的传输方法、装置及数据交换设备 |
CN101311931A (zh) * | 2007-05-21 | 2008-11-26 | Sap股份公司 | 基于值的出现的表压缩 |
CN102158408A (zh) * | 2011-04-01 | 2011-08-17 | 华为技术有限公司 | 数据流处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103885984A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108536761B (zh) | 报表数据查询方法及服务器 | |
CN109997126B (zh) | 事件驱动提取、变换、加载(etl)处理 | |
JP6523354B2 (ja) | 改善されたインターフェースを備えるステートマシンビルダー及び状態非依存イベントの処理 | |
US10069916B2 (en) | System and method for transparent context aware filtering of data requests | |
US10628212B2 (en) | Incremental parallel processing of data | |
EP2572289B1 (en) | Data storage and processing service | |
US11681651B1 (en) | Lineage data for data records | |
JP5950285B2 (ja) | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム | |
US9069818B2 (en) | Textual search for numerical properties | |
EP3642736B1 (en) | Parallel compute offload to database accelerator | |
JP2005115514A (ja) | データベース検索システム及びその検索方法並びにプログラム | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
WO2011126995A1 (en) | Columnar storage representations of records | |
CN109684319A (zh) | 数据清洗系统、方法、装置及存储介质 | |
CN111078761A (zh) | 数据探查方法、装置、设备及存储介质 | |
CN103077192A (zh) | 一种数据处理方法及其系统 | |
US11308086B2 (en) | Increasing database performance through query aggregation | |
US20170199896A1 (en) | Systems and methods for processing binary mainframe data files in a big data environment | |
US9111009B2 (en) | Self-parsing XML documents to improve XML processing | |
US8719270B2 (en) | Utilizing metadata generated during XML creation to enable parallel XML processing | |
US8171046B1 (en) | Converting CQL query results into user-controllable objects | |
CN103885984B (zh) | 处理数据库查询结果集的方法和设备 | |
US11340906B2 (en) | System and method for business process monitoring | |
CN105989117B (zh) | 一种半结构化数据快速联合处理的方法及系统 | |
Naureen | Big Data Analytics with Hadoop |
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: 20180504 Termination date: 20201221 |
|
CF01 | Termination of patent right due to non-payment of annual fee |