CN108268476A - 数据查询方法及装置 - Google Patents
数据查询方法及装置 Download PDFInfo
- Publication number
- CN108268476A CN108268476A CN201611257345.0A CN201611257345A CN108268476A CN 108268476 A CN108268476 A CN 108268476A CN 201611257345 A CN201611257345 A CN 201611257345A CN 108268476 A CN108268476 A CN 108268476A
- Authority
- CN
- China
- Prior art keywords
- inquiry request
- database
- cache table
- query result
- result cache
- 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/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
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
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询方法及装置。
背景技术
数据不可变查询是数据流分布查询系统中常用的查询方式,数据不可变查询方式的最大优势在于,针对已经累积的数据、已经计算的历史结果是不变的,因此这些数据可以重用。例如,需要查询从早上8点到目前为止的数据,其中第一次查询是9点,后续10点的查询可以复用9点查询得到的结果,然后,如果后续仍然查询8点-9点的数据,则可以直接返回之前在9点查询的数据表即可,从而减少查询需要计算的数据,提高查询速度。
但是,目前的数据流查询方式都是数据库将查询结果缓存到数据库内存中,以便后续可以直接从内存缓存结果中查找查询结果,此种方式只会占用数据库内较多的内存资源,从而降低数据库的响应速度。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的数据查询方法及装置。
第一方面,本申请提供一种数据查询方法,该方法应用于处理查询请求的工作节点中,该方法包括:
获取查询请求,并判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,所述数据库中存储有首次查询的首次查询请求及所述首次查询请求对应的查询结果缓存表;
当所述数据库中存在相应的查询结果缓存表时,获取所述查询请求对应的缓存表信息;
将所述查询请求及所述缓存表信息发送给所述数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果;
接收所述数据库返回的所述查询结果。
可选地,所述工作节点中存储有查询请求数据库,所述查询请求数据库中存储首次接收到的查询请求及对应的缓存表信息,所述方法还包括:
当所述数据库中不存在所述查询请求相对应的查询结果缓存表时,指示所述数据库创建与所述查询请求相对应的查询结果缓存表;
将所述查询请求及所述查询请求对应的缓存表信息保存到所述查询请求数据库中;
在所述查询请求的生命周期内按更新周期维护所述查询结果缓存表。
可选地,所述指示所述数据库创建与所述查询请求相对应的查询结果缓存表,包括:
当所述查询请求是非趋势缓存查询时,指示所述数据库创建与所述查询请求对应的两张相同的查询结果缓存表;
当所述查询请求是趋势缓存查询时,指示所述数据库创建与所述查询请求对应的一张查询结果缓存表。
可选地,所述获取查询请求,并判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,包括:
接收客户端发送的查询请求;
从所述工作节点内存储的查询请求数据库中,查找是否存在所述查询请求;
如果所述查询请求数据库中存在所述查询请求,则确定所述数据库中存在与所述查询请求相对应的查询结果缓存表;
如果所述查询请求数据库中不存在所述查询请求,则确定所述数据库中不存在与所述查询请求相对应的查询结果缓存表。
可选地,所述方法还包括:
将已创建查询结果缓存表的查询请求,以及所述查询请求对应查询结果缓存表的缓存表信息保存到所述查询请求数据库中。
可选地,获取所述查询请求对应的缓存表信息,包括:
从所述查询请求数据库中查找所述查询请求对应查询结果缓存表的缓存表信息,所述缓存表信息包括所述查询结果缓存表的名称。
第二方面,本申请提供一种数据查询装置,应用于处理查询请求的工作节点中,该装置包括:
第一获取模块,用于获取查询请求;
判断模块,用于判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,所述数据库中存储有首次查询的首次查询请求及首次查询请求对应的查询结果缓存表;
第二获取模块,用于当所述数据库中存在相应的查询结果缓存表时,获取所述查询请求对应的缓存表信息;
发送模块,用于将所述查询请求及所述缓存表信息发送给所述数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果;
接收模块,用于接收所述数据库返回的所述查询结果。
可选地,所述工作节点中存储有查询请求数据库,所述查询请求数据库中存储首次接收到的查询请求及对应的缓存表信息,所述装置还包括:
创建模块,用于当所述数据库中不存在所述查询请求相对应的查询结果缓存表时,指示所述数据库创建与所述查询请求相对应的查询结果缓存表;
保存模块,用于将所述查询请求及所述查询请求对应的缓存表信息保存到所述查询请求数据库中;
维护模块,用于在所述查询请求的生命周期内按更新周期维护所述查询结果缓存表。
可选地,所述创建模块,包括:
第一创建子模块,用于当所述查询请求是非趋势缓存查询时,指示所述数据库创建与所述查询请求对应的两张相同的查询结果缓存表;
第二创建子模块,用于当所述查询请求是趋势缓存查询时,指示所述数据库创建与所述查询请求对应的一张查询结果缓存表。
可选地,所述判断模块,包括:
查找子模块,用于从所述工作节点内存储的查询请求数据库中,查找是否存在所述查询请求;
第一确定子模块,用于当所述查询请求数据库中存在所述查询请求时,确定所述数据库中存在与所述查询请求相对应的查询结果缓存表;
第二确定子模块,用于当所述查询请求数据库中不存在所述查询请求时,确定所述数据库中不存在与所述查询请求相对应的查询结果缓存表。
借由上述技术方案,本发明提供的数据查询方法,数据库中存储有首次查询的首次查询请求及对应的查询结果缓存表。用于处理查询请求的工作节点接收到查询请求后,判断数据库中是否存在该查询请求对应的查询结果缓存表,如果存在,则获取该查询请求对应的缓存表信息,并将该查询请求及对应的缓存表信息发送给数据库。数据库根据缓存表信息确定查询请求对应的查询结果缓存表,并从该查询结果缓存表中查找到该查询请求对应的查询结果,并返回给工作节点。由上述过程可知,查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源,同时,在数据库中创建查询结果缓存表之后,当再次接收到此查询请求后,可以直接从对应的查询结果缓存表中查询对应的查询结果,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一种数据查询系统示意图;
图2示出了本发明实施例一种数据查询方法的流程图;
图3示出了本发明实施例另一种数据查询方法的流程图;
图4示出了本发明实施例一种数据查询装置的框图;
图5示出了本发明实施例一种判断模块的框图;
图6示出了本发明实施例另一种数据查询装置的框图;
图7示出了本发明实施例一种创建模块的框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
请参见图1,示出了本发明实施例一种数据查询系统示意图,该系统包括:客户端110、工作节点120、数据库130。其中,客户端110和工作节点120的数量可以是一个或多个,图1中示出了多个的场景;数据库130可以是分布式数据库或集中式数据库,本申请对此并不限定。
客户端110,泛指对查询系统发起SQL(Structured Query Language,结构化查询语言)查询请求的系统。
工作节点120,处理查询服务请求的节点,当客户端很多时,可以通过多个工作节点来分担查询负载,每个SQL查询请求会在工作节点上映射成一个作业进程,作业进程负责从后台的数据库中查询数据。
数据库130,新的数据流通过ETL的过程进入到数据库中,这个过程与传统入库过程相同,当用户第一次查询时,工作节点中的作业进程通过查询数据库中的原始数据表中的数据,并在数据库中创建一张与此次查询的查询请求对应的查询结果缓存表;后续再次进行查询时,工作节点中的作业进程可以直接从数据库中相应查询结果缓存表中获得查询结果,不需要从数据库中的原始数据表中查询。
下面将结合具体的实施例详细介绍工作节点的数据查询过程。
请参见图2,示出了本发明实施例一种数据查询方法的流程图,该方法应用于图1所示的工作节点中,如图2所示,该方法包括:
S110,工作节点接收查询请求。
该查询请求由客户端发起查询时产生的SQL查询请求,并发送给工作节点。
工作节点在接收到SQL查询请求后,通常需要对该SQL查询请求的SQL语法及SQL参数进行验证;其中,SQL参数包括过期时间、更新周期、容量参数;过期时间即有效期必须大于当前时间60s,更新周期不小于5s,容量参数包括缓存容量及历史记录数,缓存容量大于0、历史记录数大于0且小于缓存容量。
S120,工作节点确定数据库中是否存在与所述查询请求相对应的查询结果缓存表。
在本发明一种可能的实现方式中,工作节点存储有查询请求数据库,对于首次查询的首次查询请求会将该首次查询请求及该首次查询请求对应的查询结果缓存表的缓存表信息对应存储到查询请求数据库中,工作节点通过判断查询请求数据中是否包含接收到的查询请求确定数据库中是否存在与该查询请求相对应的查询结果缓存表。
S130,当数据库中存在查询请求对应的查询结果缓存表时,获取所述查询请求对应的缓存表信息。
在工作节点中存储有查询请求数据库的应用场景中,当工作节点确定数据库中存在该查询请求对应的查询结果缓存表时,从查询请求数据库中获取该查询请求对应的查询结果缓存表的缓存表信息。
其中,缓存表信息可以是查询结果缓存表的名称信息,例如,查询结果缓存表的命名规则可以是“CacheTable_”+“SQL串Hash值”。
S140,工作节点将该查询请求及缓存表信息发送给数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果。
在工作节点确定数据库中存在对应的查询结果缓存表之后,将查询请求及缓存表信息发送给数据库,数据库根据缓存表信息确定该查询请求对应的查询结果缓存表的位置,然后,数据库从该查询结果缓存表中查找接收到的查询请求对应的查询结果,并将查找到的查询结果返回给工作节点。
由此可见,不需要从数据库的原始数据表中查找查询请求对应的查询结果。
S150,工作节点接收所述数据库返回的所述查询结果。
工作节点接收数据库从查询结果缓存表中查找到的查询结果。
本实施例提供的数据查询方法,数据库中存储有首次查询的首次查询请求所对应的查询结果缓存表。用于处理查询请求的工作节点接收到查询请求后,判断数据库中是否存在该查询请求对应的查询结果缓存表,如果存在,则获取该查询请求对应的缓存表信息,并将该查询请求及对应的缓存表信息发送给数据库。数据库根据缓存表信息确定查询请求对应的查询结果缓存表,并从该查询结果缓存表中查找到该查询请求对应的查询结果,并返回给工作节点。由上述过程可知,查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源。同时,在数据库中创建查询结果缓存表之后,当再次接收到此查询请求后,可以直接从对应的查询结果缓存表中查询对应的查询结果,不需要去数据库中的原始数据表中查询,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
请参见图3,示出了本发明实施例另一种数据查询方法的流程图,该方法应用于包括工作节点和数据库的查询系统中,如图3所示,该方法可以包括以下步骤:
S210,工作节点接收客户端发送的SQL查询请求。
S220,工作节点查找查询请求数据库中是否存在该查询请求;如果存在,则执行S230;如果不存在,则执行260。
查询请求数据库存储在工作节点中,存储首次查询的首次查询请求,以及为该首次查询请求创建的查询结果缓存表的信息(例如,缓存表的名称)。
当查询请求数据库中存在接收到的查询请求时,判断查询请求数据库中是否存在该查询请求。
S230,工作节点从查询请求数据库中查找该查询请求对应的缓存表信息,并将该查询请求及缓存表信息发送给数据库。
如果查询请求数据库中存在该查询请求,则从该查询请求数据库中获取该查询请求对应的查询结果缓存表的名称,并将该查询结果缓存表的名称发送给数据库。
S240,数据库根据缓存表信息确定该查询请求对应查询结果缓存表,以及从查询结果缓存表中查找该查询请求对应的查询结果。
数据库根据该查询结果缓存表的名称查找到该查询结果缓存表,并从该缓存表中查找该查询请求对应的查询结果返回给发送该查询请求的工作节点。
S250,数据库将从查询结果缓存表中查找到的查询结果发送给工作节点。
S260,工作节点指示数据库创建与该查询请求相对应的查询结果缓存表。
如果查询请求数据库中不存在该查询请求,表明数据库中不存在该查询请求对应的查询结果缓存表,则在数据库中创建该查询请求对应的查询结果缓存表。
S270,数据库根据该查询请求从原始数据表中查找对应的查询结果,并返回给工作节点。
S280,工作节点指示数据库将该查询结果写入新创建的查询结果缓存表中。
需要说明的是,S260~280的执行顺序可以调整,例如,先由数据库从原始数据表中查找对应的查询结果,然后,再创建该查询请求对应的查询结果缓存表,最后将查询结果写入新建的查询结果缓存表中。
S290,工作节点将该查询请求及对应的缓存表信息保存到查询请求数据库中。
例如,查询请求数据库中分别对应存储首次查询的查询请求及该查询请求对应的缓存表的名称。
当查询请求数据库中存在接收到的查询请求时,从查询请求数据库中获取该查询请求对应的查询结果缓存表的名称,并将该查询结果缓存表的名称发送给数据库,以使数据库根据该查询结果缓存表的名称查找到该查询结果缓存表。
S2100,工作节点在查询请求的生命周期内按更新周期维护所述查询结果缓存表。
生命周期,即SQL参数中的过期时间。例如,某查询请求的生命周期是1小时,更新周期是30s,则在接收到查询请求的1小时内每30s更新一次查询结果缓存表中的数据。
需要说明的是,此处的更新查询结果缓存表并不是指修改缓存表中已有的数据,而是在不改变缓存表内数据的前提下增加新的数据。
查询请求的类型不同,查询结果缓存表的维护方法也可以不相同,下面针对趋势缓存查询和非趋势缓存查询的缓存表维护方法分别进行说明:
趋势缓存查询要求有历史数据的积累,而非趋势缓存查询只要求查询当前最新数据,无历史数据累积。
因此,对于非趋势缓存查询,创建并维护两张相同的查询结果缓存表,通过两张缓存表的切换。例如,在接收到查询请求且未得到查询结果时,接收到对缓存表进行大数据量更新的指令,查询结果是接收到查询请求时刻缓存表内的数据,即更新之前的数据,因此,可以利用一张查询结果缓存表完成非趋势缓存查询,利用另一张查询结果缓存表完成大数据量更新。这样,避免了大数据量更新导致用户查询延迟的现象。大数据量更新后,根据已更新的缓存表更新未更新的缓存表。
对于趋势缓存查询,通过创建并维护一张查询结果缓存表,因为有历史数据的积累,所以用户查询总是可以得到相关数据。
本实施例提供的数据查询方法,在数据库中存储首次查询的首次查询请求及首次查询请求对应的查询结果缓存表。工作节点接收到用户的查询请求后,判断该查询请求是否存在对应的查询结果缓存表;如果存在,则获取该查询请求对应的缓存表信息,并将该查询请求及对应的缓存表信息发送给数据库。数据库根据缓存表信息确定查询请求对应的查询结果缓存表,并从该查询结果缓存表中查找到该查询请求对应的查询结果,并返回给工作节点。如果不存在,则在数据库上创建该查询请求对应的查询结果缓存表,同时,从数据库的原始数据表中查询该查询请求对应的查询结果,并写入新建的缓存表中,在查询请求的生命周期内维护该缓存表。查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源。同时,在数据库中创建查询结果缓存表之后,当再次接收到此查询请求后,可以直接从对应的查询结果缓存表中查询对应的查询结果,不需要去数据库中的原始数据表中查询,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
相应于上述的数据查询方法实施例,本发明还提供了数据查询装置实施例。
请参见图4,示出了本发明实施例一种数据查询装置的框图,该装置应用于处理查询请求的工作节点中,如图4所示,该装置包括:第一获取模块110、判断模块120、第二获取模块130、发送模块140和接收模块150。
该第一获取模块110,用于获取查询请求。
工作节点通过第一获取模块110接收用户发送的查询请求。
该判断模块120,用于判断数据库中是否存在与该查询请求相对应的查询结果缓存表;
数据库中存储有首次查询的首次查询请求及首次查询请求对应的查询结果缓存表。
在本发明一种可能的实现方式中,工作节点存储有查询请求数据库,对于首次查询的首次查询请求会将该首次查询请求及该首次查询请求对应的查询结果缓存表的缓存表信息对应存储到查询请求数据库中,工作节点通过判断查询请求数据中是否包含接收到的查询请求确定数据库中是否存在与该查询请求相对应的查询结果缓存表。
如图5所示,判断模块120包括:查找子模块121、第一确定子模块122和第二确定子模块123。
查找子模块121,用于从所述工作节点内存储的查询请求数据库中,查找是否存在所述查询请求。第一确定子模块122,用于当所述查询请求数据库中存在所述查询请求时,确定所述数据库中存在与所述查询请求相对应的查询结果缓存表。第二确定子模块123,用于当所述查询请求数据库中不存在所述查询请求时,确定所述数据库中不存在与所述查询请求相对应的查询结果缓存表。
该第二获取模块130,用于当数据库中存在相应的查询结果缓存表时,获取该查询请求对应的缓存表信息。
发送模块140,用于将该查询请求及对应的缓存表信息发送给数据库,以使数据库根据缓存表信息确定查询请求对应的查询结果缓存表、并从查询结果缓存表中获取查询请求对应的查询结果;
如果数据库中存在该查询请求对应的查询结果缓存表,则数据库直接从该缓存表中查询相应的查询结果。由于查询结果缓存表中存储的数据量远远小于数据库中原始数据表中的数据量,因此,查询缓存表比查询原始数据库的速度更快。
接收模块150,用于接收所述数据库返回的所述查询结果。
本实施例提供的数据查询装置,在数据库中存储有首次查询的查询请求对应的查询结果缓存表。工作节点接收到查询请求后,判断数据库中是否存在该查询请求对应的查询结果缓存表,如果存在,则获取该查询请求对应的缓存表信息,并将该查询请求及对应的缓存表信息发送给数据库。数据库根据缓存表信息确定查询请求对应的查询结果缓存表,并从该查询结果缓存表中查找到该查询请求对应的查询结果,并返回给工作节点。由上述过程可知,查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源。同时,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
请参见图6,示出了本发明实施例另一种数据查询装置的框图,该装置在图4所示实施例的基础上还包括:创建模块210、保存模块220和维护模块230。
创建模块210,用于当所述数据库中不存在所述查询请求相对应的查询结果缓存表时,指示所述数据库创建与所述查询请求相对应的查询结果缓存表;
当该查询请求是用户发起的首次查询,数据库中还没有该查询请求对应的查询结果缓存表,此时通过用户的查询SQL,在从数据库的原始数据表中得到相关数据的同时创建缓存表,并将该查询SQL及对应的缓存表信息存储在工作节点中的查询请求数据库中。
在本发明一种可能的实施例中,查询请求的类型不同,查询结果缓存表的维护方法也可以不相同,
如图7所示,创建模块210包括:第一创建子模块211和第二创建子模块212。
第一创建子模块211,用于当所述查询请求是非趋势缓存查询时,指示所述数据库创建与所述查询请求对应的两张相同的查询结果缓存表;
趋势缓存查询要求有历史数据的积累,通过创建并维护一张查询结果缓存表,因为有历史数据的积累,所以用户查询总是可以得到相关数据。
第二创建子模块212,用于当所述查询请求是趋势缓存查询时,指示所述数据库创建与所述查询请求对应的一张查询结果缓存表。
非趋势缓存查询只要求查询当前最新数据,无历史数据累积。因此,对于非趋势缓存查询,创建并维护两张相同的查询结果缓存表,通过两张缓存表的切换。
保存模块220,用于将所述查询请求及所述查询请求对应的缓存表信息保存到所述查询请求数据库中;
当缓存表创建完成后,将该查询请求及对应的缓存表信息保存到工作节点中的查询请求数据库中。
维护模块230,用于在所述查询请求的生命周期内按更新周期维护所述查询结果缓存表。
例如,某查询请求的生命周期是1小时,更新周期是30s,则在接收到查询请求的1小时内每30s更新一次查询结果缓存表中的数据。
需要说明的是,此处的更新查询结果缓存表并不是指修改缓存表中已有的数据,而是在不改变缓存表内数据的前提下增加新的数据。
本实施例提供的数据查询装置,在数据库中存储首次查询的查询请求及对应的查询结果缓存表。工作节点接收到用户的查询请求后,判断该查询请求是否存在对应的查询结果缓存表;如果不存在,则在数据库上创建该查询请求对应的查询结果缓存表,同时,从数据库的原始数据表中查询该查询请求对应的查询结果,并写入新建的缓存表中,在查询请求的生命周期内维护该缓存表。查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源,同时,在数据库中创建查询结果缓存表之后,当再次接收到此查询请求后,可以直接从对应的查询结果缓存表中查询对应的查询结果,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
所述数据查询装置包括处理器和存储器,上述第一获取模块、判断模块、第二获取模块、发送模块、接收模块创建模块、保存模块和维护模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提高数查询效率。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本实施例提供的数据查询装置,在数据库中存储有首次查询的查询请求对应的查询结果缓存表。工作节点接收到查询请求后,判断数据库中是否存在该查询请求对应的查询结果缓存表,如果存在,则获取该查询请求对应的缓存表信息,并将该查询请求及对应的缓存表信息发送给数据库。数据库根据缓存表信息确定查询请求对应的查询结果缓存表,并从该查询结果缓存表中查找到该查询请求对应的查询结果,并返回给工作节点。由上述过程可知,查询结果缓存表直接存储在数据库中,并没有存储在数据库的内存中,未占用数据库的内存资源。同时,查询结果缓存表中的数量远远小于原始数据表的数据量,因此,大大提高了数据查询效率。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:
获取查询请求,并判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,所述数据库中存储有首次查询的首次查询请求及该首次查询对应的查询结果缓存表;
当所述数据库中存在相应的查询结果缓存表时,获取所述查询请求对应的缓存表信息;
将所述查询请求及所述缓存表信息发送给所述数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果;
接收所述数据库返回的所述查询结果。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据查询方法,其特征在于,该方法应用于处理查询请求的工作节点中,该方法包括:
获取查询请求,并判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,所述数据库中存储有首次查询的首次查询请求及所述首次查询请求对应的查询结果缓存表;
当所述数据库中存在相应的查询结果缓存表时,获取所述查询请求对应的缓存表信息;
将所述查询请求及所述缓存表信息发送给所述数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果;
接收所述数据库返回的所述查询结果。
2.根据权利要求1所述的方法,其特征在于,所述工作节点中存储有查询请求数据库,所述查询请求数据库中存储首次接收到的查询请求及对应的缓存表信息,所述方法还包括:
当所述数据库中不存在所述查询请求相对应的查询结果缓存表时,指示所述数据库创建与所述查询请求相对应的查询结果缓存表;
将所述查询请求及所述查询请求对应的缓存表信息保存到所述查询请求数据库中;
在所述查询请求的生命周期内按更新周期维护所述查询结果缓存表。
3.根据权利要求2所述的方法,其特征在于,所述指示所述数据库创建与所述查询请求相对应的查询结果缓存表,包括:
当所述查询请求是非趋势缓存查询时,指示所述数据库创建与所述查询请求对应的两张相同的查询结果缓存表;
当所述查询请求是趋势缓存查询时,指示所述数据库创建与所述查询请求对应的一张查询结果缓存表。
4.根据权利要求2所述的方法,其特征在于,所述获取查询请求,并判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,包括:
接收客户端发送的查询请求;
从所述工作节点内存储的查询请求数据库中,查找是否存在所述查询请求;
如果所述查询请求数据库中存在所述查询请求,则确定所述数据库中存在与所述查询请求相对应的查询结果缓存表;
如果所述查询请求数据库中不存在所述查询请求,则确定所述数据库中不存在与所述查询请求相对应的查询结果缓存表。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
将已创建查询结果缓存表的查询请求,以及所述查询请求对应查询结果缓存表的缓存表信息保存到所述查询请求数据库中。
6.根据权利要求4所述的方法,其特征在于,获取所述查询请求对应的缓存表信息,包括:
从所述查询请求数据库中查找所述查询请求对应查询结果缓存表的缓存表信息,所述缓存表信息包括所述查询结果缓存表的名称。
7.一种数据查询装置,其特征在于,应用于处理查询请求的工作节点中,该装置包括:
第一获取模块,用于获取查询请求;
判断模块,用于判断数据库中是否存在与所述查询请求相对应的查询结果缓存表,所述数据库中存储有首次查询的首次查询请求及所述首次查询请求对应的查询结果缓存表;
第二获取模块,用于当所述数据库中存在相应的查询结果缓存表时,获取所述查询请求对应的缓存表信息;
发送模块,用于将所述查询请求及所述缓存表信息发送给所述数据库,以使所述数据库根据所述缓存表信息确定所述查询请求对应的查询结果缓存表、并从所述查询结果缓存表中获取所述查询请求对应的查询结果;
接收模块,用于接收所述数据库返回的所述查询结果。
8.根据权利要求7所述的装置,其特征在于,所述工作节点中存储有查询请求数据库,所述查询请求数据库中存储首次接收到的查询请求及对应的缓存表信息,所述装置还包括:
创建模块,用于当所述数据库中不存在所述查询请求相对应的查询结果缓存表时,指示所述数据库创建与所述查询请求相对应的查询结果缓存表;
保存模块,用于将所述查询请求及所述查询请求对应的缓存表信息保存到所述查询请求数据库中;
维护模块,用于在所述查询请求的生命周期内按更新周期维护所述查询结果缓存表。
9.根据权利要求8所述的装置,其特征在于,所述创建模块,包括:
第一创建子模块,用于当所述查询请求是非趋势缓存查询时,指示所述数据库创建与所述查询请求对应的两张相同的查询结果缓存表;
第二创建子模块,用于当所述查询请求是趋势缓存查询时,指示所述数据库创建与所述查询请求对应的一张查询结果缓存表。
10.根据权利要求8所述的装置,其特征在于,所述判断模块,包括:
查找子模块,用于从所述工作节点内存储的查询请求数据库中,查找是否存在所述查询请求;
第一确定子模块,用于当所述查询请求数据库中存在所述查询请求时,确定所述数据库中存在与所述查询请求相对应的查询结果缓存表;
第二确定子模块,用于当所述查询请求数据库中不存在所述查询请求时,确定所述数据库中不存在与所述查询请求相对应的查询结果缓存表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611257345.0A CN108268476B (zh) | 2016-12-30 | 2016-12-30 | 数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611257345.0A CN108268476B (zh) | 2016-12-30 | 2016-12-30 | 数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108268476A true CN108268476A (zh) | 2018-07-10 |
CN108268476B CN108268476B (zh) | 2021-11-30 |
Family
ID=62754568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611257345.0A Active CN108268476B (zh) | 2016-12-30 | 2016-12-30 | 数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108268476B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800247A (zh) * | 2018-12-14 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 数据查找方法、装置、计算机设备以及存储介质 |
CN110781189A (zh) * | 2019-10-25 | 2020-02-11 | 北京达佳互联信息技术有限公司 | 文档平台构建方法、装置、电子设备及存储介质 |
CN110795457A (zh) * | 2019-09-24 | 2020-02-14 | 苏宁云计算有限公司 | 数据缓存处理方法、装置、计算机设备和存储介质 |
CN111143414A (zh) * | 2019-12-26 | 2020-05-12 | 五八有限公司 | 一种缓存数据的反馈方法、装置、电子设备及存储介质 |
CN111367981A (zh) * | 2020-03-06 | 2020-07-03 | 北京思特奇信息技术股份有限公司 | 自动化监控稽核报表数据抽取的方法、系统、介质及设备 |
CN111639095A (zh) * | 2020-05-27 | 2020-09-08 | 中信银行股份有限公司 | 一种数据表查询方法、装置及存储介质 |
CN112182340A (zh) * | 2019-07-01 | 2021-01-05 | 中国移动通信集团浙江有限公司 | 物联网信息查询方法、订阅方法、装置及电子设备 |
CN113032430A (zh) * | 2021-03-25 | 2021-06-25 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置、介质和计算设备 |
CN113535514A (zh) * | 2021-07-02 | 2021-10-22 | 中科曙光国际信息产业有限公司 | 作业跟踪方法、装置、计算机设备和存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731364A (zh) * | 2005-08-05 | 2006-02-08 | 北京九州软件有限公司 | 数据库备份数据的压缩和检索方法 |
CN101604334A (zh) * | 2008-11-18 | 2009-12-16 | 北京美智医疗科技有限公司 | 一种基于缓存技术的医疗影像数据库检索方法及检索系统 |
US20100010965A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Query Management Systems |
CN101860449A (zh) * | 2009-04-09 | 2010-10-13 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN102117309A (zh) * | 2010-01-06 | 2011-07-06 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
CN102968507A (zh) * | 2012-12-14 | 2013-03-13 | 中国银行股份有限公司 | 基于缓存表的数据查询方法 |
CN103207919A (zh) * | 2013-04-26 | 2013-07-17 | 北京亿赞普网络技术有限公司 | 一种MongoDB集群快速查询计算的方法及装置 |
US20150088919A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Transforming a query to reuse stored data |
CN104484400A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 数据查询处理方法及装置 |
CN104679816A (zh) * | 2014-12-17 | 2015-06-03 | 北京可思云海科技有限公司 | 一种嵌入式系统下的sqlite数据库应用方法 |
CN105426467A (zh) * | 2015-11-16 | 2016-03-23 | 北京京东尚科信息技术有限公司 | 一种用于Presto的SQL查询方法及系统 |
CN105786646A (zh) * | 2016-02-25 | 2016-07-20 | 北京金山安全软件有限公司 | 一种数据备份方法、装置及电子设备 |
-
2016
- 2016-12-30 CN CN201611257345.0A patent/CN108268476B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1731364A (zh) * | 2005-08-05 | 2006-02-08 | 北京九州软件有限公司 | 数据库备份数据的压缩和检索方法 |
US20100010965A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Query Management Systems |
CN101604334A (zh) * | 2008-11-18 | 2009-12-16 | 北京美智医疗科技有限公司 | 一种基于缓存技术的医疗影像数据库检索方法及检索系统 |
CN101860449A (zh) * | 2009-04-09 | 2010-10-13 | 华为技术有限公司 | 一种数据查询方法、装置及系统 |
CN102117309A (zh) * | 2010-01-06 | 2011-07-06 | 卓望数码技术(深圳)有限公司 | 一种数据缓存系统和数据查询方法 |
CN102968507A (zh) * | 2012-12-14 | 2013-03-13 | 中国银行股份有限公司 | 基于缓存表的数据查询方法 |
CN103207919A (zh) * | 2013-04-26 | 2013-07-17 | 北京亿赞普网络技术有限公司 | 一种MongoDB集群快速查询计算的方法及装置 |
US20150088919A1 (en) * | 2013-09-20 | 2015-03-26 | Oracle International Corporation | Transforming a query to reuse stored data |
CN104484400A (zh) * | 2014-12-12 | 2015-04-01 | 北京国双科技有限公司 | 数据查询处理方法及装置 |
CN104679816A (zh) * | 2014-12-17 | 2015-06-03 | 北京可思云海科技有限公司 | 一种嵌入式系统下的sqlite数据库应用方法 |
CN105426467A (zh) * | 2015-11-16 | 2016-03-23 | 北京京东尚科信息技术有限公司 | 一种用于Presto的SQL查询方法及系统 |
CN105786646A (zh) * | 2016-02-25 | 2016-07-20 | 北京金山安全软件有限公司 | 一种数据备份方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
孔德瀚等: "基于缓存替换算法的EPCIS查询机制", 《河北大学学报(自然科学版)》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109800247A (zh) * | 2018-12-14 | 2019-05-24 | 深圳壹账通智能科技有限公司 | 数据查找方法、装置、计算机设备以及存储介质 |
CN112182340A (zh) * | 2019-07-01 | 2021-01-05 | 中国移动通信集团浙江有限公司 | 物联网信息查询方法、订阅方法、装置及电子设备 |
CN112182340B (zh) * | 2019-07-01 | 2024-06-07 | 中国移动通信集团浙江有限公司 | 物联网信息查询方法、订阅方法、装置及电子设备 |
CN110795457A (zh) * | 2019-09-24 | 2020-02-14 | 苏宁云计算有限公司 | 数据缓存处理方法、装置、计算机设备和存储介质 |
CN110781189A (zh) * | 2019-10-25 | 2020-02-11 | 北京达佳互联信息技术有限公司 | 文档平台构建方法、装置、电子设备及存储介质 |
CN111143414A (zh) * | 2019-12-26 | 2020-05-12 | 五八有限公司 | 一种缓存数据的反馈方法、装置、电子设备及存储介质 |
CN111367981B (zh) * | 2020-03-06 | 2023-08-22 | 北京思特奇信息技术股份有限公司 | 自动化监控稽核报表数据抽取的方法、系统、介质及设备 |
CN111367981A (zh) * | 2020-03-06 | 2020-07-03 | 北京思特奇信息技术股份有限公司 | 自动化监控稽核报表数据抽取的方法、系统、介质及设备 |
CN111639095A (zh) * | 2020-05-27 | 2020-09-08 | 中信银行股份有限公司 | 一种数据表查询方法、装置及存储介质 |
CN111639095B (zh) * | 2020-05-27 | 2023-03-31 | 中信银行股份有限公司 | 一种数据表查询方法、装置及存储介质 |
CN113032430A (zh) * | 2021-03-25 | 2021-06-25 | 网易(杭州)网络有限公司 | 一种数据处理方法、装置、介质和计算设备 |
CN113032430B (zh) * | 2021-03-25 | 2023-12-19 | 杭州网易数之帆科技有限公司 | 一种数据处理方法、装置、介质和计算设备 |
CN113535514A (zh) * | 2021-07-02 | 2021-10-22 | 中科曙光国际信息产业有限公司 | 作业跟踪方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108268476B (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268476A (zh) | 数据查询方法及装置 | |
Zhao et al. | Dache: A data aware caching for big-data applications using the MapReduce framework | |
US9740706B2 (en) | Management of intermediate data spills during the shuffle phase of a map-reduce job | |
US20030236780A1 (en) | Method and system for implementing dynamic cache of database cursors | |
CN109240946A (zh) | 数据的多级缓存方法及终端设备 | |
CN107239485A (zh) | 数据库操作方法、装置及系统 | |
JP2000330827A (ja) | 参照の局所性を動的に追跡する高効率技法 | |
CN107077453A (zh) | 用于使用集群缓存进行数据库查询的并行优化的系统和方法 | |
CN107154957A (zh) | 基于虚拟环负载均衡算法的分布式存储控制方法 | |
CN110019298A (zh) | 数据处理方法和装置 | |
CN108153776A (zh) | 数据查询方法及装置 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN111125114B (zh) | 数据库横向扩展、数据表访问方法及装置 | |
JP2005276198A (ja) | 複数のメモリ・バッファ・サイズを均衡させるためのシステムおよび方法 | |
CN110069453A (zh) | 运维数据处理方法和装置 | |
CN113377510A (zh) | 无服务器计算环境中基于一致性哈希的缓存包调度优化算法 | |
CN109614411A (zh) | 数据存储方法、设备和存储介质 | |
CN113343045A (zh) | 一种数据缓存方法及网络设备 | |
CN115145879A (zh) | 一种数据处理方法、装置、介质及设备 | |
CN107239568A (zh) | 分布式索引实现方法及装置 | |
US20230237043A1 (en) | Accelerating change data capture determination using row bitsets | |
US11748327B2 (en) | Streams using persistent tables | |
CN110059107A (zh) | 计划优化方法、装置、系统及计算机可读存储介质 | |
CN109992708A (zh) | 一种元数据查询的方法、装置、设备以及存储介质 | |
CN109101514A (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 | ||
CB02 | Change of applicant information |
Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |