CN114896278A - 数据查询方法、装置以及存储介质 - Google Patents
数据查询方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN114896278A CN114896278A CN202210488366.2A CN202210488366A CN114896278A CN 114896278 A CN114896278 A CN 114896278A CN 202210488366 A CN202210488366 A CN 202210488366A CN 114896278 A CN114896278 A CN 114896278A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- computing node
- execution
- task
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 238
- 230000008569 process Effects 0.000 claims abstract description 199
- 238000012545 processing Methods 0.000 claims description 14
- 238000004458 analytical method Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 239000002253 acid Substances 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 241001080526 Vertica Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- DDCPKNYKNWXULB-RXMQYKEDSA-N (2r)-2-azaniumyl-3-[(2-methylpropan-2-yl)oxy]propanoate Chemical compound CC(C)(C)OC[C@@H]([NH3+])C([O-])=O DDCPKNYKNWXULB-RXMQYKEDSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
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
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据查询方法、装置以及存储介质。其中,一种数据查询方法,包括:创建与查询任务对应的查询进程;通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及通过计算节点的执行进程根据查询数据执行查询任务。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据查询方法、装置以及存储介质。
背景技术
传统数据库通常会在节点上同时配置存储引擎与计算引擎,这样可以提高存储访问速度,但会导致扩展性较差。例如Vertica在执行查询任务时会将存储于本地的数据进行缓存,然后根据缓存的数据执行查询任务,但是这种方式却会重复缓存,造成数据冗余,并且浪费了磁盘。
针对上述的现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题,目前尚未提出有效的解决方案。
发明内容
本申请的实施例提供了一种数据查询方法、装置以及存储介质,以至少解决现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
根据本申请实施例的一个方面,提供了一种数据查询方法,包括:创建与查询任务对应的查询进程;通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及通过计算节点的执行进程根据查询数据执行查询任务。
根据本申请实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本申请实施例的另一个方面,还提供了一种数据查询装置,包括:进程创建模块,用于创建与查询任务对应的查询进程;计划发送模块,用于通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及任务执行模块,用于通过计算节点的执行进程根据查询数据执行查询任务。
根据本申请实施例的另一个方面,还提供了一种数据查询装置,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:创建与查询任务对应的查询进程;通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及通过计算节点的执行进程根据查询数据执行查询任务。
在本申请实施例中,查询进程先确定预先存储有与查询任务相应的查询数据的计算节点,并通过该计算节点直接读取预先存储的查询数据,并根据查询数据执行查询任务,从而本技术方案中的存储的本地数据与执行进程在一个计算节点中,从而本技术方案中的执行进程在执行查询任务时,会直接从计算节点的本地读取查询数据,并不需要将本地的数据先进行缓存才可以使用,避免了现有技术中的本地数据无法直接读取,只能缓存本地数据而造成的数据冗余的问题。从而减少了负载以及节省了磁盘。并且本技术方案通过缓存服务器以及执行进程实现了存储与计算分离,提高了执行查询任务的灵活性。并且本技术方案可以随时部署多个计算节点,从而保证了***的扩展性。并且本技术方案可以随时增加或者减少计算节点,因此并不需要启停固定的计算节点,从而减少了网络开销。进而解决了现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是用于实现根据本申请实施例1所述的方法的计算设备的硬件结构框图;
图2是根据本申请实施例1所述的数据查询***的示意图;
图3是根据本申请实施例1的第一个方面所述的数据查询方法的流程示意图;
图4是根据本申请实施例2所述的数据查询装置的示意图;以及
图5是根据本申请实施例3所述的数据查询装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,提供了一种数据查询方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的计算设备中执行。图1示出了一种用于实现数据查询方法的计算设备的硬件结构框图。如图1所示,计算设备可以包括一个或多个处理器(处理器可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器、以及用于通信功能的传输装置。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算设备中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器可用于存储应用软件的软件程序以及模块,如本申请实施例中的数据查询方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的数据查询方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算设备的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算设备的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算设备可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算设备中的部件的类型。
图2是根据本实施例所述的数据查询***的示意图。参照图2所示,该***包括:主节点、资源管理器、计算节点以及存储***。其中主节点与用户进行交互,并创建查询进程。查询进程根据查询任务并向资源管理器请求执行进程,资源管理器将计算节点的执行进程分配给查询进程,查询进程生成执行计划后,将执行计划下发给执行进程,执行进程执行查询任务。其中计算节点中预先存储有查询数据。并且计算节点中的缓存服务器还可以从存储***获取查询数据。其中主节点、资源管理器以及计算节点组成一个虚拟集群,而多个计算节点组成一个子集群。
需要说明的是,主节点、资源管理器以及计算节点例如为服务器,并且可以有多个,这里不作具体限定。
需要说明的是,***中的主节点、资源管理器、计算节点以及存储***均可适用上面所述的硬件结构。
在上述运行环境下,根据本实施例的第一个方面,提供了一种数据查询方法。图3示出了该方法的流程示意图,参考图3所示,该方法包括:
S302:创建与查询任务对应的查询进程;
S304:通过查询进程根据查询任务向资源管理器发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及
S306:通过资源管理器分配的计算节点的执行进程根据查询数据执行查询任务。
具体地,用户通过终端设备执行一条sql(即,查询任务),主节点接收到终端设备发送的sql(即,查询任务)后,根据该sql(即,查询任务)创建对应的查询进程,用以执行该sql(即,查询任务)。
进一步地,查询进程解析sql(即,查询任务),得到执行该sql(即,查询任务)需要的查询数据的存储位置。例如,资源管理器为查询进程分配了计算节点1的执行进程,查询进程解析到查询数据预先存储在计算节点1中,则查询进程制定的执行计划包括读取计算节点1中预先存储的本地数据。从而查询进程根据计算节点存储的查询数据,制定执行该sql(即,查询任务)的执行计划。其中计算节点中存储的数据为预先存储在本地的查询数据。
进一步地,查询进程将制定好的执行计划发送至执行计划中计算节点的执行进程,执行进程根据该执行计划获取查询数据,并根据查询数据执行查询任务。例如,在执行计划中,计算节点1的执行进程从计算节点1的本地读取预先存储的查询数据,之后根据查询数据执行该sql(即,查询任务)。其中计算节点包括多个用于执行查询任务的执行进程。例如计算节点1包括2个执行进程。
正如背景技术中所述的,传统数据库通常会在节点上同时配置存储引擎与计算引擎,这样可以提高存储访问速度,但会导致扩展性较差。例如Vertica在执行查询任务时会将存储于本地的数据进行缓存,然后根据缓存的数据执行查询任务,但是这种方式却会重复缓存,造成数据冗余,并且浪费了磁盘。
针对以上所述的技术问题,通过本申请实施例的技术方案,查询进程先确定预先存储有与查询任务相应的查询数据的计算节点,并通过该计算节点直接读取预先存储的查询数据,并根据查询数据执行查询任务,从而本技术方案中的存储的本地数据与执行进程在一个计算节点中,从而本技术方案中的执行进程在执行查询任务时,会直接从计算节点的本地读取查询数据,并不需要将本地的数据先进行缓存才可以使用,避免了现有技术中的本地数据无法直接读取,只能缓存本地数据而造成的数据冗余的问题。从而减少了负载以及节省了磁盘。并且本技术方案通过缓存服务器以及执行进程实现了存储与计算分离,提高了执行查询任务的灵活性。并且本技术方案可以随时部署多个计算节点,从而保证了***的扩展性。并且本技术方案可以随时增加或者减少计算节点,因此并不需要启停固定的计算节点,从而减少了网络开销。进而解决了现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
可选地,通过查询进程根据查询任务向计算节点的执行进程发送执行计划的操作,包括:通过查询进程获取计算节点的进程分布信息;通过查询进程根据进程分布信息确定预先存储有查询数据的计算节点;以及通过查询进程根据所确定的计算节点生成执行计划,并将执行计划发送至执行进程。
具体地,资源管理器用于管理计算节点以及计算节点所拥有的资源(即,执行进程)。查询进程根据sql(即,查询任务)确定执行该sql(即,查询任务)所需的执行进程的数量,之后向资源管理器发送获取执行进程的请求。例如,查询进程所需的执行进程的数量为300个,之后向资源管理器请求获取300个执行进程。资源管理器则响应于该请求,向查询进程发送计算节点的进程分布信息。其中进程分布信息用于指示各个计算节点可以提供的执行进程,例如计算节点1包括2个执行进程,计算节点2包括3个执行进程。
进一步地,查询进程接收到300个执行进程后,将会根据进程分布信息确定接收到的300个执行进程所归属的计算节点,例如计算节点1~计算节点30,之后从各个计算节点中筛选出预先存储有查询数据的计算节点,例如计算节点1~计算节点20。之后查询进程制定的查询计划包括:计算节点1~计算节点200的执行进程读取本地预先存储的查询数据执行查询任务。其他的计算节点(例如计算节点21~计算节点30)的执行进程通过缓存服务器获取存储***中存储的查询数据执行查询进程。之后查询进程将执行计划发送至该执行计划中的300个执行进程。
从而本技术方案通过进程分布信息确定计算节点的执行计划,使得可以确定执行查询任务的最佳方式,从而减少负载,并且避免了所有查询数据都直接通过读取远程的存储***中的查询数据,从而减少了网络开销。
可选地,通过查询进程根据进程分布信息确定预先存储有查询数据的计算节点的操作,包括:通过查询进程解析查询任务,得到解析结果;通过查询进程根据解析结果确定相应的查询数据的数据分布信息;以及根据数据分布信息确定预先存储有查询数据的计算节点。
具体地,查询进程解析sql(即,查询任务),得到解析结果,例如sql的解析结果为:查询A表i列的数据。之后查询进程根据解析结果,通过存储***查询数据(即,A表i列的数据)的数据分布情况。例如A表i列的数据存储在存储***中,并且还存储于计算节点1中。其中存储***例如可以为分布式文件***(hdfs)。之后查询进程根据查询数据(即,A表i列的数据)的存储位置,确定预先存储有查询数据的计算节点为计算节点1。
从而本技术方案通过对查询任务进行解析,定位查询数据的存储位置,从而可以快速确定计算节点,提高了查询速度。
可选地,通过计算节点的执行进程根据查询数据执行查询任务的操作,包括:通过执行进程接收查询任务,其中执行进程为计算节点拥有的计算资源;通过执行进程确定查询数据的存储位置,并根据存储位置获取查询数据;以及通过执行进程根据查询数据执行查询任务。
具体地,查询进程将执行查询任务的执行计划发送至执行进程,例如执行计划为:通过计算节点1~计算节点n的执行进程执行查询任务。执行进程接收到执行计划以及查询任务后,在执行该查询任务的过程中,首先会通过计算节点中预先设置的缓存服务器判断查询数据是否预先存储于该计算节点中,当该计算节点中预先存储有查询数据,则从计算节点中获取该查询数据,从而执行查询任务。当该计算节点中未曾预先存储有查询数据,则设置于该计算节点中的缓存服务器会从远程的存储***中获取该查询数据,并将该查询数据进行缓存。之后该计算节点中的执行进程根据缓存的查询数据执行查询任务。
从而本技术方案通过缓存服务器直接从本地读取的预先存储的查询数据执行查询任务,从而可以避免在本地存储有查询数据的情况下,从远程的存储***获取查询数据并进行缓存,从而减少了负载。
可选地,根据存储位置获取查询数据的操作,包括:在第一数据预先存储在计算节点的情况下,通过缓存服务器获取计算节点中存储的第一数据;和/或通过缓存服务器从存储***获取第二数据,其中第一数据为缓存服务器预先从存储***获取的查询数据。
具体地,例如,第一数据为查询数据。其中第一数据不仅预先存储于计算节点,并且存储于存储***。各个计算节点中的缓存服务器从计算节点中获取查询数据的第一数据,从而执行进程根据第一数据执行查询任务。例如,查询数据为A表的i列的数据(即,第一数据),计算节点1中预先存储有A表的i列的数据,从而计算节点1的缓存服务器从计算节点1中通过本地读取的方式获取A表的i列的数据。从而执行进程根据A表的i列的数据(即,第一数据)执行查询任务。
或者,第二数据为查询数据。其中第二数据存储于存储***。各个计算节点中的缓存服务器从计算节点中获取查询数据的第二数据,从而执行进程根据第二数据执行查询任务。例如,查询数据为B表的j列的数据(即,第二数据),之后计算节点1的缓存服务器从远程的存储***中获取B表的j列的数据,并将其缓存至计算节点1中。从而执行进程根据B表的j列的数据(即,第二数据)执行查询任务。
或者,查询数据可以包括第一数据以及第二数据。其中第一数据不仅存储于计算节点,并且存储于存储***,第二数据仅仅存储于存储***。各个计算节点中的缓存服务器从计算节点中获取查询数据的第一数据,并且缓存服务器从存储***获取第二数据,根据第一数据以及第二数据执行查询任务。并且缓存服务器将从存储***中获取的第二数据缓存至计算节点中。其中预先存储在计算节点中的查询数据为在执行其他查询任务时,缓存服务器从存储***中缓存至计算节点的。并且用户可以指定需要被缓存的表。
例如,查询数据为A表的i列的数据以及B表的j列的数据,计算节点1中预先存储有A表的i列的数据,从而计算节点1的缓存服务器通过本地读的方式从计算节点1中获取A表的i列的数据。之后其他计算节点中并未预先存储有B表的j列的数据,则其他计算节点的缓存服务器从存储***中获取B表的j列的数据,并将获取的数据缓存至该计算节点中。之后执行进程通过获取的A表的i列的数据以及B表的j列的数据执行sql(即,查询任务)。并且此次缓存至计算节点的B表的j列的数据,将会存储至该计算节点的本地,从而在下次需要B表的j列的数据时,可以直接通过本地读取的方式从该计算节点中获取B表的j列的数据。
从而本技术方案根据查询数据的存储位置确定查询方案。例如本技术方案先获取预先存储的第一数据,再获取存储***中的第二数据,从而可以避免重复获取查询数据,提高了查询速度,减少了负载。并且本技术方案还可以通过缓存服务器来缓存远程读取的文件,从而可以在以后也使用缓存的数据执行查询任务,极大地提高第二次以及之后的访问速度。并且可以兼容本地访问以及远程访问,提高了兼容性。
可选地,通过缓存服务器从存储***获取第二数据之前,还包括:通过缓存服务器根据预先设置的网络认证协议与存储***建立通信连接。
具体地,缓存服务器与存储***互相发送与预先设置的网络认证协议的对应的身份认证信息并进行认证,从而缓存服务器与存储***建立通信连接。其中网络认证协议例如可以为kerberos。从而本技术方案通过网络认证协议提高了通信双方的安全性和真实性。
此外,各个计算节点中预先存储至本地的查询数据都不相同,即不同的计算节点存储的查询数据都不相同。在计算节点停止工作后又重新启动的情况下,计算节点中预先存储在本地的查询数据并不需要重新加载,因此不会存在额外开销,从而本技术方案中的计算节点支持随意启停。
此外,本技术方案还实现了缓存支持事务,例如一张表可能在数据库中存在多个版本,例如基础版本。两个用户并行开启两个事务,事务A查询该表生成缓存,事务B在该表中写入新数据从而建立缓存。即根据事务对缓存进行隔离,不可见。
此外缓存服务器同时支持使用内存和外存,且容量可以任意配置,对于外存,支持配置多块硬盘,同时支持负载均衡,以达到最优性能。缓存淘汰策略为LRU,在容量达到上限后自动删除最近最少使用的缓存记录。
此外,缓存的请求以及响应都是通过Unix Socket进行的,通常访问时延在数十微秒,带宽则是内存访问速度,通常可以达到10GB/s以上。对于在内存中的缓存记录,会直接通过Unix Socket发送给执行进程,而在外存中的缓存记录则是通过sendfile***调用发送给执行进程,实现零拷贝。
此外,所有缓存记录都严格遵循事务ACID。对于对象存储,文件一旦写入就不可改变,因此只需要通过记录当前可见文件就可以实现ACID。对于hdfs,由于其支持先擦除文件末尾部分内容再追加写入,因此我们在计划生成时,节点会识别哪些文件是还未提交的事务创建的,避免缓存未提交数据,从而实现ACID。
此外,缓存服务器内部使用多线程技术,能够支持高并发的缓存访问。
此外,缓存命中等信息会在计算完整后返回给数据库前端,可以通过explainanalyze执行查询后查看。
此外,在调度到缓存节点(即预先存储有查询数据的计算节点)时,还需要考虑某段数据是否应当被缓存。比如在事务中,先***了1,然后子事务(insert1)回滚,再***2。如果缓存没有可靠的事务保证,那么很有可能缓存了错误的数据,即再次查询这张表,真实数据是2,缓存数据是1,违背了SQL的事务机制。本技术方案在数据读取计划生成阶段会考虑事务问题,避免上述问题发生(对于HDFS存储***,会避免缓存在当前事务内新增的数据,因为存储在HDFS的表的子事务回滚会把之前追加写的文件内容删除,再重新写。这样做的好处是对于缓存服务器来说就不需要考虑缓存失效的问题,通过顶层事务的设计,避免了引入主动缓存失效机制的开销。
此外,数据库还提供了2个参数给用户以控制缓存的行为,分别是cache_protocol和cache_tables,前者可选值为hdfs、s3、hdfs,s3或者none,即只缓存hdfs,只缓存s3,都缓存,都不缓存。后者表示具体要缓存的表,在IO计划生成的过程中,只有cache_tables指定的表才会被缓存。这里S3指对象存储,支持AWS S3、阿里云对象存储和腾讯对象存储等。HDFS支持带TBDS和KERBEROS认证的集群。
此外,参考图1所示,根据本实施例的第二个方面,提供了一种存储介质。所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行以上任意一项所述的方法。
从而根据本实施例,查询进程先确定预先存储有与查询任务相应的查询数据的计算节点,并通过该计算节点直接读取预先存储的查询数据,并根据查询数据执行查询任务,从而本技术方案中的存储的本地数据与执行进程在一个计算节点中,从而本技术方案中的执行进程在执行查询任务时,会直接从计算节点的本地读取查询数据,并不需要将本地的数据先进行缓存才可以使用,避免了现有技术中的本地数据无法直接读取,只能缓存本地数据而造成的数据冗余的问题。从而减少了负载以及节省了磁盘。并且本技术方案通过缓存服务器以及执行进程实现了存储与计算分离,提高了执行查询任务的灵活性。并且本技术方案可以随时部署多个计算节点,从而保证了***的扩展性。并且本技术方案可以随时增加或者减少计算节点,因此并不需要启停固定的计算节点,从而减少了网络开销。进而解决了现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图4示出了根据本实施例的第一个方面所述的数据查询装置400,该装置400与根据实施例1的第一个方面所述的方法相对应。参考图4所示,该装置400包括:进程创建模块410,用于创建与查询任务对应的查询进程;计划发送模块420,用于通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及任务执行模块430,用于通过计算节点的执行进程根据查询数据执行查询任务。
可选地,计划发送模块420,包括:信息获取子模块,用于通过查询进程获取计算节点的进程分布信息;节点确定子模块,用于通过查询进程根据进程分布信息确定预先存储有查询数据的计算节点;以及计划生成子模块,用于通过查询进程根据所确定的计算节点生成执行计划,并将执行计划发送至执行进程。
可选地,节点确定子模块,包括:解析单元,用于通过查询进程解析查询任务,得到解析结果;第一确定单元,用于通过查询进程根据解析结果确定相应的查询数据的数据分布信息;以及第二确定单元,用于根据数据分布信息确定预先存储有查询数据的计算节点。
可选地,任务执行模块430,包括:进程分配子模块,用于通过执行进程接收查询任务,其中执行进程为计算节点拥有的计算资源;数据获取子模块,用于通过执行进程确定查询数据的存储位置,并根据存储位置获取查询数据;以及任务执行子模块,用于通过执行进程根据查询数据执行查询任务。
可选地,数据获取子模块,包括:第一获取单元,用于在第一数据预先存储在计算节点的情况下,通过缓存服务器获取计算节点中存储的第一数据;和/或第二获取单元,用于通过缓存服务器从存储***获取第二数据,其中第一数据为缓存服务器预先从存储***获取的查询数据。
可选地,通过缓存服务器从存储***获取第二数据之前,还包括:通过缓存服务器根据预先设置的网络认证协议与存储***建立通信连接。
从而根据本实施例,查询进程先确定预先存储有与查询任务相应的查询数据的计算节点,并通过该计算节点直接读取预先存储的查询数据,并根据查询数据执行查询任务,从而本技术方案中的存储的本地数据与执行进程在一个计算节点中,从而本技术方案中的执行进程在执行查询任务时,会直接从计算节点的本地读取查询数据,并不需要将本地的数据先进行缓存才可以使用,避免了现有技术中的本地数据无法直接读取,只能缓存本地数据而造成的数据冗余的问题。从而减少了负载以及节省了磁盘。并且本技术方案通过缓存服务器以及执行进程实现了存储与计算分离,提高了执行查询任务的灵活性。并且本技术方案可以随时部署多个计算节点,从而保证了***的扩展性。并且本技术方案可以随时增加或者减少计算节点,因此并不需要启停固定的计算节点,从而减少了网络开销。进而解决了现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
实施例3
图5示出了根据本实施例的第一个方面所述的数据查询装置500,该装置500与根据实施例1的第一个方面所述的方法相对应。参考图5所示,该装置500包括:处理器510;以及存储器520,与处理器510连接,用于为处理器510提供处理以下处理步骤的指令:创建与查询任务对应的查询进程;通过查询进程根据查询任务向计算节点的执行进程发送执行计划,其中执行计划中的计算节点预先存储有与查询任务对应的查询数据;以及通过计算节点的执行进程根据查询数据执行查询任务。
可选地,通过查询进程根据查询任务向计算节点的执行进程发送执行计划的操作,包括:通过查询进程获取计算节点的进程分布信息;通过查询进程根据进程分布信息确定预先存储有查询数据的计算节点;以及通过查询进程根据所确定的计算节点生成执行计划,并将执行计划发送至执行进程。
可选地,通过查询进程根据进程分布信息确定预先存储有查询数据的计算节点的操作,包括:通过查询进程解析查询任务,得到解析结果;通过查询进程根据解析结果确定相应的查询数据的数据分布信息;以及根据数据分布信息确定预先存储有查询数据的计算节点。
可选地,通过计算节点的执行进程根据查询数据执行查询任务的操作,包括:通过执行进程接收查询任务,其中执行进程为计算节点拥有的计算资源;通过执行进程确定查询数据的存储位置,并根据存储位置获取查询数据;以及通过执行进程根据查询数据执行查询任务。
可选地,根据存储位置获取查询数据的操作,包括:在第一数据预先存储在计算节点的情况下,通过缓存服务器获取计算节点中存储的第一数据;和/或通过缓存服务器从存储***获取第二数据,其中第一数据为缓存服务器预先从存储***获取的查询数据。
可选地,通过缓存服务器从存储***获取第二数据之前,还包括:通过缓存服务器根据预先设置的网络认证协议与存储***建立通信连接。
从而根据本实施例,查询进程先确定预先存储有与查询任务相应的查询数据的计算节点,并通过该计算节点直接读取预先存储的查询数据,并根据查询数据执行查询任务,从而本技术方案中的存储的本地数据与执行进程在一个计算节点中,从而本技术方案中的执行进程在执行查询任务时,会直接从计算节点的本地读取查询数据,并不需要将本地的数据先进行缓存才可以使用,避免了现有技术中的本地数据无法直接读取,只能缓存本地数据而造成的数据冗余的问题。从而减少了负载以及节省了磁盘。并且本技术方案通过缓存服务器以及执行进程实现了存储与计算分离,提高了执行查询任务的灵活性。并且本技术方案可以随时部署多个计算节点,从而保证了***的扩展性。并且本技术方案可以随时增加或者减少计算节点,因此并不需要启停固定的计算节点,从而减少了网络开销。进而解决了现有技术中存在的对本地数据进行缓存所造成的数据冗余的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
创建与查询任务对应的查询进程;
通过所述查询进程根据所述查询任务向计算节点的执行进程发送执行计划,其中所述执行计划中的计算节点预先存储有与所述查询任务对应的查询数据;以及
通过所述计算节点的执行进程根据所述查询数据执行所述查询任务。
2.根据权利要求1所述的方法,其特征在于,通过所述查询进程根据所述查询任务向计算节点的执行进程发送执行计划的操作,包括:
通过所述查询进程获取所述计算节点的进程分布信息;
通过所述查询进程根据所述进程分布信息确定预先存储有所述查询数据的计算节点;以及
通过所述查询进程根据所确定的计算节点生成所述执行计划,并将所述执行计划发送至所述执行进程。
3.根据权利要求2所述的方法,其特征在于,通过所述查询进程根据所述进程分布信息确定预先存储有所述查询数据的计算节点的操作,包括:
通过所述查询进程解析所述查询任务,得到解析结果;
通过所述查询进程根据所述解析结果确定相应的查询数据的数据分布信息;以及
根据所述数据分布信息确定预先存储有所述查询数据的计算节点。
4.根据权利要求3所述的方法,其特征在于,通过所述计算节点的执行进程根据所述查询数据执行所述查询任务的操作,包括:
通过所述执行进程接收所述查询任务,其中所述执行进程为所述计算节点拥有的计算资源;
通过所述执行进程确定所述查询数据的存储位置,并根据所述存储位置获取所述查询数据;以及
通过所述执行进程根据所述查询数据执行所述查询任务。
5.根据权利要求4所述的方法,其特征在于,根据所述存储位置获取所述查询数据的操作,包括:
在第一数据预先存储在所述计算节点的情况下,通过缓存服务器获取所述计算节点中存储的第一数据;和/或
通过所述缓存服务器从存储***获取第二数据,其中所述第一数据为所述缓存服务器预先从存储***获取的查询数据。
6.根据权利要求5所述的方法,其特征在于,通过所述缓存服务器从存储***获取所述第二数据之前,还包括:通过所述缓存服务器根据预先设置的网络认证协议与所述存储***建立通信连接。
7.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至6中任意一项所述的方法。
8.一种数据查询装置,其特征在于,包括:
进程创建模块,用于创建与查询任务对应的查询进程;
计划发送模块,用于通过所述查询进程根据所述查询任务向计算节点的执行进程发送执行计划,其中所述执行计划中的计算节点预先存储有与所述查询任务对应的查询数据;以及
任务执行模块,用于通过所述计算节点的执行进程根据所述查询数据执行所述查询任务。
9.根据权利要求8所述的装置,其特征在于,通过所述查询进程根据所述查询任务向计算节点的执行进程发送执行计划的操作,包括:
信息获取子模块,用于通过所述查询进程获取所述计算节点的进程分布信息;
节点确定子模块,用于通过所述查询进程根据所述进程分布信息确定预先存储有所述查询数据的计算节点;以及
计划生成子模块,用于通过所述查询进程根据所确定的计算节点生成所述执行计划,并将所述执行计划发送至所述执行进程。
10.一种数据查询装置,其特征在于,包括:
处理器;以及
存储器,与所述处理器连接,用于为所述处理器提供处理以下处理步骤的指令:
创建与查询任务对应的查询进程;
通过所述查询进程根据所述查询任务向计算节点的执行进程发送执行计划,其中所述执行计划中的计算节点预先存储有与所述查询任务对应的查询数据;以及
通过所述计算节点的执行进程根据所述查询数据执行所述查询任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210488366.2A CN114896278A (zh) | 2022-05-06 | 2022-05-06 | 数据查询方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210488366.2A CN114896278A (zh) | 2022-05-06 | 2022-05-06 | 数据查询方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114896278A true CN114896278A (zh) | 2022-08-12 |
Family
ID=82718653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210488366.2A Pending CN114896278A (zh) | 2022-05-06 | 2022-05-06 | 数据查询方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896278A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和*** |
CN109241100A (zh) * | 2018-08-23 | 2019-01-18 | 上海达梦数据库有限公司 | 一种查询方法、装置、设备及存储介质 |
CN111797091A (zh) * | 2019-10-18 | 2020-10-20 | 北京沃东天骏信息技术有限公司 | 数据库中数据查询的方法、装置、电子设备和存储介质 |
CN113051446A (zh) * | 2019-12-26 | 2021-06-29 | 百度国际科技(深圳)有限公司 | 拓扑关系查询方法、装置、电子设备和介质 |
CN114185895A (zh) * | 2021-12-14 | 2022-03-15 | 中国平安财产保险股份有限公司 | 数据导入导出方法、装置、电子设备及存储介质 |
-
2022
- 2022-05-06 CN CN202210488366.2A patent/CN114896278A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063486A (zh) * | 2014-07-03 | 2014-09-24 | 四川中亚联邦科技有限公司 | 一种大数据分布式存储方法和*** |
CN109241100A (zh) * | 2018-08-23 | 2019-01-18 | 上海达梦数据库有限公司 | 一种查询方法、装置、设备及存储介质 |
CN111797091A (zh) * | 2019-10-18 | 2020-10-20 | 北京沃东天骏信息技术有限公司 | 数据库中数据查询的方法、装置、电子设备和存储介质 |
CN113051446A (zh) * | 2019-12-26 | 2021-06-29 | 百度国际科技(深圳)有限公司 | 拓扑关系查询方法、装置、电子设备和介质 |
CN114185895A (zh) * | 2021-12-14 | 2022-03-15 | 中国平安财产保险股份有限公司 | 数据导入导出方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11886870B2 (en) | Maintaining and updating software versions via hierarchy | |
US11122128B2 (en) | Method and device for customer resource acquisition, terminal device and storage medium | |
JP5798248B2 (ja) | 規模変更可能なデータ記憶サービスを実装するためのシステムおよび方法 | |
AU2013347972B2 (en) | Distributed caching cluster management | |
US20150269239A1 (en) | Storage device selection for database partition replicas | |
US20160011898A1 (en) | Virtual machine storage | |
CN107181686B (zh) | 路由表的同步方法、装置及*** | |
US20070150492A1 (en) | Method and system for allocating file in clustered file system | |
US10579597B1 (en) | Data-tiering service with multiple cold tier quality of service levels | |
US9529772B1 (en) | Distributed caching cluster configuration | |
CN114756519A (zh) | 与无状态同步节点的托管文件同步 | |
CN103607424A (zh) | 一种服务器连接方法及服务器*** | |
CN109522043B (zh) | 一种配置数据的管理方法、装置及存储介质 | |
CN111651424B (zh) | 一种数据处理方法、装置、数据节点及存储介质 | |
CN110798358B (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN116700626A (zh) | 资源的绑定方法、装置及电子设备 | |
CN114896278A (zh) | 数据查询方法、装置以及存储介质 | |
US20080208797A1 (en) | Automated record attribute value merging from multiple directory servers | |
CN113687910A (zh) | 一种集群内usb设备管理方法、装置、设备及存储介质 | |
CN114442952A (zh) | 冷数据的迁移方法、装置、存储介质及电子装置 | |
CN110858201B (zh) | 数据处理方法及***、处理器、存储介质 | |
JP6568232B2 (ja) | 計算機システム、及び、装置の管理方法 | |
CN117390078B (zh) | 数据处理方法、装置、存储介质和计算机设备 | |
CN103793239A (zh) | 云端丛集***及其开机部署方法 | |
CN108491500A (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 |