CN115617878B - 一种数据查询方法、系统、装置、设备及计算机存储介质 - Google Patents
一种数据查询方法、系统、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN115617878B CN115617878B CN202211461909.8A CN202211461909A CN115617878B CN 115617878 B CN115617878 B CN 115617878B CN 202211461909 A CN202211461909 A CN 202211461909A CN 115617878 B CN115617878 B CN 115617878B
- Authority
- CN
- China
- Prior art keywords
- page
- target
- data
- query
- processed
- 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
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
Abstract
本申请公开了一种数据查询方法、系统、装置、设备及计算机存储介质,应用于数据处理技术领域,接收主机端传输的对目标数据库进行查询的查询请求;解析查询请求中的查询条件;对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面;对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。本申请只需读取待选取页面的边界行数据,并判断边界行数据中的预设字段是否满足查询条件便可以快速判断待选取页面中是否存在所需的数据,可以降低IO延迟,提高数据库中数据的查询效率。
Description
技术领域
本申请涉及数据处理技术领域,更具体地说,涉及一种数据查询方法、系统、装置、设备及计算机存储介质。
背景技术
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。借助数据库可以对批量数据进行管理,在此过程中,有时需要从数据库中查询所需的数据,比如在查询数据库中的数据时,需要从数据库中读取出所存储的相关数据,会读取出大量的数据,再对读取的所有数据进行过滤、筛选,得到满足查询条件的目标数据。在此过程中,由于需要从数据库中读取大量的数据进行处理,会有较大的IO延迟,影响数据查询效率。
综上所述,如何提高数据库中数据的查询效率是目前本领域技术人员亟待解决的问题。
发明内容
本申请的目的是提供一种数据查询方法,其能在一定程度上解决如何提高数据库中数据的查询效率的技术问题。本申请还提供了一种数据查询系统、装置、设备及计算机可读存储介质。
为了实现上述目的,本申请提供如下技术方案:
一种数据查询方法,包括:
接收主机端传输的对目标数据库进行查询的查询请求;
解析所述查询请求中的查询条件;
对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;
对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端。
优选的,所述接收主机端传输的对目标数据库进行查询的查询请求之前,还包括:
接收所述主机端传输的待存储至所述目标数据库中的初始页面组;
按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;
按照所述初始页面组的页面格式将所述目标元组存为对应的待存储页面;
存储所述待存储页面至所述目标数据库中。
优选的,所述接收所述主机端传输的待存储至所述目标数据库中的初始页面组之后,所述按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组之前,还包括:
接收所述主机端传输的所述初始页面组的第一DMA描述符,所述第一DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;
所述按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组,包括:
基于所述第一DMA描述符确定所述初始页面组中的初始元组;
若所述第一DMA描述符中的所述计算码流表征对所述初始元组进行计算,则按照所述预设字段对所述初始元组进行分组、排序,得到所述目标元组;
若所述第一DMA描述符中的所述计算码流表征不对所述初始元组进行计算,则直接将所述初始元组作为所述目标元组。
优选的,所述对所述待处理页面进行处理,得到目标页面,包括:
对所述待处理页面进行过滤和/或投影计算,得到所述目标页面。
优选的,所述对所述待处理页面进行过滤和/或投影计算,得到所述目标页面,包括:
获取所述待处理页面的第二DMA描述符,所述第二DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;
解析所述第二DMA描述符,若所述第二DMA描述符中的所述计算码流表征对所述待处理页面进行过滤和/或投影计算,则对所述待处理页面进行过滤和/或投影计算,得到所述目标页面;
若所述第二DMA描述符中的所述计算码流表征不对所述待处理页面进行过滤和/或投影计算,则直接将所述待处理页面作为所述目标页面。
优选的,对所述待处理页面进行过滤,得到所述目标页面,包括:
获取所述待处理页面的过滤条件,所述过滤条件包括二叉树与链表,所述二叉树的每个节点表征一个运算操作符,所述二叉树的根节点表征逻辑运算,所述链表的链表头表征所述逻辑运算;
创建与所述待处理页面对应的真值表;
若所述待处理页面中元组的数据值满足所述过滤条件中的所述逻辑运算,则在所述真值表中记录所述元组的对应值为第一数值;
若所述待处理页面中元组的数据值不满足所述过滤条件中的所述逻辑运算,则在所述真值表中记录所述元组的对应值为第二数值;
基于所述真值表中的每个对应值均为所述第一数值的元组生成所述目标页面。
一种数据查询系统,包括:
第一接收模块,用于接收主机端传输的对目标数据库进行查询的查询请求;
第一解析模块,用于解析所述查询请求中的查询条件;
第一查询模块,用于对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;
第一处理模块,用于对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端。
一种数据查询装置,包括:
可扩展数据平台,用于接收主机端传输的对目标数据库进行查询的查询请求;解析所述查询请求中的查询条件;对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端。
优选的,所述可扩展数据平台包括:
可编程逻辑器件,用于接收主机端传输的对所述目标数据库进行查询的所述查询请求;解析所述查询请求中的所述查询条件;对接收的所述待处理页面进行处理,得到所述目标页面,并传输所述目标页面至所述主机端;
与所述可编程逻辑器件及所述目标数据库连接的处理系统,用于对于所述目标数据库中经排序后存储的每个所述待选取页面,读取所述待选取页面的所述边界行数据,若所述边界行数据中的所述预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为所述待处理页面。
优选的,所述可编程逻辑器件包括:
PCIE核心,用于接收所述主机端传输的对所述目标数据库进行查询的所述查询请求;
所述可编程逻辑器件还包括:
与所述PCIE核心及所述处理系统连接的过滤投影计算单元,用于对所述待处理页面进行过滤和/或投影计算,得到所述目标页面。
优选的,所述可编程逻辑器件还包括:
与所述PCIE核心及所述处理系统连接的排序计算单元,用于接收所述主机端传输的待存储至所述目标数据库中的初始页面组;按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;按照所述初始页面组的页面格式将所述目标元组存为对应的待存储页面并传输至所述处理系统;
所述处理系统还用于:存储所述待存储页面至所述目标数据库中。
优选的,所述处理系统包括:
与所述可编程逻辑器件及所述目标数据库连接的SATA控制器;
与所述SATA控制器连接的ARM CPU,用于对于所述目标数据库中经排序后存储的每个所述待选取页面,读取所述待选取页面的所述边界行数据,若所述边界行数据中的所述预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为所述待处理页面。
优选的,还包括:
连接在所述可编程逻辑器件及所述处理系统间的DDR。
优选的,还包括:
与所述可扩展数据平台连接的主机端,用于传输所述查询请求。
一种数据查询设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一所述数据查询方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述数据查询方法的步骤。
本申请提供的一种数据查询方法,接收主机端传输的对目标数据库进行查询的查询请求;解析查询请求中的查询条件;对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面;对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。本申请中,由于目标数据库中的待选取页面是经过排序后的页面,所以只需读取待选取页面的边界行数据,并判断边界行数据中的预设字段是否满足查询条件便可以快速判断待选取页面中是否存在所需的数据,无需读取待选取页面中的所有行数据,也无需判断每个行数据是否满足查询条件,也即可以快速得到携带主机端所需数据的待处理页面,之后只对待处理页面进行处理,得到目标页面,便可以传输目标页面至主机端,使得主机端从目标页面中获取所需的目标数据,可以降低IO延迟,提高数据库中数据的查询效率。本申请提供的一种数据查询系统、装置、设备及计算机可读存储介质也解决了相应技术问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种数据查询方法的第一流程图;
图2为本申请实施例提供的一种数据查询方法的第二流程图;
图3为PostgreSQL页面的示意图;
图4为现有数据写入时DMA描述符的示意图;
图5为本申请中数据写入时DMA描述符的示意图;
图6为借助DMA描述符对初始页面组进行排序得到待存储页面的过程图;
图7为边界检查的流程图;
图8为页面过滤与投影的流程图;
图9为对进行过滤、投影的数据块的计算图;
图10为过滤过程的相应示意图;
图11为本申请实施例提供的一种数据查询系统的结构示意图;
图12为本申请实施例提供的一种数据查询装置的结构示意图;
图13为排序计算单元的并行工作示意图;
图14为排序单元的排序示意图;
图15为排序执行单元的详细工作流程图;
图16为现有数据库的工作示意图;
图17为本申请中数据查询装置的工作示意图;
图18为本申请实施例提供的一种数据查询设备的结构示意图;
图19为本申请实施例提供的一种数据查询设备的另一结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。借助数据库可以对批量数据进行管理,在此过程中,有时需要从数据库中查询所需的数据,比如在查询数据库中的数据时,需要从数据库中读取出所存储的相关数据,会读取出大量数据,再对读取的所有数据进行过滤、筛选,得到满足查询条件的目标数据。
影响数据库查询性能主要有两个因素:从磁盘搬运数据库中的数据到主机端内存造成的延迟,称为IO(Input/Output,输入/输出)延迟;CPU(central processing unit,中央处理器)从内存中读取数据进行计算产生的延迟,称为计算延迟。IO延迟方面:磁盘的物理特性,决定了磁盘不能像内存一样进行字节寻址,只能按块进(扇区)行访问。受限于磁盘的读写带宽,从磁盘中读取数据,往往是整个查询过程中耗时最长的环节。在数据库查询中需要根据查询条件进行数据的过滤,如果存储在磁盘中的数据时有序排列的,则可以大幅减少数据的搬运,从而降低IO的延迟。计算延迟方面:半导体工艺逐渐逼近物理极限,近年来摩尔定理逐渐失效,CPU的算力提升缓慢。随着大数据的发展,数据量呈现井喷式增长,作为通过处理器的CPU算力不足问题,逐渐构成数据库性能的瓶颈。为了进一步提高数据库的整体性能,人们将研究目光投放在异构计算上:使用FPGA(Field Programmable GateArray,现场可编程逻辑门阵列)对CPU中的计算密集型运算,进行算力卸载,利用FPGA的并行计算、流水特性能够大幅提升算力,从而提高数据库整体性能。
但是抛开磁盘的物理特性所带来的IO延迟及计算延迟外,由于需要从数据库中读取大量的数据进行处理,仍会有较大的IO延迟,影响数据查询效率。而本申请提供的数据查询方案可以提高数据库中数据的查询效率。
请参阅图1,图1为本申请实施例提供的一种数据查询方法的第一流程图。
本申请实施例提供的一种数据查询方法,可以包括以下步骤:
步骤S101:接收主机端传输的对目标数据库进行查询的查询请求。
实际应用中,可以先接收主机端传输的对目标数据库进行查询的查询请求,主机端、目标数据库及查询请求的相应信息可以根据实际需要确定,本申请在此不做具体限定,比如主机端可以为用户电脑等,目标数据库可以为MySQL、PostgreSQL、Oracle等。
步骤S102:解析查询请求中的查询条件。
实际应用中,在接收主机端传输的对目标数据库进行查询的查询请求之后,便可以解析查询请求中的查询条件,查询条件的类型可以根据实际需要确定,比如查询条件可以为目标数据的值大于预设值等,本申请在此不做具体限定。
步骤S103:对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面。
实际应用中,在解析查询请求中的查询条件之后,对于目标数据库中经排序后存储的每个待选取页面,可以读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面,以避免读取所有页面所带来的IO延迟。需要说明的是,目标数据库中待选取页面的数量可以根据实际需要确定,比如待选取页面可以为目标数据库中的所有页面,也可以为目标数据库中一定数量的指定页面等,且一个待选取页面可以为单个页面,也可以为多个页面等,此外,预设字段为可排序字段,比如可以为工号、成绩、日期、年龄、价格、总量等,本申请在此不做具体限定。
实际应用中,在读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面的过程中,边界行数据可以为待选取页面中的第一个行数据和/或最后一个行数据,换言之,只需对待选取页面中的第一个行数据和/或最后一个行数据进行查询条件匹配,便可以确定该待选取页面是否满足查询条件,无需对待选取页面中的所有行数据进行查询条件匹配,可以提高待处理页面的确定效率,此外,对于不满足查询条件的待选取页面,可以将其仍存储在目标数据库中,不对其进行读取操作。
步骤S104:对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。
实际应用中,在基于查询条件得到所有的待处理页面之后,便可以对所述待处理页面进行处理,得到格式与待处理页面格式一致的目标页面,并传输目标页面至主机端,以使主机端在无需读取目标数据库中的所有数据的情况下,便可以快速、简便的获取到格式与目标数据库中的页面格式一致的目标页面,保证页面在由目标数据库传输至主机端的过程中不会发生格式变化;此外,主机端获取到目标页面后,还可以从目标页面中获取所需的目标数据,以此来卸载主机端的CPU算力,降低主机端CPU的使用率。
需要说明的是,在对待处理页面进行处理,得到目标页面的过程中,可以对待处理页面进行过滤和/或投影计算,得到目标页面等,本申请在此不做具体限定。
需要说明的是,本申请中并不限制主机端对目标页面的处理,比如在传输目标页面至主机端之后,可以由主机端对目标页面进行更高精度的过滤等,本申请在此不做具体限定。
本申请提供的一种数据查询方法,接收主机端传输的对目标数据库进行查询的查询请求;解析查询请求中的查询条件;对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面;对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。本申请中,由于目标数据库中的待选取页面是经过排序后的页面,所以只需读取待选取页面的边界行数据,并判断边界行数据中的预设字段是否满足查询条件便可以快速判断待选取页面中是否存在所需的数据,无需读取待选取页面中的所有行数据,也无需判断每个行数据是否满足查询条件,也即可以快速得到携带主机端所需数据的待处理页面,之后只对待处理页面进行处理,得到目标页面,便可以传输目标页面至主机端,使得主机端从目标页面中获取所需的目标数据,可以降低IO延迟,提高数据库中数据的查询效率。
请参阅图2,图2为本申请实施例提供的一种数据查询方法的第二流程图。
本申请实施例提供的一种数据查询方法,可以包括以下步骤:
步骤S201:接收主机端传输的待存储至目标数据库中的初始页面组。
实际应用中,在接收主机端传输的对目标数据库进行查询的查询请求之前,还可以接收主机端传输的待存储至目标数据库中的初始页面组,以便后续将初始页面组存入目标数据库中。
步骤S202:按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组。
实际应用中,在接收主机端传输的待存储至目标数据库中的初始页面组之后,便可以按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组。
需要说明的是,在对初始页面组中的元组进行分组、排序以及按照初始页面组的页面格式将目标元组存为对应的待存储页面的过程中,可以根据目标数据库的数据格式来进行相应处理,以目标数据库为PostgreSQL数据库为例,后续所有页面的格式均可以按照PostgreSQL数据库的页面格式进行记录。
还需说明的是,PostgreSQL以8KB为单位存放数据,每个8KB内存块,称为一个页面,页面的格式如图3所示,其存储规则如下:一个页面中存放若干条行数据,页面固定位置(12-13字节)标记页面内存放的行数;行数据封装为元组,元组内除头部信息外(占用21字节),依次存放了各个列字段的数据;从页面固定偏移位置(24字节)开始,向页面底部方向存放元组的元信息(2字节),元信息中包含了元组的偏移和长度;从页面底部开始,向页面顶部方向依次存放元组。默认情况下,页面内的元组为无序存放,而本申请中实现了对页面数据的解析与排序,可以将一到多个页面的元组数据,按照元组的某个字段进行排序。
实际应用中,在接收主机端传输的待存储至目标数据库中的初始页面组之后,按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组之前,还可以接收主机端传输的初始页面组的第一DMA(Direct Memory Access,直接存储器访问)描述符,第一DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;相应的,在按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组的过程中,可以基于第一DMA描述符确定初始页面组中的初始元组;若第一DMA描述符中的计算码流表征对初始元组进行计算,则按照预设字段对所述初始元组进行分组、排序,得到目标元组;若第一DMA描述符中的计算码流表征不对初始元组进行计算,则直接将初始元组作为目标元组。以借助携带计算码流的DMA描述符快速对相应的初始页面组进行排序,及时响应用户对排序过程的管控。
需要说明的是,在主机端将数据写入数据库的过程中,用户输入的数据存放在主机端的内存中,内存的物理特性为掉电数据丢失,当需要将数据存放磁盘时,主机端的操作系统会计算内存块在内存的地址、需要存储到磁盘中的偏移、数据块的大小。将所有需要写入磁盘的内存块的地址、偏移、大小放在一起构成一个数组称为 DMA描述符数组。将数组的首地址写入到磁盘控制器的寄存器中,启动传输,磁盘控制器从描述符数组中,获取内存块在内存中的地址,需要存储到磁盘中的偏移以及大小,进行数据搬运的存储操作,直到最后一个描述符完成,如图4所示,需要注意的是:操作系统中有多个文件,操作系统以4KB大小对文件进行管理,文件块在内存中的位置是随机的;内存块写入磁盘的过程中,内存块与磁盘块并无确定的对应关系,在磁盘中的存储位置是随机的;并不是所有的文件都需要经过排序计算,只有数据库的数据存储文件需要经过排序计算。
而本申请为了支持在存储器中实现计算操作,扩展了DMA描述符的功能,在DMA描述符中插入指示计算的码流,用于开启和关闭对数据码流的计算,假设File A为数据库存储文件,进行排序计算后存储更为优化,File B为其它文件,不需要进行排序重组,对于File A与 File B的DMA描述符的码流,如图5所示,其中DMA描述符中的第一个虚线方框表示启动计算,对后面连续2K的数据执行计算操作;第二个虚线方框表示关闭计算,后续的码流将不经过计算直接存储。
具体应用场景中,由于操作系统会以4KB为单位管理内存块,因此内存地址总是4KB对齐的,地址的低12bit(binary digit,比特)为0。而本申请中将DMA描述符扩展为:数据描述符与计算描述符两类,所以本申请中DMA描述符字段定义可以如表1所示。
表1 写入数据的DMA描述符字段定义
值得注意的是,本申请中主机端在进行DMA描述符构建时,会将逻辑上相关的物理块放在一起构建DMA描述符,不会只处理修改的内存数据块。例如:PotgreSQL按照8KB管理内存,称为PostgreSQL页面,因此 pe_data_size 字段最小配置为8KB,表示逻辑上8KB为一个处理单元,当用户只修改了页面中后面4KB时,主机侧仍会将前4KB数据,填入DMA描述符中。当pe_data_size等于64KB时,表示会一次处理8个PostgreSQL页面,用户修改了64KB中的任意一个页面中的数据,主机端都会将64KB的数据内容,依次填写到DMA描述符中。
具体应用场景中,借助DMA描述符对初始页面组进行排序的过程可以如图6所示,其可以包括以下步骤:
从主机端依次读取DMA描述符,直到最后一个描述符;
判断描述符类型,当DMA描述符为计算描述符时:执行开启或关闭计算模块的操作;当DMA描述符为数据描述符时:没有开启计算,直接将src页面数据存入磁盘中;开启计算时,将数据存入到排序操作的缓存中,并将dst字段存入排序操作缓存;
当排序功能开启时,如果排序操作缓存已达到date_size大小,则开启排序计算,将排序后的结果存入磁盘,如果已经是最后一个描述符,无论排序模块中缓存数据是否达到data_size大小,都执行排序操作,并将数据存入磁盘。
步骤S203:按照初始页面组的页面格式将目标元组存为对应的待存储页面;存储待存储页面至目标数据库中。
实际应用中,在按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组之后,便可以按照初始页面组的页面格式将目标元组存为对应的待存储页面;存储待存储页面至目标数据库中,以使得目标数据库中存储经排序后且格式与初始页面组的页面格式一致的页面,保证页面在由主机端传输至目标数据库的过程中不会发生格式变化。
步骤S204:接收主机端传输的对目标数据库进行查询的查询请求。
步骤S205:解析查询请求中的查询条件。
步骤S206:对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面。
实际应用中,在从磁盘存储的目标数据库读取待处理页面的过程中,主机端操作系统中会将文件进行分块管理,当用户需要从磁盘中读取数据时,先在主机端申请内存块,获取文件块在磁盘中的数据块偏移地址,将申请的内存块地址、文件块在磁盘的偏移地址、文件块中数据大小,编辑为DMA描述符数组。将数组的首地址写入磁盘控制器的寄存器中,启动传输。磁盘控制器会逐个遍历DMA描述符,将磁盘中对应位置偏移的数据块拷贝内存块中。而本申请中扩展读取数据时DMA描述符的定义,与数据写入过程相仿,将DMA描述符扩展为:数据描述符与计算描述符。数据描述符用于表征数据的搬运,计算描述符用于开启或关闭对数据流的计算。
举例说明,假设一个表有4个列:a,b,c,d,用户输入如下SQL(Structured QueryLanguage,结构化查询语言)语句:
select b,d from table where (a > v1 and b < v1) or (c < v3 and d <v4);
本申请中可以对数据进行边界检查,经过本申请中的排序操作处理后,数据库中的数据每8个页面为一组,内部的元组按照某一列,进行升序排列,假设用户设置存储过滤条件为a > v1,在数据读取过程中,会读取一组页面中,最后一个元组的值。如果该元组a字段大于v1,则表示该组内数据有满足条件的元组,将全部8个页面载入到过滤与投影缓存中;如果该元组a字段小于v1,则表示组内8个页面都不满足过滤条件,跳过该组内页面的读取操作,如图7所示,其表示按列1的值对8个页面以组为单位进行升序排序。经过边界检查后,对满足边界检查的页面组送入到过滤与投影操作中,对页面过滤与投影的计算过程,如图8所示,其可以包括以下步骤:
将页面中的元组分发到过滤操作的各个执行单元中,各个执行单元会并行的进行元组的过滤计算,判断元组是否满足过滤条件;
保留满足过滤条件的元组,并更新页面中元组的个数,元组的元信息;
将过滤后的元组进行投影计算,将需要的列数据进行拷贝重组;
更新元组的元信息,修改元组的长度值为投影后的长度值。
需要注意的是:并不是所有的文件块,在读取到内存的时候都会经过过滤与投影操作;主机端数据库软件,在投影长度大于原长度场景下,不会启动投影计算;主机端数据库软件,发现查询语句中没有定长数据的过滤条件,不会启动过滤计算;且本申请中保障输出的数据,仍按照PostgreSQL数据库的格式定义,仅修改满足过滤条件的元组元信息,元组的个数信息。
步骤S207:对待处理页面进行过滤和投影计算,得到目标页面。
步骤S208:传输目标页面至主机端。
实际应用中,在对待处理页面进行处理,得到目标页面的过程中,可以进一步对待处理页面进行过滤和投影计算,得到目标页面,比如对待处理页面中不需要的数据进行删除后得到目标页面等。
具体应用场景中,本申请中从目标数据库中读取数据时,同样可以将DMA描述符分为:数据描述符与计算描述符。用于控制过滤操作与投影操作对数据流处理。主机端将DMA描述符数组首地址写入磁盘控制器后,磁盘控制器便按照DMA描述符进行数据的搬运与计算。读取数据的DMA描述符的格式定义如表2所示。
表2 读取数据的DMA描述符的格式定义
启动数据传输后,对需要进行过滤、投影的数据块进行相应的计算。工作流程可以如图9所示。
具体应用场景中,为了提高对待处理页面的过滤效率,可以对过滤的格式进行限定,也即在对待处理页面进行过滤,得到目标页面的过程中,可以获取待处理页面的过滤条件,过滤条件包括二叉树与链表,二叉树的每个节点表征一个运算操作符,二叉树的根节点表征逻辑运算,链表的链表头表征逻辑运算,且逻辑运算可以为和、或、与等,运算操作符可以为大于、小于、大于等于、小于等于等,本申请在此不做具体限定;创建与待处理页面对应的真值表;若待处理页面中元组的数据值满足过滤条件中的逻辑运算,则在真值表中记录元组的对应值为第一数值,比如记录为1等;若待处理页面中元组的数据值不满足过滤条件中的逻辑运算,则在真值表中记录所述元组的对应值为第二数值,比如记录为0等;基于真值表中的每个对应值均为第一数值的元组生成目标页面,也即若某个元组的真值表中的每个对应值均为第一数值,则基于该元组生成目标页面,以借助二叉树、链接数据结构及真值表快速对待处理页面进行过滤。为了便于理解,请参阅图10,其所示例的查询条件为(a >v1 and b < v2) or (c < v3 and d < v4),其所对应的过滤条件及相应的真值表的相应信息也可以参阅图3。
具体应用场景中,在应用包含二叉树和链表数据结构的过滤条件时,主机端可以将用户输入的查询语句编码为二叉树+链表数据结构;将列a、b、c、d在元组中的偏移编码到col_off中;将比较常量v1、v2、v3、v4编码到 col_cmp_val中;将叶子节点的比较运算>、<编码到cmp_func_id中;将每个比较运算的结果合并为一个比较值,分别放在bit0-bit3中,作为一个查找地址值,从真值寄存器中查找逻辑运算对应的结果;将中间节点的逻辑运算and,or 编辑为真值表,本申请中支持4个比较运算,存在2^4=16种可能,使用真值表列出本次过滤条件在16种可能的真值表。相应的,在并行计算完成所有元组的过滤计算后,过滤操作执行如下步骤:在输出页面中设置元组个数,为满足过滤条件的元组个数;依次拷贝满足条件元组的元信息;根据元组的元信息,依次拷贝元组。相应的,投影操作根据用户寄存器中配置的列偏移col_off,列长度col_size,投影后列的位置col_pos将列数据进行拷贝,当col_off等于-1时,停止拷贝操作,整个投影操作完成。
请参阅图11,图11为本申请实施例提供的一种数据查询系统的结构示意图。
本申请实施例提供的一种数据查询系统,可以包括:
第一接收模块101,用于接收主机端传输的对目标数据库进行查询的查询请求;
第一解析模块102,用于解析查询请求中的查询条件;
第一查询模块103,用于对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面;
第一处理模块104,用于对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。
本申请实施例提供的一种数据查询系统,还可以包括:
第二接收模块,用于第一接收模块接收主机端传输的对目标数据库进行查询的查询请求之前,接收主机端传输的待存储至目标数据库中的初始页面组;
第一排序模块,用于按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组;
第一封装模块,用于按照初始页面组的页面格式将目标元组存为对应的待存储页面;
第一存储模块,用于存储待存储页面至目标数据库中。
本申请实施例提供的一种数据查询系统,还可以包括:
第三接收模块,用于第二接收模块接收主机端传输的待存储至目标数据库中的初始页面组之后,第一排序模块按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组之前,接收主机端传输的初始页面组的第一DMA描述符,第一DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;
相应的,第一排序模块可以用于:基于第一DMA描述符确定初始页面组中的初始元组;若第一DMA描述符中的计算码流表征对初始元组进行计算,则按照预设字段对初始元组进行分组、排序,得到目标元组;若第一DMA描述符中的计算码流表征不对初始元组进行计算,则直接将初始元组作为目标元组。
本申请实施例提供的一种数据查询系统,第一处理模块可以包括:
第一处理单元,用于对待处理页面进行过滤和/或投影计算,得到目标页面。
本申请实施例提供的一种数据查询系统,第一处理单元可以用于:获取待处理页面的第二DMA描述符,第二DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;解析第二DMA描述符,若第二DMA描述符中的计算码流表征对待处理页面进行过滤和/或投影计算,则对待处理页面进行过滤和/或投影计算,得到目标页面;若第二DMA描述符中的计算码流表征不对待处理页面进行过滤和/或投影计算,则直接将待处理页面作为目标页面。
本申请实施例提供的一种数据查询系统,第一处理单元可以用于:获取待处理页面的过滤条件,过滤条件包括二叉树与链表,二叉树的每个节点表征一个运算操作符,二叉树的根节点表征逻辑运算,链表的链表头表征逻辑运算;创建与待处理页面对应的真值表;若待处理页面中元组的数据值满足过滤条件中的逻辑运算,则在真值表中记录元组的对应值为第一数值;若待处理页面中元组的数据值不满足过滤条件中的逻辑运算,则在真值表中记录元组的对应值为第二数值;基于真值表中的每个对应值均为第一数值的元组生成目标页面。
请参阅图12,图12为本申请实施例提供的一种数据查询装置的结构示意图。
本申请实施例提供的一种数据查询装置,可以包括:
可扩展数据平台11,用于接收主机端传输的对目标数据库进行查询的查询请求;解析查询请求中的查询条件;对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面;对待处理页面进行处理,得到目标页面,并传输目标页面至主机端。
需要说明的是,可扩展数据平台的类型可以根据实际需要确定,比如可扩展数据平台可以为ZYNQ等,本申请在此不做具体限定。需要说明的是,本申请中的ZYNQ指的是赛灵思公司(Xilinx)推出的行业第一个可扩展处理平台,包含了ARM(Advanced RISCMachines) CPU与可编程门阵列资源。
实际应用中,本申请实施例提供的一种数据查询装置中,可扩展数据平台可以包括:
可编程逻辑器件(Progarmmable Logic ,PL),用于接收主机端传输的对目标数据库进行查询的查询请求;解析查询请求中的查询条件;对接收的待处理页面进行处理,得到目标页面,并传输目标页面至主机端;
与可编程逻辑器件及目标数据库连接的处理系统(Processing System,PS),用于对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面。
需要说明的是,可编程逻辑器件可以为FPGA(Field Programmable Gate Array,现场可编程门阵列)等,且FPGA可以并行对接收的待处理页面进行处理,得到目标页面,以快速将待处理页面处理成目标页面;处理系统可以包括ARM CPU与多个外设控制器,比如DDR(双倍速率同步动态随机存储器)控制器、SATA(Serial Advanced TechnologyAttachment,串行高级技术附件)控制器等。
实际应用中,本申请实施例提供的一种数据查询装置中,可编程逻辑器件可以包括:
PCIE(peripheral component interconnect express,高速串行计算机扩展总线标准)核心(Core),用于接收主机端传输的对目标数据库进行查询的查询请求;
可编程逻辑器件还可以包括:
与PCIE核心及处理系统连接的过滤投影计算单元(PE-EP),用于对待处理页面进行过滤和/或投影计算,得到目标页面。且过滤投影计算单元的数量可以根据具体应用场景需要灵活确定,以并行对待处理页面进行过滤和/或投影计算等。
具体应用场景中,用户可以通过PCIE核心中的PCIe接口,配置解析寄存器,设置对数据流的解析方式与排序字段。寄存器列表及功能定义可以如表3所示。
表3 寄存器列表及功能定义
用户配置计算单元处理的数据库类型、目标排序字段在元组中的偏移、类型、对应的比较函数ID号。默认情况下,过滤投影计算单元内可以有8个执行单元,每个执行单元处理8个页面的数据,每个页面默认为8KB大小。8个执行单元在数据填充满后,开启运算可并行执行。可选的,用户可动态配置PostgreSQL页面的大小,开启的执行单元个数,每个执行单元处理数量的大小与处理数据的总大小等。
具体应用场景中,本申请可以支持定长数据类型的过滤,最大支持8Byte,1个存储器过滤条件,3个计算过滤条件。其中:存储器过滤条件,寄存器组中的第一个过滤条件,会先使用ARM CPU读取从磁盘中载入边界数据,用于判断是否需要将后续已排序的文件块载入到过滤模块缓存中。计算过滤条件,存储器过滤条件判断通过后,将后续文件块载入过滤模块缓存中,由过滤模块进行并行计算,过滤不满足条件的元组。过滤条件经过比较运算后,比较结果之间的逻辑运算关系(与、或)使用真值表查找对应结果,真值运算结果存放在真值寄存中。其中寄存器定义可以如表4所示,其中:col_off、col_size、col_type、 cmp_func_id可以有多组。
表4 过滤寄存器定义
具体应用场景中,过滤投影计算单元还可以进一步对目标定长数据进行投影计算,比如去掉不必要的列字段等,以将元组中某些字段,提取后重组为新的元组。
且本申请中支持列字段减少的场景,PL侧逻辑资源搭建的专用电路,同时对多个页面进行元组列字段的提取与重组操作。对于增加列字段的场景,主机端关闭列投影操作,将元组按照原格式返回,由主机端CPU进行投影计算操作。本申请中可以支持8个字段的投影操作,用户配置目标列在元组的位置,长度,投影后字段的位置,投影操作会启动多个并行执行单元,对各个页面中的元组进行重组。投影寄存器定义可以如表5所示。
表5 投影寄存器定义
实际应用中,本申请实施例提供的一种数据查询装置中,可编程逻辑器件还可以包括:
与PCIE核心及处理系统连接的排序计算单元(PE-S),用于接收主机端传输的待存储至目标数据库中的初始页面组;按照预设字段,对初始页面组中的元组进行分组、排序,得到对应的目标元组;按照初始页面组的页面格式将目标元组存为对应的待存储页面并传输至处理系统;
相应的,处理系统还用于:存储待存储页面至目标数据库中。
具体应用场景中,排序计算单元中可以有8个执行单元,8个执行单元可并行执行,每个执行单元分配了64KB输入缓存,64KB输出缓存,可一次将8个页面的元组,按照某个字段的值进行排序,如图13所示。
排序过程中使用排序缓存SRC,每个排序缓存块16字节,存放元组中的列数据(8字节)、元组所在的页面编号(2字节)、元组的元信息(2字节),排序的结果存放在排序缓存的DST中。
假设以元组的第二列为排序字段,每个列包含页号和元信息,排序执行单元的操作过程,如图14所示:遍历每个页面;遍历页面中的每个元组;根据排序的列,在元组中的偏移(cof_off),列的宽度,提取出目标列数据,相应元组所在页面编号,在页面中的元信息,将提取出的数据放入排序缓存数组SRC中,也即根据col_off,,col_len提取列值、页号、元信息;将目标列的数据按照cmp_func_id对应的函数进行排序,得出排序后的缓存数组DST;在排序后的缓存数组中,根据页号、元组元信息,得到元组在缓存中的位置,一次将元组拷贝到输出页面缓存中。
以PostgreSQL为例,排序执行单元的详细工作流程图如图15所示。
需要说明的是,过滤投影计算单元、排序计算单元的数量可以根据实际需要确定,本申请在此不做具体限定。且过滤投影计算单元、排序计算单元的结构可以根据实际需要确定,比如过滤投影计算单元可以包括顺次连接在PCIE核心与处理系统间的BRAM(BlockRandom Access Memory,块随机存储内存)、Project、BRAM、Filter、BRAM等,排序计算单元可以包括顺次连接在PCIE核心与处理系统间的BRAM、Sort、BRMA等。
实际应用中,本申请实施例提供的一种数据查询装置中,处理系统可以包括:
与可编程逻辑器件及目标数据库连接的SATA控制器;
与SATA控制器连接的ARM CPU,用于对于目标数据库中经排序后存储的每个待选取页面,读取待选取页面的边界行数据,若边界行数据中的预设字段满足查询条件,则从目标数据库中读取出待选取页面作为待处理页面。
实际应用中,本申请实施例提供的一种数据查询装置,还可以包括:连接在可编程逻辑器件及处理系统间的DDR。
实际应用中,本申请实施例提供的一种数据查询装置,还可以包括:与可扩展数据平台连接的主机端(Host),用于传输查询请求。当然,还可以包括与可扩展数据平台连接的数据库(Disk)等,本申请在此不做具体限定。
本申请提供的数据查询装置中相应器件的进一步功能描述可以参阅上述实施例,在此不再赘述。
为了便于理解本申请提供的数据查询装置的作用,假设定长数据如表6所示,包含了5个字段:标识号(ID),姓名(Name),年龄(Age),职位(Position),薪资(Salary)。
表6 定长数据
则现有技术中,数据库按照输入的顺序依次存放各行记录。当用户需要查询:年龄大于30岁且工资小于5000的:员工姓名、年龄、薪资。在数据库中用户输入需要如下SQL语句:select name, age, salary from table where age > 30 and salary < 5000;磁盘的物理特性为按块存储数据。这里假设记录中每5行占用一个存储块。由于数据库中存储的行记录顺序与各字段的内容无关,因此数据库需要执行如图16所示步骤:
将整个表格内容全部从磁盘中读取到主机端内存;主机端CPU进行过滤计算:逐个解析行记录中的每个列字段,过滤满足条件的行记录;主机端CPU进行投影计算:从满足条件的记录中提取出name、age、salary字段。
可以看到操作过程中,会需要进行大量数据的IO读取操作,大量数据的过滤与投影计算操作,整个系统的IO负载与计算负载都比较大。
而本申请中,引入可扩展数据平台作为数据流的中间层。在数据写入磁盘前,利用可扩展数据平台将行记录,按照某个列字段进行排序重组,将重组后的数据写入磁盘中。在进行查询时,对有序记录的操作,将大幅减少所需读取与计算的数据量。举例说明,操作步骤如图17所示,包括以下过程:
利用PL逻辑资源实现的排序计算单元,将页面中的记录按照Salary进行排序。值得注意的是,虽然主机端CPU也可以对页面内数据按某个字段进行排序,但主机端CPU的计算性能,远小于可扩展数据平台使用PL逻辑资源实现的排序计算单元。在可扩展数据平台中对特定规则的计算,可以使用PL侧逻辑资源实现多份硬件电路,使用专用电路,对多个页面进行并行计算,从而大幅提升算力;
将排序后的页面写入磁盘中;
当启动查询时,先使用可扩展数据平台PS侧的ARM CPU读取每个块的边界数据,判断边界数据是否满足过滤条件。在本例中:边界读取值操作,只需读取每个块的第一行即可,无需将所有的页面都载入到内存中;读取并解析,第一个页面的第一行数据 Salary=2000满足条件;读取并解析,第二个页面的第一行数据 Salary=5500不满足条件;由于每个页面内部的行记录,都是按照升序排列的,因此第二个块后续的内容不需要从磁盘中载入到内存,从而实现了减少磁盘IO操作的目的;
将符合边界检查的页面,从磁盘载入到内存中,送入可扩展数据平台PL侧逻辑资源实现的过滤、投影计算单元中,进行页面内行记录的过滤与投影计算,从而达到卸载主机端CPU算力,降低主机端CPU的使用率的目的。且由于使用专用硬件电路,能够达到较高的算力,从而实现查询性能提升;
将过滤与投影后的数据传输到主机端DDR中,由主机端CPU进行后续处理,此时主机端CPU读取到的数据已经是经过过滤与投影的数据,可大幅减少原有方式所需的算力。
本申请还提供了一种数据查询设备及计算机可读存储介质,其均具有本申请实施例提供的一种数据查询方法具有的对应效果。请参阅图18,图18为本申请实施例提供的一种数据查询设备的结构示意图。
本申请实施例提供的一种数据查询设备,包括存储器201和处理器202,存储器201中存储有计算机程序,处理器202执行计算机程序时实现如上任一实施例所描述数据查询方法的步骤。
请参阅图19,本申请实施例提供的另一种数据查询设备中还可以包括:与处理器202连接的输入端口203,用于传输外界输入的命令至处理器202;与处理器202连接的显示单元204,用于显示处理器202的处理结果至外界;与处理器202连接的通信模块205,用于实现数据查询设备与外界的通信。显示单元204可以为显示面板、激光扫描使显示器等;通信模块205所采用的通信方式包括但不局限于移动高清链接技术(HML)、通用串行总线(USB)、高清多媒体接口(HDMI)、无线连接:无线保真技术(WiFi)、蓝牙通信技术、低功耗蓝牙通信技术、基于IEEE802.11s的通信技术。
本申请实施例提供的一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时实现如上任一实施例所描述数据查询方法的步骤。
本申请所涉及的计算机可读存储介质包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本申请实施例提供的数据查询系统、装置、设备及计算机可读存储介质中相关部分的说明请参见本申请实施例提供的数据查询方法中对应部分的详细说明,在此不再赘述。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (16)
1.一种数据查询方法,其特征在于,包括:
接收主机端传输的对目标数据库进行查询的查询请求;
解析所述查询请求中的查询条件;
对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;
对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端;
其中,所述接收主机端传输的对目标数据库进行查询的查询请求之前,还包括:接收所述主机端传输的待存储至所述目标数据库中的初始页面组;按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;将所述目标元组存为对应的待存储页面;存储所述待存储页面至所述目标数据库中。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标元组存为对应的待存储页面,包括:
按照所述初始页面组的页面格式将所述目标元组存为对应的所述待存储页面。
3.根据权利要求2所述的方法,其特征在于,所述接收所述主机端传输的待存储至所述目标数据库中的初始页面组之后,所述按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组之前,还包括:
接收所述主机端传输的所述初始页面组的第一DMA描述符,所述第一DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;
所述按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组,包括:
基于所述第一DMA描述符确定所述初始页面组中的初始元组;
若所述第一DMA描述符中的所述计算码流表征对所述初始元组进行计算,则按照所述预设字段对所述初始元组进行分组、排序,得到所述目标元组;
若所述第一DMA描述符中的所述计算码流表征不对所述初始元组进行计算,则直接将所述初始元组作为所述目标元组。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述对所述待处理页面进行处理,得到目标页面,包括:
对所述待处理页面进行过滤和/或投影计算,得到所述目标页面。
5.根据权利要求4所述的方法,其特征在于,所述对所述待处理页面进行过滤和/或投影计算,得到所述目标页面,包括:
获取所述待处理页面的第二DMA描述符,所述第二DMA描述符中包括表征开启和关闭对数据码流进行计算的计算码流;
解析所述第二DMA描述符,若所述第二DMA描述符中的所述计算码流表征对所述待处理页面进行过滤和/或投影计算,则对所述待处理页面进行过滤和/或投影计算,得到所述目标页面;
若所述第二DMA描述符中的所述计算码流表征不对所述待处理页面进行过滤和/或投影计算,则直接将所述待处理页面作为所述目标页面。
6.根据权利要求4所述的方法,其特征在于,对所述待处理页面进行过滤,得到所述目标页面,包括:
获取所述待处理页面的过滤条件,所述过滤条件包括二叉树与链表,所述二叉树的每个节点表征一个运算操作符,所述二叉树的根节点表征逻辑运算,所述链表的链表头表征所述逻辑运算;
创建与所述待处理页面对应的真值表;
若所述待处理页面中元组的数据值满足所述过滤条件中的所述逻辑运算,则在所述真值表中记录所述元组的对应值为第一数值;
若所述待处理页面中元组的数据值不满足所述过滤条件中的所述逻辑运算,则在所述真值表中记录所述元组的对应值为第二数值;
基于所述真值表中的每个对应值均为所述第一数值的元组生成所述目标页面。
7.一种数据查询系统,其特征在于,包括:
第一接收模块,用于接收主机端传输的对目标数据库进行查询的查询请求;
第一解析模块,用于解析所述查询请求中的查询条件;
第一查询模块,用于对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;
第一处理模块,用于对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端;
其中,还包括:
第二接收模块,用于所述第一接收模块接收主机端传输的对目标数据库进行查询的查询请求之前;接收所述主机端传输的待存储至所述目标数据库中的初始页面组;
第一排序模块,用于按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;
第一封装模块,用于将所述目标元组存为对应的待存储页面;
第一存储模块,用于存储所述待存储页面至所述目标数据库中。
8.一种数据查询装置,其特征在于,包括:
可扩展数据平台,用于接收主机端传输的待存储至目标数据库中的初始页面组;按照预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;将所述目标元组存为对应的待存储页面;存储所述待存储页面至所述目标数据库中;接收所述主机端传输的对所述目标数据库进行查询的查询请求;解析所述查询请求中的查询条件;对于所述目标数据库中经排序后存储的每个待选取页面,读取所述待选取页面的边界行数据,若所述边界行数据中的所述预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为待处理页面;对所述待处理页面进行处理,得到目标页面,并传输所述目标页面至所述主机端。
9.根据权利要求8所述的数据查询装置,其特征在于,所述可扩展数据平台包括:
可编程逻辑器件,用于接收主机端传输的对所述目标数据库进行查询的查询请求;解析所述查询请求中的所述查询条件;对接收的所述待处理页面进行处理,得到所述目标页面,并传输所述目标页面至所述主机端;
与所述可编程逻辑器件及所述目标数据库连接的处理系统,用于对于所述目标数据库中经排序后存储的每个所述待选取页面,读取所述待选取页面的所述边界行数据,若所述边界行数据中的所述预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为所述待处理页面。
10.根据权利要求9所述的数据查询装置,其特征在于,所述可编程逻辑器件包括:
PCIE核心,用于接收所述主机端传输的对所述目标数据库进行查询的所述查询请求;
所述可编程逻辑器件还包括:
与所述PCIE核心及所述处理系统连接的过滤投影计算单元,用于对所述待处理页面进行过滤和/或投影计算,得到所述目标页面。
11.根据权利要求10所述的数据查询装置,其特征在于,所述可编程逻辑器件还包括:
与所述PCIE核心及所述处理系统连接的排序计算单元,用于接收所述主机端传输的待存储至所述目标数据库中的初始页面组;按照所述预设字段,对所述初始页面组中的元组进行分组、排序,得到对应的目标元组;按照所述初始页面组的页面格式将所述目标元组存为对应的待存储页面并传输至所述处理系统;
所述处理系统还用于:存储所述待存储页面至所述目标数据库中。
12.根据权利要求9所述的数据查询装置,其特征在于,所述处理系统包括:
与所述可编程逻辑器件及所述目标数据库连接的SATA控制器;
与所述SATA控制器连接的ARM CPU,用于对于所述目标数据库中经排序后存储的每个所述待选取页面,读取所述待选取页面的所述边界行数据,若所述边界行数据中的所述预设字段满足所述查询条件,则从所述目标数据库中读取出所述待选取页面作为所述待处理页面。
13.根据权利要求9所述的数据查询装置,其特征在于,还包括:
连接在所述可编程逻辑器件及所述处理系统间的DDR。
14.根据权利要求8至13任一项所述的数据查询装置,其特征在于,还包括:
与所述可扩展数据平台连接的主机端,用于传输所述查询请求。
15.一种数据查询设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述数据查询方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211461909.8A CN115617878B (zh) | 2022-11-17 | 2022-11-17 | 一种数据查询方法、系统、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211461909.8A CN115617878B (zh) | 2022-11-17 | 2022-11-17 | 一种数据查询方法、系统、装置、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115617878A CN115617878A (zh) | 2023-01-17 |
CN115617878B true CN115617878B (zh) | 2023-03-10 |
Family
ID=84879226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211461909.8A Active CN115617878B (zh) | 2022-11-17 | 2022-11-17 | 一种数据查询方法、系统、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115617878B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116627892B (zh) * | 2023-05-31 | 2024-05-07 | 中国人民解放军国防科技大学 | 一种数据近存储计算方法、装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106326361A (zh) * | 2016-08-10 | 2017-01-11 | 中国农业银行股份有限公司 | 一种基于HBase数据库的数据查询方法及装置 |
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
CN112579608A (zh) * | 2020-12-25 | 2021-03-30 | 平安银行股份有限公司 | 案件数据查询方法、系统、设备及计算机可读存储介质 |
CN113986824A (zh) * | 2021-10-27 | 2022-01-28 | 西安热工研究院有限公司 | 一种高效存储和检索时序数据的方法 |
CN114297535A (zh) * | 2021-12-17 | 2022-04-08 | 上海东普信息科技有限公司 | 查询条件的页面展示方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11030149B2 (en) * | 2018-09-06 | 2021-06-08 | Sap Se | File format for accessing data quickly and efficiently |
CN114153852A (zh) * | 2021-12-07 | 2022-03-08 | 北京奇艺世纪科技有限公司 | 数据查询方法、装置、设备及存储介质 |
-
2022
- 2022-11-17 CN CN202211461909.8A patent/CN115617878B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106471501A (zh) * | 2016-03-24 | 2017-03-01 | 华为技术有限公司 | 数据查询的方法、数据对象的存储方法和数据系统 |
CN106326361A (zh) * | 2016-08-10 | 2017-01-11 | 中国农业银行股份有限公司 | 一种基于HBase数据库的数据查询方法及装置 |
CN112579608A (zh) * | 2020-12-25 | 2021-03-30 | 平安银行股份有限公司 | 案件数据查询方法、系统、设备及计算机可读存储介质 |
CN113986824A (zh) * | 2021-10-27 | 2022-01-28 | 西安热工研究院有限公司 | 一种高效存储和检索时序数据的方法 |
CN114297535A (zh) * | 2021-12-17 | 2022-04-08 | 上海东普信息科技有限公司 | 查询条件的页面展示方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
张玉杰 ; 于双元 ; .大数据查询综述.2017,(04),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN115617878A (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US8819335B1 (en) | System and method for executing map-reduce tasks in a storage device | |
US11586629B2 (en) | Method and device of storing data object | |
TWI603211B (zh) | Construction of inverted index system based on Lucene, data processing method and device | |
CN110879800B (zh) | 数据写入、压缩和读取方法、数据处理方法及装置 | |
WO2015180432A1 (zh) | 一种聚簇存储方法及装置 | |
US10210196B2 (en) | Data storage device having internal hardware filter, data storage method and data storage system | |
US20170017395A1 (en) | Storage apparatus, data processing method and storage system | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US20140101132A1 (en) | Swapping expected and candidate affinities in a query plan cache | |
CN115617878B (zh) | 一种数据查询方法、系统、装置、设备及计算机存储介质 | |
WO2023124217A1 (zh) | 一种获取多列数据的综合排列数据的方法与设备 | |
CN117407324B (zh) | 基于固态硬盘的数据存储方法、装置、固态硬盘控制器 | |
WO2022037015A1 (zh) | 一种基于持久性内存的列式存储方法、装置及设备 | |
US20240070120A1 (en) | Data processing method and apparatus | |
WO2024032526A1 (zh) | 一种数据检索处理方法和系统 | |
WO2023082902A1 (zh) | 索引的创建方法、计算设备及存储介质 | |
US20170286442A1 (en) | File system support for file-level ghosting | |
CN110780806A (zh) | 促进元数据和数据捆绑存储的原子性保证的方法和系统 | |
CN115438114A (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
WO2020238750A1 (zh) | 数据处理方法、装置、电子设备及计算机存储介质 | |
WO2015058628A1 (zh) | 文件的访问方法及装置 | |
US20240152516A1 (en) | Method and apparatus for executing structural query language instruction in solid-state storage device | |
KR102389609B1 (ko) | 쓰기 최적화 데이터베이스에서의 디스크 스캔 연산 gpu 오프로딩 방법 | |
US20230113460A1 (en) | Systems and Methods for Key-based Indexing in Storage Devices |
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 |