CN111339132B - 一种数据查询的方法及数据库代理 - Google Patents
一种数据查询的方法及数据库代理 Download PDFInfo
- Publication number
- CN111339132B CN111339132B CN201811549994.7A CN201811549994A CN111339132B CN 111339132 B CN111339132 B CN 111339132B CN 201811549994 A CN201811549994 A CN 201811549994A CN 111339132 B CN111339132 B CN 111339132B
- Authority
- CN
- China
- Prior art keywords
- data
- database
- response data
- distributed
- node
- 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.)
- Active
Links
Images
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
-
- 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
-
- 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/2457—Query processing with adaptation to user needs
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据查询的方法及数据库代理,其中该方法包括:当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端。如此,通过预设值来控制数据库代理PROXY端排序读的内存使用,从而提升系统的高可用性。
Description
技术领域
发明实施例涉及但不限于分布式数据库技术,更具体的涉及一种数据查询的方法及数据库代理。
背景技术
分布式数据库中的表数据按照某种分发策略会分布在不同的数据节点中,如果执行语句涉及到排序,并且读取的数据涉及到多个数据节点时,需要分布式数据服务代理服务器PROXY将各个数据节点返回的所有响应数据都保存在本地内存中,统一排序并且发送给客户端。涉及到千万级、甚至上亿级的数据时,执行排序操作对服务器的内存要求较高。
并且客户端高并发通过PROXY执行排序语句,会因为使用内存过大导致PROXY进程被内核oom killer(Out-Of-Memory killer)机制kill掉,影响正常业务使用。
发明内容
有鉴于此,本发明实施例提供了一种数据查询的方法,包括:
当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;
当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端。
本发明实施例还提供了一种数据库代理,包括:
获取及存储单元,用于当分布式数据库中任一个数据节点返回的响应数据就绪时,从接收缓冲区获取就绪的响应数据本地存储;
排序及发送单元,用于当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,将本地存储的响应数据进行排序后发送给客户端。
本发明实施例还提供了一种数据库代理,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述数据查询的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述数据查询的方法的步骤。
与相关技术相比,本发明实施例提供了一种数据查询的方法及数据库代理,其中该方法包括:当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端。如此,通过预设值来控制数据库代理PROXY端排序读的内存使用,从而提升系统的高可用性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例一提供的数据查询方法的流程示意图;
图2为本发明实施例二提供的数据查询方法的流程示意图;
图3为本发明实施例三提供的数据查询方法的流程示意图;
图4为本发明实施例四提供的数据查询方法的流程示意图;
图5为本发明实施例五提供的数据库代理的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
分布式数据库中,数据分布在多个数据节点。当客户端查询数据时,数据库代理需要对查询的数据进行本地排序,高并发通过PROXY执行排序语句的情况下,要求存储查询数据的本地内存占用机器内存比例较大,内存不够用时,容易被内核oom killer机制kill掉,影响正常业务使用。
有鉴于此,本发明实施例提出了一种新的数据查询方案,通过预设值(例如单次读取数据行数)来控制PROXY端排序读语句的内存使用,从而提升系统的高可用性。
实施例一
图1为本发明实施例一提供的数据查询方法的流程示意图,如图1所示,该方法包括:
步骤101,当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;
步骤102,当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端。
其中,在分布式数据库返回响应数据之前,该方法还包括:
数据库代理接收所述客户端发送的查询请求,所述查询请求用于向所述分布式数据库获取数据并携带排序要求;
数据库代理将所述查询请求拆分成对应分布式数据库中各个数据节点的分布式请求,并发送给对应的各个数据节点;
所述分布式请求用于向对应的数据节点获取数据并携带排序要求。
其中,在数据库代理接收所述客户端发送的查询请求之前,该方法还包括:
预先配置所述预设值,并分别为分布式数据库中各个数据节点分配所述预设值大小的内存。
其中,所述当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储,包括:
当分布式数据库中任一个数据节点返回的响应数据就绪时,所述数据库代理随机分配线程池中的空闲线程,从接收缓冲区中获取所述就绪的响应数据本地存储。
其中,所述数据库代理将本地存储的响应数据进行排序后发送给客户端,包括:
所述数据库代理中获取所述分布式数据库中最后一个数据节点就绪的响应数据的线程,负责将本地存储的响应数据进行排序,生成最大连续的行数据列表并发送给所述客户端。
其中,在生成最大连续的行数据列表并发送给所述客户端之后,该方法还包括:
通知所有线程继续获取所有数据节点剩下的响应数据,当从所述分布式数据库中各个数据节点再次获取的响应数据大小都达到预设值时,再次将本地存储的响应数据进行排序后发送给客户端;
以此类推,直至所述数据库代理接收完所有数据节点的所有响应数据并且排序后发送给所述客户端。
其中,所述数据库代理将对应分布式数据库中各个数据节点的分布式请求发送给对应的各个数据节点,包括:
所述数据库代理通过不同数据节点相应的tcp链路将对应分布式数据库中各个数据节点的分布式请求发送给对应的数据节点;
该方法还包括:
所述数据库代理监听所述相应的tcp链路的socket对象,等待各个数据节点的响应数据;
当epoll就绪队列中有任一个数据节点的响应数据时,表示所述任一个数据节点的响应数据就绪。
下面通过几个具体的实施例详细阐述上述实施例一提供的技术方案。
实施例二
图2为本发明实施例二提供的数据查询方法的流程示意图,如图2所示,该方法包括:
步骤201,数据库代理发送分布式查询请求给分布式数据库中所有的数据节点,等待响应数据;
其中,在步骤201之前,数据库代理接收客户端发送的查询请求,并将该查询请求拆分为对应分布式数据库中各个数据节点的分布式查询请求。
具体而言,例如数据库代理接收客户端发送的select order by请求(即查询请求),数据库代理针对分布式数据库中每个数据节点生成相应的select order by执行语句(即分布式查询请求)后,分别发送给各个数据节点。
步骤202,当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;
其中,在数据库代理接收所述客户端发送的查询请求之前,预先配置预设值,并分别为分布式数据库中各个数据节点分配所述预设值大小的内存。本实施例二中,所述预设值为单次读取数据行数。
具体而言,在缓存数据前,每个数据节点对应地申请预设值大小的内存,使用双向链表放入空闲队列管理,方便内存复用,减少内存碎片。
其中,数据库代理利用线程池中的多线程缓存各个数据库节点的响应数据,根据预设值从socket缓冲区中缓存数据到本地存储。
具体而言,数据库代理以行数据为单位,调用线程池中的空闲线程依次从空闲队列获取各个数据节点存入的响应数据,(数据长度超出预申请内存大小(预设值),重新动态分配)放入使用队列管理,方便后续数据排序。
步骤203,当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端;
其中,缓存数据使用前:各个数据节点的缓存数据在使用队列中排序,生成一组最大连续的行数据列表。缓存数据使用时:根据生成的行数据列表,从使用队列删除缓冲区,放入空闲队列管理。
具体而言,由于各个数据节点和数据库代理之间的不同网络延迟,数据库代理接收不同数据节点的响应数据结束时间不一样,接收结束最后一个数据节点响应数据的线程负责排序,生成最大连续的行数据列表并发送列表所有数据给客户端,以及重新通知所有线程继续接收所有节点剩下的数据。处理数据的线程将所有任务放入就绪队列等待继续获取数据,通知线程池中线程继续执行任务。
步骤204,重复执行步骤202、203,直到数据库代理接收完所有数据节点的响应数据并且发送给客户端。
实施例三
本实施例三中,客户端查询数据表t1,数据表t1的数据分布在3个节点(group1、group2、group3),本实施例中预先配置的预设值为单次读取数据行数为1000行数据,并预先为group1、group2、group3各自分配1000行数据大小的内存。
图3为本发明实施例三提供的数据查询方法的流程示意图,如图3所示,该方法包括:
步骤301,客户端通过数据库代理proxy将select ordey by语句下发给数据节点group1、group2、group3;
步骤302,proxy通过epoll监听步骤301中下发过select ordey by语句的tcp链路,等待就绪数据;
其中,如果没有就绪数据,那么需要继续等待tcp数据响应;如果有就绪数据,那么将当前链路上获取数据的任务交给另外的线程去获取数据。
步骤303,当数据节点group1、group2、group3中任一个返回的响应数据就绪时,调用线程池中的空闲线程从接收缓存区获取就需的数据本地存储;
其中,所述本地存储是指,将获取的就绪响应数据存储到本地内存。
其中,如果当前数据节点数据获取结束或者获取行数达到1000行数据大小,那么等待其他节点的数据获取完成;否则继续步骤302等待就绪数据。
步骤304,group1、group2、group3三个节点只要其他两个数据节点的数据没有获取完成,就继续等它们获取完成;否则阶段性数据获取结束,就进行排序,执行步骤305;
其中,数据节点的数据获取完成是指该数据节点本地存储的数据大小达到1000行数据大小,或者数据获取结束。阶段性数据获取结束是指三个数据节点group1、group2、group3中任一个本地存储的数据大小都达到1000行数据大小或者数据获取结束
步骤305,将group1、group2、group3三个节点本地存储的数据按照order by的字段值大小进行排序,排除当前的最大连续的数据,然后将这些数据按照mysql协议发送到请求的客户端;
步骤306,如果group1、group2、group3三个节点的所有数据全部获取结束,至此当前语句执行结束;否则继续步骤步骤302到305的流程。
实施例四
本实施例四中,客户端查询数据表t1,表t1中数据一行大概128字节,总共一亿行,总共预存数据量12.8GB。,按照主键a通过hash策略整个表t1数据分布在group1(数据库1)、group2(数据库2)、group3(数据库3)三个节点,每个group节点大概4GB左右数据。
预先配置预设值即单次读取数据行数为1000行数据,并预先为group1、group2、group3各自分配1000行数据大小的内存。3个节点预留内存大小分布为1000条,就是说每阶段每个数据节点获取一千条数据,那么阶段性数据需要内存384KB。
图4为本发明实施例四提供的数据查询方法的流程示意图,如图4所示,该方法包括:
步骤401,客户端发送select order by请求给数据库代理Proxy;
步骤402,Proxy将客户端请求拆成分布式请求,生成对应数据库节点(group1、group2、group3)的请求,并通过不同节点相应的tcp链路发送给对应数据库节点,同时Proxy监听当前请求所涉及的所有子请求tcp链路的socket对象,等待节点的数据响应;
步骤403,待epoll就绪队列中有group1、group2、group3节点的响应数据时,Proxy随机分配线程池中的空闲线程,从tcp接收缓冲区中获取数据本地存储,当所有数据节点获取行数据都达到1000行大小时,当前阶段所有需要获取的数据就结束;
其中,剩下的响应数据下个阶段继续获取(实际上有的线程已经开始重复步骤403的操作,获取行数据本地存储)。每个数据节点的数据就绪时,都会通知空闲线程去存储就绪数据到本地内存,当一个数据节点当前阶段所需数据(1000行数据大小)存储结束,目前的线程就去存储下个阶段的数据,这样不会出现单个线程饿死的情况。
步骤404,三个节点(group1、group2、group3)的本地内存存储的数据按照orderby的字段值大小排序,生成一组最大连续的行数据列表;
其中,可以通过将缓存数据的使用队列进行排序,生成一组最大连续的行数据列表。
其中,每个数据节点的数据通过语句控制有序性,就是说返回的单节点的数据结果在未排序前就是有序的,此处排序是将多个数据节点的数据整体排序,并且是中间某个阶段的排序(例如很有可能多个数据节点阶段排序结束之后,获取的数据只使用了部分数据,还有部分数据需要后续数据确定是否是连续的)。例如本实施例中,单个节点的1000条数据在数据库返回时是有序的,可能会有以下情况需要处理:①单个数据节点不需要排序,已经是有序序列;②多个数据节点排序需要生成当前已知的有序连续序列,剩下无法判断的留到下次排序。
步骤405,Proxy将当前最大连续的列表行数据,按照mysql协议发送到请求的客户端。
图4为单个阶段的时序图,如果有节点数据没有取完,继续重复上述阶段的步骤403-405,直到所有数据节点的数据取完并且发送给客户端,至此当前select order by语句执行结束。
相较于相关技术中所有数据节点的全部响应数据都接收完成之后才去排序,而本实施例四提供的技术方案可以一边接收数据一边排序,增加处理数据能力,充分使用cpu。例如,本实施例中,第一阶段每个数据节点1000条数据就绪,等待排序,第二阶段和第三阶段等数据就绪50%,等到第二阶段数据就绪排序时,可能后面很多阶段数据都已经开始存储本地,相比之前数据全部存储到本地,再进行排序,不仅耗时间又耗内存。每个数据节点每阶段一般都使用一个线程,假设并发使用一千个线程,那么每阶段使用内存384MB,考虑到接收数据和处理数据是不同的线程,所以是384M*2=768M,极大地降低了内存使用。
本发明实施例四提供的技术方案,表数据分布在多个数据节点,相应地排序也会涉及到多数据节点的响应数据,每个数据节点的响应数据在获取时是有序返回的,在执行阶段,单个数据节点的数据通过SQL语句控制有序性;这样一旦某阶段本地存储完成多个数据节点的有序数据,按照一定的排序策略实现阶段性排序。
本发明实施例四提供的技术方案,单个数据节点阶段性的数据通过单独线程去获取数据,这样多个数据节点阶段性数据就会使用多线程处理数据,增加处理速度;每个阶段处理的数据可以相互独立,也就是说第一阶段处理数据排序时,那么第二阶段的数据也有可能在处理排序,增加处理数据的并发性。
本发明实施例四提供的技术方案,表数据涉及到多数据节点,所以很有可能数据会出现一部分数据节点数据已经就绪,一部分数据还在接收或者等待接收,这样某部分就绪数据的线程就可以就绪获取其他阶段的数据,资源得到充分利用。
实施例五
图5为本发明实施例五提供的数据库代理的结构示意图,如图5所示,该数据库代理包括:
获取及存储单元,用于当分布式数据库中任一个数据节点返回的响应数据就绪时,从接收缓冲区获取就绪的响应数据本地存储;
排序及发送单元,用于当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,将本地存储的响应数据进行排序后发送给客户端。
其中,该包括:
接收单元,用于接收所述客户端发送的查询请求,所述查询请求用于向所述分布式数据库获取数据并携带排序要求;
拆分及发送单元,用于将所述查询请求拆分成对应分布式数据库中各个数据节点的分布式查询请求,并发送给对应的各个数据节点;
所述分布式查询请求用于向对应的数据节点获取数据并携带排序要求。
其中,还包括:
配置单元,用于在数据库代理接收所述客户端发送的查询请求之前,预先配置所述预设值,并分别为分布式数据库中各个数据节点分配所述预设值大小的内存。
其中,获取及存储单元,具体用于当分布式数据库中任一个数据节点返回的响应数据就绪时,所述数据库代理随机分配线程池中的空闲线程,从接收缓冲区中获取所述就绪的响应数据本地存储。
其中,排序及发送单元,具体用于所述数据库代理中获取所述分布式数据库中最后一个数据节点就绪的响应数据的线程,负责将本地存储的响应数据进行排序,生成最大连续的行数据列表并发送给所述客户端。
其中,还包括:
通知单元,用于通知所有线程继续获取所有数据节点剩下的响应数据,
排序及发送单元,还用于当从所述分布式数据库中各个数据节点再次获取的响应数据大小都达到预设值时,再次将本地存储的响应数据进行排序后发送给客户端;
以此类推,直至所述数据库代理接收完所有数据节点的所有响应数据并且排序后发送给所述客户端。
其中,所述拆分及发送单元,具体用于通过不同数据节点相应的tcp链路将对应分布式数据库中各个数据节点的分布式查询请求发送给对应的数据节点;
还包括监听单元,用于所述相应的tcp链路的socket对象,等待各个数据节点的响应数据;
当epoll就绪队列中有任一个数据节点的响应数据时,表示所述任一个数据节点的响应数据就绪。
本发明实施例还提供了一种数据库代理,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一项所述数据查询的方法。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现上述任一项所述数据查询的方法的步骤。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (10)
1.一种数据查询的方法,包括:
当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储;
当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,数据库代理将本地存储的响应数据进行排序后发送给客户端。
2.根据权利要求1所述的方法,其特征在于,在分布式数据库返回响应数据之前,该方法还包括:
数据库代理接收所述客户端发送的查询请求,所述查询请求用于向所述分布式数据库获取数据并携带排序要求;
数据库代理将所述查询请求拆分成对应分布式数据库中各个数据节点的分布式查询请求,并发送给对应的各个数据节点;
所述分布式查询请求用于向对应的数据节点获取数据并携带排序要求。
3.根据权利要求2所述的方法,其特征在于,在数据库代理接收所述客户端发送的查询请求之前,该方法还包括:
预先配置所述预设值,并分别为分布式数据库中各个数据节点分配所述预设值大小的内存。
4.根据权利要求1所述的方法,其特征在于,所述当分布式数据库返回响应数据时,数据库代理从接收缓冲区获取所述响应数据本地存储,包括:
当分布式数据库中任一个数据节点返回的响应数据就绪时,所述数据库代理随机分配线程池中的空闲线程,从接收缓冲区中获取所述就绪的响应数据本地存储。
5.根据权利要求4所述的方法,其特征在于,所述数据库代理将本地存储的响应数据进行排序后发送给客户端,包括:
所述数据库代理中获取所述分布式数据库中最后一个数据节点就绪的响应数据的线程,负责将本地存储的响应数据进行排序,生成最大连续的行数据列表并发送给所述客户端。
6.根据权利要求5所述的方法,其特征在于,在生成最大连续的行数据列表并发送给所述客户端之后,该方法还包括:
通知所有线程继续获取所有数据节点剩下的响应数据,当从所述分布式数据库中各个数据节点再次获取的响应数据大小都达到预设值时,再次将本地存储的响应数据进行排序后发送给客户端;
以此类推,直至所述数据库代理接收完所有数据节点的所有响应数据并且排序后发送给所述客户端。
7.根据权利要求2所述的方法,其特征在于,所述数据库代理将对应分布式数据库中各个数据节点的分布式查询请求发送给对应的各个数据节点,包括:
所述数据库代理通过不同数据节点相应的tcp链路将对应分布式数据库中各个数据节点的分布式查询请求发送给对应的数据节点;
该方法还包括:
所述数据库代理监听所述相应的tcp链路的socket对象,等待各个数据节点的响应数据;
当epoll就绪队列中有任一个数据节点的响应数据时,表示所述任一个数据节点的响应数据就绪。
8.一种数据库代理,其特征在于,包括:
获取及存储单元,用于当分布式数据库中任一个数据节点返回的响应数据就绪时,从接收缓冲区获取就绪的响应数据本地存储;
排序及发送单元,用于当从所述分布式数据库中各个数据节点获取的响应数据大小都达到预设值时,将本地存储的响应数据进行排序后发送给客户端。
9.一种数据库代理,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述数据查询的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息处理程序,所述信息处理程序被处理器执行时实现如权利要求1至7中任一项所述数据查询的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811549994.7A CN111339132B (zh) | 2018-12-18 | 2018-12-18 | 一种数据查询的方法及数据库代理 |
PCT/CN2019/121470 WO2020125367A1 (zh) | 2018-12-18 | 2019-11-28 | 数据查询的方法及数据库代理 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811549994.7A CN111339132B (zh) | 2018-12-18 | 2018-12-18 | 一种数据查询的方法及数据库代理 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111339132A CN111339132A (zh) | 2020-06-26 |
CN111339132B true CN111339132B (zh) | 2023-05-26 |
Family
ID=71100797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811549994.7A Active CN111339132B (zh) | 2018-12-18 | 2018-12-18 | 一种数据查询的方法及数据库代理 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111339132B (zh) |
WO (1) | WO2020125367A1 (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930472A (zh) * | 2010-09-09 | 2010-12-29 | 南京中兴特种软件有限责任公司 | 一种支持分布式数据库基于并行查询的方法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN102289473A (zh) * | 2011-07-27 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种多服务器分页查询的装置及方法 |
CN103051478A (zh) * | 2012-12-24 | 2013-04-17 | 中兴通讯股份有限公司 | 一种大容量电信网管系统及其设置和应用方法 |
CN105373626A (zh) * | 2015-12-09 | 2016-03-02 | 深圳融合永道科技有限公司 | 分布式人脸识别轨迹搜索系统和方法 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6625604B2 (en) * | 2001-03-09 | 2003-09-23 | Hewlett-Packard Development Company, L.P. | Namespace service in a distributed file system using a database management system |
-
2018
- 2018-12-18 CN CN201811549994.7A patent/CN111339132B/zh active Active
-
2019
- 2019-11-28 WO PCT/CN2019/121470 patent/WO2020125367A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930472A (zh) * | 2010-09-09 | 2010-12-29 | 南京中兴特种软件有限责任公司 | 一种支持分布式数据库基于并行查询的方法 |
CN102201010A (zh) * | 2011-06-23 | 2011-09-28 | 清华大学 | 无共享架构的分布式数据库系统及其实现方法 |
CN102289473A (zh) * | 2011-07-27 | 2011-12-21 | 迈普通信技术股份有限公司 | 一种多服务器分页查询的装置及方法 |
CN102289508A (zh) * | 2011-08-31 | 2011-12-21 | 上海西本网络科技有限公司 | 分布式缓存阵列及其数据查询方法 |
CN103051478A (zh) * | 2012-12-24 | 2013-04-17 | 中兴通讯股份有限公司 | 一种大容量电信网管系统及其设置和应用方法 |
CN106547796A (zh) * | 2015-09-23 | 2017-03-29 | 南京中兴新软件有限责任公司 | 数据库的执行方法及装置 |
CN105373626A (zh) * | 2015-12-09 | 2016-03-02 | 深圳融合永道科技有限公司 | 分布式人脸识别轨迹搜索系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2020125367A1 (zh) | 2020-06-25 |
CN111339132A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109862065B (zh) | 文件下载方法、装置和电子设备 | |
US8826284B1 (en) | Scalable task scheduling | |
US8874811B2 (en) | System and method for providing a flexible buffer management interface in a distributed data grid | |
US9560165B2 (en) | BT offline data download system and method, and computer storage medium | |
CN107018091B (zh) | 资源请求的调度方法和装置 | |
US20170031622A1 (en) | Methods for allocating storage cluster hardware resources and devices thereof | |
US20150363229A1 (en) | Resolving task dependencies in task queues for improved resource management | |
CN105843819B (zh) | 一种数据导出方法及装置 | |
Zhang et al. | Mrapid: An efficient short job optimizer on hadoop | |
US20160156715A1 (en) | Optimal allocation of dynamically instantiated services among computation resources | |
CN108509280B (zh) | 一种基于推送模型的分布式计算集群本地性调度方法 | |
US20110314157A1 (en) | Information processing system, management apparatus, processing requesting apparatus, information processing method, and computer readable medium storing program | |
CN107357640B (zh) | 多线程数据库的请求处理方法及装置、电子设备 | |
CN107562803B (zh) | 数据供应系统及方法、终端 | |
CN111371585A (zh) | 用于cdn节点的配置方法及装置 | |
CN113312370B (zh) | 信息获取方法、装置、电子设备及存储介质 | |
CN109710679B (zh) | 数据抽取方法及装置 | |
CN110909978A (zh) | 资源处理方法、装置、服务器及计算机可读存储介质 | |
CN111339132B (zh) | 一种数据查询的方法及数据库代理 | |
WO2020076393A1 (en) | Stream allocation using stream credits | |
CN117033002A (zh) | 一种内存管理方法、装置、设备及存储介质 | |
CN110275777B (zh) | 一种资源调度系统 | |
CN112486638A (zh) | 用于执行处理任务的方法、装置、设备和存储介质 | |
US20200112521A1 (en) | Resource allocation using distributed segment processing credits | |
CN108090087B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220221 Address after: 100176 floor 18, building 8, courtyard 10, KEGU 1st Street, Beijing Economic and Technological Development Zone, Daxing District, Beijing (Yizhuang group, high-end industrial area of Beijing Pilot Free Trade Zone) Applicant after: Jinzhuan Xinke Co.,Ltd. Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong Applicant before: ZTE Corp. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |