CN107977378A - 一种分布式数据聚合方法和装置 - Google Patents
一种分布式数据聚合方法和装置 Download PDFInfo
- Publication number
- CN107977378A CN107977378A CN201610933830.9A CN201610933830A CN107977378A CN 107977378 A CN107977378 A CN 107977378A CN 201610933830 A CN201610933830 A CN 201610933830A CN 107977378 A CN107977378 A CN 107977378A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- querying condition
- result
- instruction
- 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
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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24556—Aggregation; Duplicate elimination
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供的一种分布式数据聚合方法和装置,属于计算机技术领域。该方法包括:接收第一数据查询指令,获取第一数据查询指令所携带的第一查询条件,第一查询条件包括开始数据和目标数据;基于第一预设规则修改第一查询条件生成第二查询条件,第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为开始数据与目标数据之和;生成携带有起始数据与结束数据的第二查询条件的第二数据查询指令。从而使得第一数据查询指令能够从第二数据查询指令所获取到的结果中获取该第一数据查询指令欲获取的查询结果,进而实现跨多个存储节点查询后对于查询结果的聚合操作问题。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种分布式数据聚合方法和装置。
背景技术
目前企业级应用对于海量数据的管理,最流行的解决方案是通过数据库切分技术将数据存储到多个数据库节点,从而实现对海量数据的管理。但是对于复杂数据模型如关系型数据库,在关系型数据库中进行读取数据时对于跨分片的聚合操作却是一个非常棘手的问题。目前已知的技术方案并不具备跨多个存储节点查询后对于查询结果的聚合操作功能,但是生产环境中却很难避免这样的问题。因此,如何解决上述问题是目前面临的一大难题。
发明内容
本发明提供一种分布式数据聚合方法和装置,旨在实现跨多个存储节点查询后对于查询结果的聚合操作问题。
本发明提供的一种分布式数据聚合方法,包括:接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据;基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和;生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令;将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果;基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
本发明提供的一种分布式数据聚合装置,包括:数据接收单元,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据;查询条件生成单元,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和;数据生成单元,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令;数据执行单元,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果;数据获取单元,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
上述本发明提供的一种分布式数据聚合方法和装置,通过第二数据查询指令所携带的第二查询条件从每个数据节点获取足够多的数据,从而使得第一数据查询指令能够从第二数据查询指令所获取到的结果中获取该第一数据查询指令欲获取的查询结果,从而实现跨多个存储节点查询后对于查询结果的聚合操作问题。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的用户终端与服务器进行交互的示意图;
图2为本发明实施例提供的一种电子设备的结构框图;
图3为本发明第一实施例提供的一种分布式数据聚合方法的流程图;
图4为本发明第二实施例提供的一种分布式数据聚合方法的流程图;
图5为本发明第三实施例提供的一种分布式数据聚合方法的流程图;
图6为本发明第四实施例提供的一种分布式数据聚合方法的流程图;
图7为本发明第五实施例提供的一种分布式数据聚合装置的结构框图;
图8为本发明第六实施例提供的一种分布式数据聚合装置的结构框图;
图9为本发明第七实施例提供的一种分布式数据聚合装置的结构框图;
图10为本发明第八实施例提供的一种分布式数据聚合装置的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,是本发明较佳实施例提供的服务器与用户终端进行交互的示意图。所述服务器100通过网络与一个或多个用户终端200进行通信连接,以进行数据通信或交互。所述服务器100可以是网络服务器、数据库服务器等。所述用户终端200可以是个人电脑(personal computer,PC)、平板电脑、智能手机、个人数字助理(personal digitalassistant,PDA)等。
如图2所示,为本发明实施例提供的一种电子设备的结构框图。所述电子设备300可以作为用户终端200,也可以作为服务器100。所述电子设备300包括分布式数据聚合装置、存储器302、存储控制器303、处理器304及外设接口305。
所述存储器302、存储控制器303、处理器304及外设接口305各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述分布式数据聚合装置包括至少一个可以软件或固件(firmware)的形式存储于所述存储器302中或固化在所述电子设备300的操作系统(operating system,OS)中的软件功能模块。所述处理器304用于执行存储器302中存储的可执行模块,例如所述分布式数据聚合装置包括的软件功能模块或计算机程序。
其中,存储器302可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器302用于存储程序,所述处理器304在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的服务器100所执行的方法可以应用于处理器304中,或者由处理器304实现。
处理器304可能是一种集成电路芯片,具有信号的处理能力。上述的处理器304可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述外设接口305将各种输入/输入装置耦合至处理器304以及存储器302。在一些实施例中,外设接口305、处理器304以及存储控制器303可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
请参阅图3,是本发明第一实施例提供的一种分布式数据聚合方法的流程图。下面将对图3所示的具体流程进行详细阐述。
步骤S401:接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
作为一种实施方式,其中接收第一数据查询指令是指接收外部发送的第一数据查询指令,其中可以是用户基于用户终端发送的第一数据查询指令。
其中,所述开始数据和所述目标数据共同构成分页查询的起始参数与目标参数,即当所述第一查询条件为分页查询时,所述开始数据为分页查询的起始数据,即所述开始数据等于目标查找数据的值乘以每一页存储的数据的数量的值的乘积。其中,所述目标数据表示该第一查询条件欲获取的查询数量。例如:现有第一数据查询指令,该第一数据查询指令的数据格式如下:select order_id,order_date from table_order order byorder_date desc limit 20,10。其中,20为开始数据,10为目标数据。
步骤S402:基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
其中,所述第一预设规则是指将开始数据赋值为零从而形成起始数据以及将目标数据与开始数据之和赋值给结束数据的一种规则。其中,待查询数据是指当前所有数据节点存储的数据,即待查询数据为多个数据节点存储的总数据。待查询数据中的第一个数据是指在不同数据节点执行所述第二查询条件时的查询起始数据。
其中,结束数据为所述开始数据与所述目标数据之和是指结束数据的值为开始数据的值与目标数据的值的和。例如:现有第一数据查询指令,该第一数据查询指令的数据格式如下::select order_id,order_date from table_order order by order_date desclimit 20,10。其中,第一查询条件为limit 20,10,则第二查询条件为limit 0,30。其中,初始数据为0,结束数据为30,其中结束数据的值30等于开始数据的值20加上目标数据的值10。
步骤S403:生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
其中,所述第二数据查询指令基于所述第二查询条件生成。例如第一数据查询指令为select order_id,order_date from table_order order by order_date desclimit 20,10,其中,第一查询条件为limit 20,10,则第二查询条件为limit 0,30,则第二数据查询指令为select order_id,order_date from table_order order by order_datedesc limit 0,30。
步骤S404:将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
其中,将所述第二数据查询指令分别发送给多个数据节点是指将第二数据查询指令依次发送到每一个数据节点,即为每一个数据节点发送一个第二数据查询指令。以使第二数据查询指令能够在每一个数据节点执行。
得到所述第二数据查询指令所查询的第二查询结果是指从各个数据节点返回的查询结果的总和,即第二查询结果为每个数据节点查询结果的累加,即将每个数据节点查询结果存储在第二查询结果内。
步骤S405:基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
其中,在第二查询结果中执行第一查询条件,从而获得第一数据查询指令执行后的第一查询结果。
作为一种实施方式,例如,当前存在两个数据节点,两个数据节点分别为dn1和dn2,dn1中存储的数据如下表所示:
order_id | user_id | status |
1000 | 10 | INIT |
1002 | 10 | INIT |
1004 | 10 | INIT |
1006 | 10 | INIT |
1008 | 10 | INIT |
Dn2中存储的数据如下表所示:
order_id | user_id | status |
1001 | 10 | INIT |
1003 | 10 | INIT |
1005 | 10 | INIT |
1007 | 10 | INIT |
1009 | 10 | INIT |
其中,每页显示2条数据,第一数据查询指令为SELECT order_id,`status`FROMt_order WHERE user_id=10 ORDER BY o.order_id DESC LIMIT 4,2,第二数据查询指令为SELECT order_id,`status`FROM t_order WHERE user_id=10 ORDER BY o.order_idDESC LIMIT 0,6,则第二查询结果如下表所示:
order_id | user_id | status |
1000 | 10 | INIT |
1001 | 10 | INIT |
1002 | 10 | INIT |
1003 | 10 | INIT |
1004 | 10 | INIT |
1005 | 10 | INIT |
1006 | 10 | INIT |
1007 | 10 | INIT |
1008 | 10 | INIT |
1009 | 10 | INIT |
在第二查询的结果中执行第一数据查询指令的第一查询条件后的第一查询结果如下表所示:
本发明第一实施例提供一种分布式数据聚合方法,通过第二数据查询指令所携带的第二查询条件从每个数据节点获取足够多的数据,从而使得第一数据查询指令能够从第二数据查询指令所获取到的结果中获取该第一数据查询指令欲获取的查询结果,从而实现跨多个存储节点查询后对于查询结果的聚合操作问题。
请参阅图4,是本发明第二实施例提供的一种分布式数据聚合方法的流程图。下面将对图4所示的具体流程进行详细阐述。
步骤S601,接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
步骤S602,基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
步骤S601和步骤S602的具体实施方式可以参考第一实施例对应的步骤S401和步骤S402,在此不再赘述。
步骤S603,获取所述第一数据查询指令所携带的列字段。
其中,所述列字段是指存在于第一数据查询指令种,且需要通过该列字段对查询到的数据进行相应的操作。
步骤S604,当所述列字段为Distinct时,将所述列字段修改为Group By,生成第二数据查询指令。
作为一种实施方式,例如第一数据查询指令为SELECT DISTINCT order_id FROMt_order,则修改后的第二数据查询指令为SELECT order_id FROM t_order GROUP BYorder_id。
步骤S605,将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
步骤S606,基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
步骤S605和步骤S606的具体实施方式可以参考第一实施例对应的步骤S404和步骤S405,在此不再赘述。
本发明第二实施例提供一种分布式数据聚合方法,通过改写第一数据查询指令种的列字段,从而生成第二数据查询指令,从而通过第二数据查询指令从每个数据节点获取足够多的数据,进而使得第一数据查询指令能够从第二数据查询指令所获取到的结果中获取该第一数据查询指令欲获取的查询结果,从而实现跨多个存储节点查询后对于查询结果的聚合操作问题。
请参阅图5,是本发明第三实施例提供的一种分布式数据聚合方法的流程图。下面将对图5所示的具体流程进行详细阐述。
步骤S701,接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
步骤S702,基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
步骤S703,生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
步骤S704,将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
步骤S701、步骤S702、步骤S703和步骤S704的具体实施方式可以参考第一实施例对应的步骤S401、步骤S402、步骤S404和步骤S405,在此不再赘述。
步骤S705,获取所述第二查询结果。
其中,从各个数据节点获取第二查询指令在每个数据节点执行后的结果,所有的结果的总和即为第二查询结果。
步骤S706,根据所述第一查询条件的所述开始数据和所述目标数据,在所述第二查询结果中执行所述第一查询条件,获取所述第一数据查询指令的第一查询结果。
其中,基于所述第一查询条件的所述开始数据和所述目标数据,在第二查询结果中去执行该第一查询条件,从而获取第一数据查询指令欲查询的第一查询结果。
请参阅图6,是本发明第四实施例提供的一种分布式数据聚合方法的流程图。下面将对图6所示的具体流程进行详细阐述。
步骤S801,接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
步骤S802,基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
步骤S803,生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
步骤S804,将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
步骤S801、步骤S802、步骤S803和步骤S804的具体实施方式可以参考第一实施例对应的步骤S401、步骤S402、步骤S404和步骤S405,在此不再赘述。
步骤S805,当所述第二数据查询指令所携带有分组条件时,将所述第二查询结果加入第一结果集内。
作为一种实施方式,所述分组条件可以是Group By字段。即当所述第二数据查询指令中存在Group By字段时,将所述第二查询结果加入第一结果集内。其中,第一结果集用于存储第二查询结果。
步骤S806,遍历已有所述第一结果集,将从所述第一结果集遍历到的第一数据与预设第二结果集内存储的第二数据进行比对,当所述第一数据与所述第二数据不是相同分组列时,将所述第一数据加入所述第二结果集。
其中,遍历是指依次访问第一结果集内存储的数据,并且每个数据仅访问一次。预设第二结果集为新建的一个空的集合,即所述第二结果集的初始数据为空。
其中,当所述第一数据与所述第二数据不是相同分组列时是指,所述第一数据与所述第二数据的属性不同。例如,第二数据查询指令为SELECT user_id,SUM(amount)AStotalAmount,FROM`t_order`GROUP BY user_id,则根据GROUP BY后面跟着的user_id字段的值来判断第一数据与第二数据是否是相同分组列。
步骤S807,当所述第一数据与所述第二数据是相同分组列时,并且所述第二数据查询指令中携带有合计函数时,遍历所述第二结果集内存储的数据,获取执行所述合计函数后的结果。
其中,合计函数是指例如COUNT、SUM、MAX、MIN或AVG函数等一系列函数。
作为一种实施方式,例如,当前存在两个数据节点,两个数据节点分别为dn1和dn2,其中,dn1中存储的数据如下表所示:
order_id | user_id | amount |
1000 | 10 | 1.00 |
1002 | 10 | 1.00 |
1004 | 10 | 1.00 |
1006 | 10 | 1.00 |
1008 | 10 | 1.00 |
Dn2中存储的数据如下表所示:
order_id | user_id | amount |
1001 | 10 | 1.00 |
1003 | 10 | 1.00 |
1005 | 10 | 1.00 |
1007 | 10 | 1.00 |
1009 | 10 | 1.00 |
其中,第二数据查询指令为SELECT user_id,SUM(amount)AS totalAmount,FROM`t_order`GROUP BY user_id。将第二数据查询指令分别在dn1,dn2中去执行,则在dn1中执行后的结果为:
则在dn2中执行后的结果为:
将从dn1和dn2获取的结果存入第一结果集,遍历第一结果集,从第一结果集取出第一个数据,将第一数据与第二结果集中的数据进行比对,当第二结果集中没有该数据时,将该数据加入第二结果集,继续比例第一结果集,从第一结果集取出第二个数据,当第二结果集内存储的第一个数据时,将第二结果集中的第一个数据与从第一结果集取出第二个数据进行比较,判断两个数据的分组列是否相同,当相同时,则将两个数据进行合并,并将合并后的结果存入第二结果集内,将第一次存入的数据替换掉。其中,合并是指第一个数据的user_id相同时,将第一个数据的totalAmount值与第二个数据的totalAmount的值相加。
步骤S808,根据所述获取执行所述合计函数后的结果更新所述第二结果集中的所述第二数据,获取所述第一数据查询指令的第一查询结果。
请参阅图7,是本发明第五实施例提供的一种分布式数据聚合装置的功能模块示意图。所述装置10包括数据接收单元11、查询条件生成单元12、数据生成单元13、数据执行单元14和数据获取单元15。
数据接收单元11,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
查询条件生成单元12,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
其中,查询条件生成单元12还包括数据获取子单元121、数据修改第一子单元122、数据修改第二子单元123和查询条件生成子单元124。
数据获取子单元121,用于获取所述第一数据查询指令所携带的所述开始数据和所述目标数据。
数据修改第一子单元122,用于将所述开始数据置为零并生成第二查询条件的起始数据。
数据修改第二子单元123,用于将所述开始数据的初始值与所述目标数据的初始值相加并生成第二查询条件的结束数据的值。
查询条件生成子单元124,用于生成所述第二查询条件。
数据生成单元13,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
数据执行单元14,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
数据获取单元15,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
请参阅图8,是本发明第六实施例提供的一种分布式数据聚合装置的功能模块示意图。所述装置30包括数据接收单元31、查询条件生成单元32、数据生成单元33、数据执行单元34和数据获取单元35。
数据接收单元31,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
查询条件生成单元32,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
数据生成单元33,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
其中,所述数据生成单元33还包括数据获取子单元331和数据生成子单元332。
数据获取子单元331,用于获取所述第一数据查询指令所携带的列字段。
数据生成子单元332,用于当所述列字段为Distinct时,将所述列字段修改为Group By,生成第二数据查询指令。
数据执行单元34,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
数据获取单元35,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
请参阅图9,是本发明第七实施例提供的一种分布式数据聚合装置的功能模块示意图。所述装置40包括数据接收单元41、查询条件生成单元42、数据生成单元43、数据执行单元44和数据获取单元45。
数据接收单元41,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
查询条件生成单元42,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
数据生成单元43,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
数据执行单元44,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
数据获取单元45,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
其中,所述数据获取单元45包括数据获取子单元451和查询条件生成子单元452。
数据获取子单元451,用于获取所述第二查询结果。
查询条件生成子单元452,用于根据所述第一查询条件的所述开始数据和所述目标数据,在所述第二查询结果中执行所述第一查询条件,获取所述第一数据查询指令的第一查询结果。
请参阅图10,是本发明第八实施例提供的一种分布式数据聚合装置的功能模块示意图。所述装置50包括数据接收单元51、查询条件生成单元52、数据生成单元53、数据执行单元54和数据获取单元55。
数据接收单元51,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据。
查询条件生成单元52,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和。
数据生成单元53,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令。
数据执行单元54,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果。
数据获取单元55,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
其中,所述数据获取单元55包括数据处理子单元551、数据比对子单元552、数据获取第一子单元553和数据获取第二子单元554。
数据处理子单元551,用于当所述第二数据查询指令所携带有分组条件时,将所述第二查询结果加入第一结果集内。
数据比对子单元552,用于遍历已有所述第一结果集,将从所述第一结果集遍历到的第一数据与预设第二结果集内存储的第二数据进行比对,当所述第一数据与所述第二数据不是相同分组列时,将所述第一数据加入所述第二结果集。
数据获取第一子单元553,用于当所述第一数据与所述第二数据是相同分组列时,并且所述第二数据查询指令中携带有合计函数时,遍历所述第二结果集内存储的数据,获取执行所述合计函数后的结果。
数据获取第二子单元554,用于根据所述获取执行所述合计函数后的结果更新所述第二结果集中的所述第二数据,获取所述第一数据查询指令的第一查询结果。
综上所述,本发明实施例提供一种分布式数据聚合方法和装置,通过第二数据查询指令所携带的第二查询条件从每个数据节点获取足够多的数据,从而使得第一数据查询指令能够从第二数据查询指令所获取到的结果中获取该第一数据查询指令欲获取的查询结果,从而实现跨多个存储节点查询后对于查询结果的聚合操作问题。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (10)
1.一种分布式数据聚合方法,其特征在于,包括:
接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据;
基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和;
生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令;
将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果;
基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
2.根据权利要求1所述的方法,其特征在于,所述基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和的步骤包括:
获取所述第一数据查询指令所携带的所述开始数据和所述目标数据;
将所述开始数据置为零并生成第二查询条件的起始数据;
将所述开始数据的初始值与所述目标数据的初始值相加并生成第二查询条件的结束数据的值;
生成所述第二查询条件。
3.根据权利要求1所述的方法,其特征在于,所述生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令的步骤,还包括:
获取所述第一数据查询指令所携带的列字段;
当所述列字段为Distinct时,将所述列字段修改为GroupBy,生成第二数据查询指令。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果的步骤包括:
获取所述第二查询结果;
根据所述第一查询条件的所述开始数据和所述目标数据,在所述第二查询结果中执行所述第一查询条件,获取所述第一数据查询指令的第一查询结果。
5.根据权利要求1所述的分布式数据聚合方法,其特征在于,所述基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果的步骤包括:
当所述第二数据查询指令所携带有分组条件时,将所述第二查询结果加入第一结果集内;
遍历已有所述第一结果集,将从所述第一结果集遍历到的第一数据与预设第二结果集内存储的第二数据进行比对,当所述第一数据与所述第二数据不是相同分组列时,将所述第一数据加入所述第二结果集;
当所述第一数据与所述第二数据是相同分组列时,并且所述第二数据查询指令中携带有合计函数时,遍历所述第二结果集内存储的数据,获取执行所述合计函数后的结果;
根据所述获取执行所述合计函数后的结果更新所述第二结果集中的所述第二数据,获取所述第一数据查询指令的第一查询结果。
6.一种分布式数据聚合装置,其特征在于,包括:
数据接收单元,用于接收第一数据查询指令,获取所述第一数据查询指令所携带的第一查询条件,所述第一查询条件包括开始数据和目标数据;
查询条件生成单元,用于基于第一预设规则修改所述第一查询条件生成第二查询条件,所述第二查询条件的查询范围的起始数据为待查询数据中的第一个数据,结束数据为所述开始数据与所述目标数据之和;
数据生成单元,用于生成携带有所述起始数据与所述结束数据的所述第二查询条件的第二数据查询指令;
数据执行单元,用于将所述第二数据查询指令分别发送给多个数据节点,接收所述多个数据节点各自返回的查询结果,得到所述第二数据查询指令所查询的第二查询结果;
数据获取单元,用于基于所述第一查询条件从所述第二查询结果中获取所述第一数据查询指令的第一查询结果。
7.根据权利要求6所述的装置,其特征在于,所述查询条件生成单元包括:
数据获取子单元,用于获取所述第一数据查询指令所携带的所述开始数据和所述目标数据;
数据修改第一子单元,用于将所述开始数据置为零并生成第二查询条件的起始数据;
数据修改第二子单元,用于将所述开始数据的初始值与所述目标数据的初始值相加并生成第二查询条件的结束数据的值;
查询条件生成子单元,用于生成所述第二查询条件。
8.根据权利要求6所述的装置,其特征在于,所述数据生成单元还包括:
数据获取子单元,用于获取所述第一数据查询指令所携带的列字段;
数据生成子单元,用于当所述列字段为Distinct时,将所述列字段修改为Group By,生成第二数据查询指令。
9.根据权利要求6所述的装置,其特征在于,所述数据获取单元包括:
数据获取子单元,用于获取所述第二查询结果;
查询条件生成子单元,用于根据所述第一查询条件的所述开始数据和所述目标数据,在所述第二查询结果中执行所述第一查询条件,获取所述第一数据查询指令的第一查询结果。
10.根据权利要求6所述的装置,其特征在于,所述数据获取单元包括:
数据处理子单元,用于当所述第二数据查询指令所携带有分组条件时,将所述第二查询结果加入第一结果集内;
数据比对子单元,用于遍历已有所述第一结果集,将从所述第一结果集遍历到的第一数据与预设第二结果集内存储的第二数据进行比对,当所述第一数据与所述第二数据不是相同分组列时,将所述第一数据加入所述第二结果集;
数据获取第一子单元,用于当所述第一数据与所述第二数据是相同分组列时,并且所述第二数据查询指令中携带有合计函数时,遍历所述第二结果集内存储的数据,获取执行所述合计函数后的结果;
数据获取第二子单元,用于根据所述获取执行所述合计函数后的结果更新所述第二结果集中的所述第二数据,获取所述第一数据查询指令的第一查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610933830.9A CN107977378B (zh) | 2016-10-25 | 2016-10-25 | 一种分布式数据聚合方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610933830.9A CN107977378B (zh) | 2016-10-25 | 2016-10-25 | 一种分布式数据聚合方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107977378A true CN107977378A (zh) | 2018-05-01 |
CN107977378B CN107977378B (zh) | 2021-11-02 |
Family
ID=62004730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610933830.9A Active CN107977378B (zh) | 2016-10-25 | 2016-10-25 | 一种分布式数据聚合方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107977378B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241050A (zh) * | 2018-07-10 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及系统、电子设备 |
CN109977137A (zh) * | 2019-02-22 | 2019-07-05 | 视联动力信息技术股份有限公司 | 一种数据查询方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120239688A1 (en) * | 2009-12-04 | 2012-09-20 | Takatoshi Yanase | Table lookup apparatus, table lookup method, and table lookup system |
CN103530378A (zh) * | 2013-10-15 | 2014-01-22 | 福建榕基软件股份有限公司 | 数据分页查询与数据库的构建的方法与装置 |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
CN104572676A (zh) * | 2013-10-16 | 2015-04-29 | 中国银联股份有限公司 | 一种针对多数据库表的跨库分页查询方法 |
US20160292234A1 (en) * | 2014-12-12 | 2016-10-06 | Infosys Limited | Method and system for searching in a distributed database |
-
2016
- 2016-10-25 CN CN201610933830.9A patent/CN107977378B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120239688A1 (en) * | 2009-12-04 | 2012-09-20 | Takatoshi Yanase | Table lookup apparatus, table lookup method, and table lookup system |
CN103678408A (zh) * | 2012-09-21 | 2014-03-26 | 阿里巴巴集团控股有限公司 | 一种查询数据的方法及装置 |
CN103530378A (zh) * | 2013-10-15 | 2014-01-22 | 福建榕基软件股份有限公司 | 数据分页查询与数据库的构建的方法与装置 |
CN104572676A (zh) * | 2013-10-16 | 2015-04-29 | 中国银联股份有限公司 | 一种针对多数据库表的跨库分页查询方法 |
CN104123374A (zh) * | 2014-07-28 | 2014-10-29 | 北京京东尚科信息技术有限公司 | 分布式数据库中聚合查询的方法及装置 |
US20160292234A1 (en) * | 2014-12-12 | 2016-10-06 | Infosys Limited | Method and system for searching in a distributed database |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241050A (zh) * | 2018-07-10 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及系统、电子设备 |
CN109977137A (zh) * | 2019-02-22 | 2019-07-05 | 视联动力信息技术股份有限公司 | 一种数据查询方法和装置 |
CN109977137B (zh) * | 2019-02-22 | 2021-07-09 | 视联动力信息技术股份有限公司 | 一种数据查询方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107977378B (zh) | 2021-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9104681B2 (en) | Social network service system and method for recommending friend of friend based on intimacy between users | |
JP5560367B2 (ja) | ネットワーク内の友人の動的情報を管理するための方法、システムおよびサーバ | |
CN107169010A (zh) | 一种推荐搜索关键词的确定方法及装置 | |
CN105956148A (zh) | 资源信息的推荐方法和装置 | |
WO2013085564A2 (en) | Methods and systems to filter and display electronic messages | |
CN110555172B (zh) | 用户关系挖掘方法及装置、电子设备和存储介质 | |
CN106909495B (zh) | 一种数据的窗口统计方法、装置及系统 | |
CN104572889A (zh) | 一种搜索词推荐方法、装置和系统 | |
CN102301342A (zh) | 正则表达式匹配方法和系统及查找装置 | |
CN102298650B (zh) | 一种海量数字信息的分布式推荐方法 | |
WO2019052162A1 (zh) | 提高数据清洗效率的方法、装置、设备及可读存储介质 | |
CN109086456B (zh) | 数据索引方法及装置 | |
CN104268295A (zh) | 一种数据查询方法及装置 | |
EP2530610A1 (en) | Apparatus and method of searching and visualizing instance path | |
CN105574030A (zh) | 一种信息搜索方法及装置 | |
CN107977378A (zh) | 一种分布式数据聚合方法和装置 | |
JP2019520627A (ja) | データベース中にグラフ情報を記憶するためのb木使用 | |
CN104102662A (zh) | 一种用户兴趣偏好相似度确定方法及装置 | |
US20190050672A1 (en) | INCREMENTAL AUTOMATIC UPDATE OF RANKED NEIGHBOR LISTS BASED ON k-th NEAREST NEIGHBORS | |
CN108763369A (zh) | 一种视频搜索方法和装置 | |
Simard et al. | Computing betweenness centrality in link streams | |
US20170365020A1 (en) | Systems and methods for generating strategic competitive intelligence data relevant for an entity | |
CN104933149A (zh) | 一种信息搜索方法及装置 | |
CN111310287B (zh) | 一种机械结构信息的推荐方法及装置 | |
CN115329150A (zh) | 生成搜索条件树的方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |