CN113297266B - 数据处理方法、装置、设备及计算机存储介质 - Google Patents
数据处理方法、装置、设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113297266B CN113297266B CN202010653952.9A CN202010653952A CN113297266B CN 113297266 B CN113297266 B CN 113297266B CN 202010653952 A CN202010653952 A CN 202010653952A CN 113297266 B CN113297266 B CN 113297266B
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- query
- data partition
- binary tree
- 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/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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/21—Design, administration or maintenance of databases
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理方法、装置、设备及计算机存储介质。其中,生成数据分区时,根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构;存储所述数据分区及所述数据结构;接收到查询请求时,基于查询条件查询该数据分区对应的该数据结构,确定该数据分区是否为有效分区,仅对有效分区发起查询,本申请实施例的技术方案避免了对无效分区的查询,实现了有效分区的准确判定,提高了查询效率。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种数据处理方法装置、设备及计算机存储介质。
背景技术
为应对数据规模不断增大给数据库带来的巨大存储压力,通常会采用分布式架构以横向扩展数据库系统的吞吐能力,这便需要对数据库表中的数据进行分区,从而将压力分散到不同数据分区上。这样查询数据库表中的数据时,会被拆分成对数据分区的查询。然而数据库的数据分区数量较多时,查询时由于存在很多无效分区,会影响查询性能,导致查询效率降低。
发明内容
本申请实施例提供一种数据处理方法、装置、设备及计算机存储介质,用以解决现有技术中查询效率较低的技术问题。
第一方面,本申请实施例中提供了一种数据处理方法,包括:
生成数据分区;
根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构;
存储所述数据分区及所述数据结构;其中,所述数据结构用于基于查询条件确定所述数据分区是否为有效分区。
第二方面,本申请实施例中提供了一种数据处理方法,包括:
接收查询请求,抽取查询条件;
确定请求查询的数据分区;
基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区;
其中,所述数据结构预先存储数据是否位于所述数据分区中的判定结果。
第三方面,本申请实施例中提供了一种数据处理装置,包括:
第一生成模块,用于生成数据分区;
第二生成模块,用于根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构;
存储模块,用于存储所述数据分区及所述数据结构;其中,所述数据结构用于基于查询条件确定所述数据分区是否为有效分区。
第四方面,本申请实施例中提供了一种数据处理装置,包括:
请求处理模块,用于接收查询请求,抽取查询条件;
分区确定模块,用于确定请求查询的数据分区;
分区判定模块,用于基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区;
其中,所述数据结构预先存储数据是否位于所述数据分区中的判定结果。
第五方面,本申请实施例中提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如上述第一方面所述的数据处理方法。
第六方面,本申请实施例中提供了一种计算设备,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如上述第二方面所述的数据处理方法。
第七方面,本申请实施例中提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现如上述第一方面所述的数据处理方法。
第八方面,本申请实施例中提供了一种计算机存储介质,存储有计算机程序,所述计算机程序被计算机执行时实现如上述第二方面所述的数据处理方法。
本申请实施例中,生成数据分区时,对数据分区中的数据进行预先判定,根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构,并存储该数据结构;从而,接收到查询请求时,可以基于查询条件查询该数据分区对应的该数据结构,确定该数据分区是否为有效分区,进而可以仅对有效分区发起查询,避免了对无效分区的查询,实现了有效分区的准确判定,从而可以提高查询效率。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请提供的一种数据处理方法一个实施例的流程图;
图2a示出了本申请实施例在一个实际应用中构建的二叉树示意图;
图2b示出了本申请实施例在一个实际应用中二叉树对应的数据结构;
图2c~图2e分别示出了本申请实施例在一个实际应用中布隆过滤器的示意图;
图3示出了本申请提供的一种数据处理方法又一个实施例的流程图;
图4示出了本申请提供的一种数据处理方法又一个实施例的流程图;
图5示出了本申请实施例在一个实际应用中的数据查询流程示意图;
图6示出了本申请实施例在一个实际应用中的数据查询场景示意图;
图7示出了本申请提供的一种数据处理装置一个实施例的结构示意图;
图8示出了本申请提供的一种计算设备一个实施例的结构示意图;
图9示出了本申请提供的一种数据处理装置又一个实施例的结构示意图;
图10示出了本申请提供的一种计算设备又一个实施例的结构示意图;
图11示出了本申请提供的一种数据处理装置又一个实施例的结构示意图;
图12示出了本申请提供的一种计算设备又一个实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
在本申请的说明书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
本申请实施例的技术方案主要应用于数据查询场景中,例如针对冷数据查询场景中,以提高数据查询效率。
为了便于理解本申请技术方案,下面对本申请实施例中可能出现的技术术语首先进行解释说明:
数据分区:一种物理数据库设计技术,将数据库表进行切分获得,使得数据库表的数据可以均衡分摊到不同存储空间中,每个数据分区中存放部分数据,数据库表切分为数据分区之后,实际上还是一张数据库表。通过分区可以将表的数据均衡到不同地方,提高数据检索的效率,降低数据库的访问压力。查询数据库表时,会被拆分为多个数据分区进行查询,不同数据分区的查询结果可以汇总为对整个数据库表的最终结果。然后由于进行了分区,查询时会存在无效分区的情况,因此也会影响查询性能,降低查询效率,这也是本申请所要解决的一个技术问题。
其中,有效分区是指数据分区中包括所要查询的数据,而无效分区即是指数据分区中不包括所要查询的数据,由于进行数据查询之前,用户并不知道哪个数据分区中存储哪些数据,因此编写的查询语句无法避免的有可能会访问无效分区,从而导致对无效分区的查询,影响查询查询。
查询请求:基于用户编写的查询语句触发的请求。
查询语句:一般是指SQL(Structured Query Language,结构化查询语言)语句。
查询条件(conditions):查询语句中用于进行数据筛选的语句。例如,SELECT*FROM Persons WHERE City='Beijing',其中,City='Beijing'即为查询条件。结合查询条件中规定的目标数据,如City='Beijing',数据分区中如果存在该目标数据,可以认为该数据分区为有效分区。其中,查询条件中可以包括一个条件或由多个条件组成的组合条件等。
抽象语法树:用于对查询语句解析构建生成的语法树,例如可以是二叉树。
执行计划:通过对抽象语法树进行优化获得,是指查询语句被物理性执行的方法。
最小化执行计划:基于无效分区,对执行计划进行剪裁获得,使得最小化执行计划被物理性执行时,避免对无效分区的查询。
二叉树:一种树形结构,二叉树中的每个节点最多有两个字子树的树形结构。
二分查找算法:也称折半查找(Binary Search),是一种效率较高的查找方法。二分查找的基本思想是将n个元素按数据升序或降序的顺序分成大致相等的两部分,取n/2的元素a与x做比较,如果x<a,则只要在数组a的左半部分继续搜索x,如果x>a,则只要在数组a的右半部搜索x。
二分查找树:利用二分查找算法构建的二叉树。在二分查找树中,若左子树不空,则左子树上的所有节点均小于等于根节点;若右子树不空,则右子树上的所有节点均大于等于根节点;左右子树也分别为二叉查找树;其中,等于的情况仅出现在左侧或右侧的某一侧。
布隆过滤器(Bloom Filter):是一个很长的二进制向量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中。
冷数据:是指访问频率较低的数据,通常存储于成本较低、存取速率较慢的存储介质中的。创建数据库表时可以设定分区字段,然后数据就会以数据分区进行组织,根据一定规则(例如很久未访问的数据分区通常为冷数据)就可以将该存储坑数据的数据分区转至其它存储介质中。
远端存储介质:相较于本地存储而言,远端存储介质是指非本地的存储空间,例如可以是云端存储服务等。远端存储介质通常存储成本低,但是性能和吞吐力低于本地存储。实际应用中,通常可以将冷数据存储在远端存储介质。
由于数据分区数量较多时,由于无法避免对无效分区的访问,会影响查询性能,导致查询效率降低,因此,发明人经过一系列研究提出了本申请的技术方案,在本申请实施例中,生成数据分区时,对数据分区中的数据进行预先判定,根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构,并存储该数据结构;从而,接收到查询请求时,可以基于查询条件查询该数据分区对应的该数据结构,确定该数据分区是否为有效分区,进而可以仅对有效分区发起查询,避免了对无效分区的查询,实现了有效分区的准确判定,从而可以提高查询效率。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请提供的一种数据处理方法一个实施例的流程图,该方法可以包括以下几个步骤:
101:生成数据分区。
其中,数据分区对数据库表划分获得。该数据分区可以是指将数据库表中的一列或多列划分获得,数据分区中包括了其包括的列所对应的所有行数据。
在实际应用中,该数据分区可以是针对数据库表中的冷数据划分得到的数据分区。也即可以是针对数据库表中冷数据对应字段,生成数据分区。
102:根据数据是否位于数据分区中的判定结果,生成存储该判定结果的数据结构。
该数据结构中可以存储数据分区中的数据位于数据分区中的判定结果,数据结构可以有多种实现形式,在下文实施例中会详细介绍。
由于数据结构中只存储判定结果,因此占用空间小,是一种轻量级数据机构。
103:存储该数据分区及该数据结构。
存储数据分区时,对应存储数据分区对应的数据结构。该数据结构即可以用于基于查询条件确定数据分区是否为有效分区。
其中,查询条件可以基于查询请求中的查询语句抽取获得,通过查询该数据结构,若存在查询语句中的目标数据,则表明数据分区即为有效分区,否则即为无效分区,进而可以仅对有效分区进行查询。
实际应用中,数据分区可以是存储至远端存储介质中,而数据结构由于占用空间较小,可以存储在本地内存或本地磁盘中,以方便快速查询。
实际应用中,数据分区中存储的数据可以为冷数据,存储冷数据的存储介质通常会选择价格低廉,性能较差的存储介质,因此,对冷数据访问的查询效率会更低,而采用本申请技术方案,可以有效判断数据分区是否为有效分区,进而可以决定是否可以对其发起查询,以可以避免对无效分区的访问,提高查询效率。
本实施例中,对数据分区中的数据进行预先判定,根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构,并存储该数据结构;从而,基于数据结构可以确定该数据分区是否为有效分区,进而可以仅对有效分区发起查询,避免了对无效分区的查询,实现了有效分区的准确判定,从而可以提高查询效率。
其中,由于数据分区包括数据库表中的一列或多列数据,因此,数据结构可以仅针对数据分区中的目标列构建,该目标列可以是指用户指定字段对应的列,或者也可以是指用于条件查询的字段、主键字段、查询时用于排序字段、或者查询时用于统计或分组的字段等对应的列。本申请对此不进行具体限定,可以结合实际应用情况而设定,当然也可以针对数据分区中的每一列都生成对应的数据结构。
作为一种可选实现方式,该数据结构可以是指二叉树结构;该根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构可以包括:
对数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树;
如果判定任一个数据段中包含的全部数据均未处于数据分区中或者均处于数据分区中,确定任一个数据段对应节点为叶子节点,并在叶子节点存储判定结果;否则对任一个数据段继续进行数据段划分;
生成二叉树对应的数据结构。
可选地,可以是对数据分区中的目标列对应的最大数据和最小数据构成的数据范围进行数据段划分。
如果数据分区存在最大数据和最小数据,则可以采用二叉树方式生成数据结构。
在某些实施例中,对数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树包括:
对数据分区的最大数据和最小数据构成的数据范围,采用二分查找算法进行数据段划分,并构建表示数据段的节点以建立二分查找树。
为了便于理解,假设数据分区对应的最大数据为15,最小数据为0。首先采用二分查找算法找到[0,15]之间的中间数据为7,则可以将[0,15]构成的数据范围划分为数据段[0,7],以及数据段[8,15]两个数据段;若数据段[0,7]中的全部数据均未处于或均为处于数据分区中,则数据段[0,7]即可以作为叶子节点;假设,数据段[0,7]中的全部数据均处于数据分区中,该叶子节点对应的判定结果为true(真)。数据段[8,15]继续采用二分查找算法进行数据段划分,获得数据段[8,11]以及数据段[12,15],假设数据段[8,11]及数据段[12,15]中的部分数据位于数据分区中,则可以继续对数据段[8,11]及数据段[12,15]中进行划分,分别得到数据段[8,9]、数据段[10,11]、数据段[12,13]、数据段[14,15],数据段[8,9]中的全部数据均未处于数据分区中,作为叶子节点,判定结果为false(假);数据段[10,11]中的全部数据均处于数据分区中,作为叶子节点,判定结果为true(假);数据段[12,13]中的全部数据均未处于数据分区中,作为叶子节点,判定结果为false(假);数据段[14,15]中的全部数据均未处于数据分区中,作为叶子节点,判定结果为true(假),构建生成的二叉树的树形示意图可以如图2a中所示。
基于图2a所示的二叉树,可以生成存储该二叉树中数据信息的数据结构,也即二叉树结构。
由于数据结构中只存储判定结果,不存储数据,因此占用空间较小,而为了进一步降低数据结构的占用空间,在某些实施例中,生成二叉树对应的数据结构可以包括:
利用最大数据和最小数据构成的数据范围表示二叉树的根节点;
对于二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点;
对于二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中。
在某些实施例中,可以利用二进制数字0和1分别表示其连接的两个孩子节点是否为叶子节点;也即对于二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点可以是:对于二叉树中的非叶子节点,利用字符0及字符1分别表示其连接的两个孩子节点是否为叶子节点;
例如,字符0可以表示叶子节点,字符1表示非叶子节点,当然反之也可以,也即字符1可以表示叶子节点,字符0表示非叶子节点.
在某些实施例中,可以利用二进制数字0和1分别表示叶子节点存储的判定结果,也即对于二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中可以是:对于二叉树中的叶子节点,利用字符0及字符1分别表示其包含的全部数据是否位于数据分区中。
例如,利用字符1表示true,表示叶子节点对应的全部数据均处于数据分区中,利用字符0表示false,表示叶子节点对应的全部数据均未处于数据分区中。
当然,除非采用字符0和字符1表示,当然还可以采用其它数据类型的数据表示,例如布尔类型的字符表示等。
如图2b中所示的图2a的二叉树对应的数据结构,可以采用0表示叶子节点、1表示非叶子节点,则,采用01 11 00 00,八位(共占用1字节)即可以表示二叉树的树形结构。
可以采用1表示true,而0表示false,则,采用10101,五位即可以表示叶子节点存储的判定结果,如图2b所示的数据结构占用空间不超过18个字节。
作为另一种可选方式,对于不存在数据大小之分的数据分区,如性别或职业等数据,可以采用布隆过滤器作为数据结构。
因此,根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构可以包括:
将数据分区中的数据通过哈希函数映射至布隆过滤器中。
其中,布隆过滤器用于检索查询条件中的目标数据是否位于布隆过滤器中,以确定数据分区是否为有效分区。
可选地,可以是将数据分区中目标列的数据通过哈希函数映射至布隆过滤器中。
其中,布隆过滤器可以认为是一个很长的二进制向量,为了便于理解,如图2c中所示的布隆过滤器,假设长度为8,每个比特位的初始值为0。对于某个数据可以通过哈希函数映射至布隆过滤器中,可以利用多个不同哈希函数生成多个哈希值,并对每个哈希值指向的比特位置为1,例如对于数据“zhangsan”,假设使用三个哈希函数分别生成哈希值1、4、7,则将1、4、7对应比特位置为1,变为如图2d所示的布隆过滤器。
进行数据查询时,如图2e中所示,假设某个目标数据为“lisi”通过哈希函数分别生成哈希值1、4、8映射至布隆过滤器,由于8这个比特位上的值为0,则即可以判定目标数据为“lisi”不存在,未处于数据分区中。
在某些实施例中,存储数据分区及数据结构可以包括:
将数据分区存储至远端存储介质中;
将数据分区对应的数据结构存储至本地磁盘或本地内存中。
实际应用中,数据分区可以存储为冷数据,由于冷数据访问频率较低,以存储在远端存储介质。而由于冷数据也存在访问需求,为了提高查询效率,采用本申请实施例构建的数据结构由于占用空间较小,可以将数据分区对应的数据结构存储至本地磁盘或本地内存中。
可选地,由于本申请生成的数据结构占用空间小,对于需要存储于远端存储介质的所有数据分区,各自的数据结构均可以存储在本地磁盘或本地内存中,以提高查询性能。
当然,作为另一种可选方式,将数据分区对应的数据结构存储至本地磁盘或本地内存中也可以是:
如果数据分区的访问频率高于预定频率,将数据分区对应的数据结构存储至本地磁盘或者本地内存中。
也即可以将访问频率较高的数据分区的数据结构存储至本地磁盘或者本地内存。
对于访问频率低于预定频率的数据分区,其对应的数据结构可以存储至远端存储介质,再存在查询需求时,再从远端存储介质中下载至本地磁盘或本地内存中。
对于按照图1所示生成的数据结构,可以有效、准确的进行数据分区是否为有效分区的判定,如图3所示的数据处理方法,从数据分区判定角度对本申请技术方案进行了描述,可以包括以下几个步骤:
301:接收查询请求,抽取查询条件。
查询请求中包括用户编写的查询语句,对查询语句进行解析可以从中抽取获得查询条件。
可以首先生成查询语句对应的抽象语法树,再从抽象语法树中抽取查询条件,查询语句实际应用中可以具体是指SQL语句,抽象语法树生成、以及查询条件抽取为现有技术,在此不再赘述。
实际应用,本实施例可以由查询引擎执行,查询引用部署在数据库服务器中,用于实现查询语句的解析和执行等。
302:确定请求查询的数据分区。
根据查询请求可以确定本次请求查询的数据分区,可以理解的是,请求查询的数据分区可以包括多个。
303:基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区。
其中,数据结构预先存储数据是否位于数据分区中的判定结果。数据结构的具体生成方式可以详见图1对应实施例中所示,在此不再赘述。
若数据分区为有效分区,即可以对该数据分区进行查询,否则可以过滤掉该数据分区,以避免对无效分区的查询,提高查询效率。
作为一种可选方式,数据结构可以为二叉树结构;其中,二叉树的节点表示对数据分区的最大数据和最小数据构成的数据范围划分获得的数据段;其中,若判定任一数据段中包含的全部数据均未处于数据分区中或者处于数据分区中,确定任一数据段对应节点为叶子节点,并在叶子节点存储判定结果;否则对任一数据段继续进行数据段划分;二叉树结构具体生成方式可以详见前文实施例中所示,示例可以参见图2a以及图2b中所示。
则基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区可以包括:
确定查询条件中的目标数据;
查询数据分区对应的二叉树结构,基于二叉树结构存储的判定结构,确定目标数据是否位于数据分区中,若是,确定数据分区为有效分区,若否,确定数据分区为无效分区。
例如,对于图2a以及图2b对应的二叉树结构,假设查询条件中的目标数据为8,通过查询二叉树结构,发现目标数据8所在的数据段[8,9]为false,表明数据分区中不存在目标数据8,该数据分区对于本次查询来讲即为无效分区,不需要进行查询。又如假设目标数据为11,通过查询二叉树结构,可以发现目标数据11所在数据段[10,11]为true,表明数据分区中存在该目标数据11,该数据分区对于本次查询来讲为有效分区,可以进行查询。
作为另一种可选方式,数据结构可以布隆过滤器,数据分区中的数据通过哈希函数映射至布隆过滤器中;
则基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区可以包括:
确定查询条件中的目标数据;
将目标数据通过哈希函数映射至布隆过滤器中,确定目标数据是否位于布隆过滤器,若是,则确定数据分区为有效分区,否则为无效分区。
例如,若目标数据通过哈希函数计算获得哈希值在布隆过滤器中映射的比特位值为0,则表明该目标数据未处于数据分区中,该数据分区对于本次查询来讲即为无效分区,不需要进行查询。而若在布隆过滤器中映射的比特位值均为1,则表明该目标数据处于数据分区中,该数据分区为有效分区,可以进行查询。
采用本申请实施例为数据分区生成的数据结构,可以对无效分区进行过滤,可以准确确定数据分区是否为有效分区。
在某些实施例中,基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区包括:
从本地内存或本地磁盘中查询是否存在数据分区对应的数据结构;
若否,从远端存储介质中下载数据分区对应的数据结构至本地内存或本地磁盘中;
基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区。
而若存在数据分区对应的数据结构,则可以直接执行基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区的操作。
此外,本申请实施例还提供了一种数据处理方法,如图4中所示,该方法可以包括以下几个步骤:
401:接收查询请求,抽取查询条件。
402:确定请求查询的数据分区。
403:基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区。
其中,数据结构预先存储数据是否位于数据分区中的判定结果。
其中,步骤401~步骤403的操作可以详见图3所示实施例中步骤301~步骤303的操作,在此不再赘述。
404:基于查询请求对有效分区进行数据查询。
基于对数据分区的判定结果,可以基于查询请求,仅对有效分区进行数据查询。也即如果数据分区为有效分区,则可以基于查询请求对该数据分区进行数据查询。而若数据分区为无效分区,则可以结束流程,不再对该数据分区进行数据查询,从而对无效分区进行过滤,仅对有效分区进行数据查询,避免了对无效分区的数据查询,可以提高查询性能,提高查询效率。
在某些实施例中,基于查询请求对有效分区进行数据查询可以包括:
对查询请求对应的执行计划进行分区裁剪以过滤无效分区,获得最小化执行计划;
执行最小化执行计划,对有效分区进行数据查询。
该最小化执行计划中仅包括对有效分区的执行计划,从而执行该最小化执行计划,可以实现仅对有效分区的数据查询。
在实际应用中,数据查询过程可以按照图5所示的查询流程实现,可以首先对查询请求中查询语句进行解析,生成抽象语法树501;从抽象语法树中可以抽取查询条件,并基于查询条件构建条件语法树502;之后对抽象语法树进行优化处理可以得到执行计划503,而结合条件语法树及数据分区对应的数据结构,可以进行分区裁剪过滤掉无效分区,从而得到最小化执行计划504;最后执行该最小化执行计划,可以发起对有效分区的数据查询,获得对应的查询结果505。
为了进一步提高查询效率,在数据分区存储在远端存储介质的情况下,由于进行数据查询时,需要从远端存储介质中首先下载数据分区至本地磁盘,再将数据分区从本地磁盘下载至本地内存中,才能实现数据查询,为了减少下载数据量,在某些实施例中,基于查询请求对有效分区进行数据查询可以包括:
如果数据分区为有效分区,确定本地内存或本地磁盘中是否存在数据分区;
若本地内存存在数据分区,基于查询请求,对数据分区进行数据查询;
若本地磁盘存在数据分区,将数据分区下载至本地内存进行保存,并基于查询请求,对数据分区进行数据查询;
若本地内存或本地磁盘未保存数据分区,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存,并基于查询请求,对数据分区进行数据查询。
也即本实施例采用二级缓存方式,将从远端存储介质下载获得是数据分区保存至本地磁盘以及本地内存中,从而若当前查询的数据分区保存在本次内存或本地磁盘,则可以无需从远端存储介质中进行下载,直接执行查询操作即可,减少了数据下载量,可以加速数据读取,提高查询效率。
其中,若本地内存或本地磁盘未保存数据分区,从远端存储介质中下载的数据分区可以首先保存至本地磁盘中,再从本地磁盘中将该数据分区下载至本地内存中进行保存。
由于本地内存或本地磁盘由于存储空间有限,可以采用LRU(Least RecentlyUsed,最久最少使用)算法对本地内存或本地磁盘中的数据进行置换。因此,在某些实施例中,若本地内存或本地磁盘未保存数据分区,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存可以包括:
若本地内存或本地磁盘未保存数据分区,如果本地内存或本地磁盘存在空闲空间,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存;
如果本地内存或本地磁盘存储空间已满,删除本地内存或本地磁盘中最久未使用数据,并从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存。
其中,可以具体是,若本地内存未保存数据分区,且存在空闲空间,可以首先查询本地磁盘是否保存该数据分区,若是,则从本地磁盘下载该数据分区至本地内处保存,若否,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存;其中,若本地磁盘存储空间已满,首先删除本地磁盘中最久未使用数据,再从远端存储介质中下载数据分区。
而若本地内存未保存数据分区,且存储空间已满,首先删除本地内存中最久未使用数据,再询本地磁盘是否保存该数据分区。
其中,该最久未使用数据例如可以是指未被访问时长大于预定时长的数据等。
其中,基于查询请求对有效分区进行数据查询之后,可以获得查询结果,该方法还可以包括:
输出查询结果。
其中,查询引擎可以提供可视化界面,用于展示该查询结果等。
在一个实际应用中,本申请实施例的技术方案可以应用于对冷数据进行数据查询的应用场景中,冷数据划分出的数据分区通常会选择存储至远端存储介质中,以降低存储成本等,然后实际应用中仍然存在对冷数据的查询请求,但是查询存储至远端存储介质的冷数据,会大大增加查询耗时,因此需要提高对冷数据的查询效率。而采用本申请实施例的技术方案,可以有效提高数据查询效率,如图6中所示在冷数据查询场景中的数据查询交互示意图中,数据库服务器601,可以首先生成冷数据的数据分区,并存储至远端存储介质602中,并根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构,可以将数据结构存储至本地磁盘603及本地内存604中。
数据库服务器601可以接收用户提交的查询请求,该查询请求中包括查询语句,如SQL语句,具体可以是由数据库服务器中部署的查询引擎接收查询请求。
基于查询请求可以抽取查询条件,确定请求查询的数据分区,从而可以首先查询数据结构确定数据分区是否为有效分区,若数据分区为有效分区则可以进行数据查询。
而为了进一步降低查询耗时,提高查询效率,数据服务器601从远端存储介质602下载的数据分区可以缓存至本地磁盘603以及本地内存604中,可以首先从本地内存604中查询是否存在该有效分区,若是,则可以直接进行数据查询,否则,可以从本地磁盘603中查询是否存在该有效分区,若是,则可以下载至本地内存604中进行保存,并进行数据查询,否则,可以从远端存储介质602中下载该有效分区并保存至本地磁盘603和本地内存604中,并对本地内存604保存的该有效分区进行数据查询。
数据库服务器601获得的查询结果可以输出给用户查看。
图7为本申请提供的一种数据处理装置一个实施例的结构示意图,可以包括:
第一生成模块701,用于生成数据分区;
第二生成模块702,用于根据数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构;
存储模块703,用于存储数据分区及数据结构;其中,数据结构用于基于查询条件确定数据分区是否为有效分区。
在某些实施例中,该第二生成模块可以具体用于对数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树;如果判定任一个数据段中包含的全部数据均未处于数据分区中或者均处于数据分区中,确定任一个数据段对应节点为叶子节点,并在叶子节点存储判定结果;否则对任一个数据段继续进行数据段划分;生成二叉树对应的数据结构。
在某些实施例中,该第二生成模块对数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树包括:对数据分区的最大数据和最小数据构成的数据范围,采用二分查找算法进行数据段划分,并构建表示数据段的节点以建立二分查找树。
在某些实施例中,该第二生成模块生成二叉树对应的数据结构可以包括:利用最大数据和最小数据构成的数据范围表示二叉树的根节点;对于二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点;对于二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中。
在某些实施例中,该第二生成模块对于二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点可以包括:对于二叉树中的非叶子节点,利用字符0及字符1分别表示其连接的两个孩子节点是否为叶子节点;
该第二生成模块对于二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中可以包括:对于二叉树中的叶子节点,利用字符0及字符1分别表示其包含的全部数据是否位于数据分区中。
在某些实施例中,该第二生成模块可以具体用于将数据分区中的数据通过哈希函数映射至布隆过滤器中;其中,布隆过滤器用于检索查询条件中的目标数据是否位于布隆过滤器中,以确定数据分区是否为有效分区。
在某些实施例中,该存储模块具体用于将数据分区存储至远端存储介质中;将数据分区对应的数据结构存储至本地磁盘或本地内存中。
在某些实施例中,该第二生成模块可以具体是根据数据分区中的目标列对应数据是否位于数据分区中的判定结果,生成存储判定结果的数据结构。
在某些实施例中,该第一生成模块可以具体用于针对数据库表中冷数据对应字段,生成数据分区。
图7所述的数据处理装置可以执行图1所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图7所示实施例的数据处理装置可以实现为一计算设备,该计算设备在实际应用中可以作为图6中所示的数据库服务器,如图8中所示,该计算设备可以包括存储组件801以及处理组件802;
存储组件801中存储有一条或多条计算机指令,其中,一条或多条计算机指令供处理组件802调用执行,以实现图1所示的数据处理方法。
其中,处理组件802可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件801被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,在实际应用中,该存储组件801例如可以为图6中所示的本地磁盘。
当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图7所示实施例的数据处理方法。
图9为本申请提供的一种数据处理装置又一个实施例的结构示意图,该装置可以包括:
请求处理模块901,用于接收查询请求,抽取查询条件;
分区确定模块902,用于确定请求查询的数据分区;
分区判定模块903,用于基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区;
其中,数据结构预先存储数据是否位于数据分区中的判定结果。
在某些实施例中,数据结构为二叉树结构;二叉树的节点表示对数据分区的最大数据和最小数据构成的数据范围划分获得的数据段;其中,若判定任一数据段中包含的全部数据均未处于数据分区中或者处于数据分区中,确定任一数据段对应节点为叶子节点,并在叶子节点存储判定结果;否则对任一数据段继续进行数据段划分;
则分区判定模块可以具体是确定查询条件中的目标数据;查询数据分区对应的二叉树结构,基于二叉树结构存储的判定结构,确定目标数据是否位于数据分区中,若是,确定数据分区为有效分区,若否,确定数据分区为无效分区。
在某些实施例中,数据结构可以为布隆过滤器,数据分区中的数据通过哈希函数映射至布隆过滤器中;
则分区判定模块可以具体是确定查询条件中的目标数据;将目标数据通过哈希函数映射至布隆过滤器中,确定目标数据是否位于布隆过滤器,若是,则确定数据分区为有效分区,否则为无效分区。
在某些实施例中,该分区判定模块可以具体是从本地内存或本地磁盘中查询是否存在数据分区对应的数据结构;若否,从远端存储介质中下载数据分区对应的数据结构至本地内存或本地磁盘中;基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区。
图9所述的数据处理装置可以执行图3所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图9所示实施例的数据处理装置可以实现为一计算设备,该计算设备在实际应用中可以作为图6中所示的数据库服务器,如图10中所示,该计算设备可以包括存储组件1001以及处理组件1002;
存储组件1001中存储有一条或多条计算机指令,其中,所述一条或多条计算机指令供处理组件1002调用执行,以实现图3所示的数据处理方法。
其中,处理组件1002可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件1001被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,在实际应用中,该存储组件901例如可以为图6中所示的本地磁盘。
当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图3所示实施例的数据处理方法。
图11为本申请提供的一种数据处理装置又一个实施例的结构示意图,该装置可以包括:
请求处理模块1101,用于接收查询请求,抽取查询条件;
分区确定模块1102,用于确定请求查询的数据分区;
分区判定模块1103,用于基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区;其中,数据结构预先存储数据是否位于数据分区中的判定结果;
数据查询模块1104,用于基于查询请求对有效分区进行数据查询。
其中,请求处理模块1101的具体实现可以详见图9中所示的请求处理模块901,分区确定模块1102的具体实现可以详见图9中所示的分区确定模块902,分区判定模块903的具体实现可以详见图9中所示的分区判定模块903。
在某些实施例中,数据结构为二叉树结构;二叉树的节点表示对数据分区的最大数据和最小数据构成的数据范围划分获得的数据段;其中,若判定任一数据段中包含的全部数据均未处于数据分区中或者处于数据分区中,确定任一数据段对应节点为叶子节点,并在叶子节点存储判定结果;否则对任一数据段继续进行数据段划分;
则分区判定模块可以具体是确定查询条件中的目标数据;查询数据分区对应的二叉树结构,基于二叉树结构存储的判定结构,确定目标数据是否位于数据分区中,若是,确定数据分区为有效分区,若否,确定数据分区为无效分区。
在某些实施例中,数据结构可以为布隆过滤器,数据分区中的数据通过哈希函数映射至布隆过滤器中;
则分区判定模块可以具体是确定查询条件中的目标数据;将目标数据通过哈希函数映射至布隆过滤器中,确定目标数据是否位于布隆过滤器,若是,则确定数据分区为有效分区,否则为无效分区。
在某些实施例中,该分区判定模块可以具体是从本地内存或本地磁盘中查询是否存在数据分区对应的数据结构;若否,从远端存储介质中下载数据分区对应的数据结构至本地内存或本地磁盘中;基于查询条件,查询数据分区对应数据结构确定数据分区是否为有效分区。
在某些实施例中,该数据查询模块可以具体用于如果数据分区为有效分区,确定本地内存或本地磁盘中是否存在数据分区;若本地内存存在数据分区,基于查询请求,对数据分区进行数据查询;若本地磁盘存在数据分区,将数据分区下载至本地内存进行保存,并基于查询请求,对数据分区进行数据查询;若本地内存或本地磁盘未保存数据分区,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存,并基于查询请求,对数据分区进行数据查询。
在某些实施例中,该数据查询模块若本地内存或本地磁盘未保存数据分区,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存可以包括:若本地内存或本地磁盘未保存数据分区,如果本地内存或本地磁盘存在空闲空间,从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存;如果本地内存或本地磁盘存储空间已满,删除本地内存或本地磁盘中最久未使用数据,并从远端存储介质中下载数据分区至本地磁盘及本地内存进行保存。
在某些实施例中,该数据查询模块可以具体用于对查询请求对应的执行计划进行分区裁剪以过滤无效分区,获得最小化执行计划;执行最小化执行计划,对有效分区进行数据查询。
在某些实施例中,该装置还可以包括:
结果输出模块,具体用于输出查询结果。
图11所述的数据处理装置可以执行图4所示实施例所述的数据处理方法,其实现原理和技术效果不再赘述。对于上述实施例中的数据处理装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
在一个可能的设计中,图11所示实施例的数据处理装置可以实现为一计算设备,该计算设备在实际应用中可以作为图6中所示的数据库服务器,如图12中所示,该计算设备可以包括存储组件1201以及处理组件1202;
存储组件1201中存储有一条或多条计算机指令,其中,所述一条或多条计算机指令供处理组件1202调用执行,以实现图4所示的数据处理方法。
其中,处理组件1202可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
存储组件1201被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘,在实际应用中,该存储组件1201例如可以为图6中所示的本地磁盘。
当然,计算设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算设备和其他设备之间有线或无线方式的通信等。
此外,本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被计算机执行时可以实现上述图4所示实施例的数据处理方法。
其中,如在本文所使用的“计算设备”可以是指远程web服务器、服务器、计算机联网设备、芯片组、台式计算机、笔记本式计算机、工作站,或任何其他处理设备或者装备。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (25)
1.一种数据处理方法,其特征在于,包括:
生成数据分区;
根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构;
存储所述数据分区及所述数据结构;其中,所述数据结构用于基于查询条件确定所述数据分区是否为有效分区;
所述根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构包括:
对所述数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树;
如果判定任一个数据段中包含的全部数据均未处于所述数据分区中或者均处于所述数据分区中,确定所述任一个数据段对应节点为叶子节点,并在所述叶子节点存储判定结果;否则对所述任一个数据段继续进行数据段划分;
生成所述二叉树对应的数据结构。
2.根据权利要求1所述的方法,其特征在于,所述对所述数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树包括:
对所述数据分区的最大数据和最小数据构成的数据范围,采用二分查找算法进行数据段划分,并构建表示数据段的节点以建立二分查找树。
3.根据权利要求1所述的方法,其特征在于,所述生成所述二叉树对应的数据结构包括:
利用最大数据和最小数据构成的数据范围表示所述二叉树的根节点;
对于所述二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点;
对于所述二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中。
4.根据权利要求3所述的方法,其特征在于,所述对于所述二叉树中的非叶子节点,利用两个不同字符表示其连接的两个孩子节点是否为叶子节点包括:
对于所述二叉树中的非叶子节点,利用字符0及字符1分别表示其连接的两个孩子节点是否为叶子节点;
所述对于所述二叉树中的叶子节点,利用两个不同字符表示其包含的全部数据是否位于数据分区中包括:
对于所述二叉树中的叶子节点,利用字符0及字符1分别表示其包含的全部数据是否位于数据分区中。
5.根据权利要求1所述的方法,其特征在于,所述根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构包括:
将所述数据分区中的数据通过哈希函数映射至布隆过滤器中;其中,所述布隆过滤器用于检索所述查询条件中的目标数据是否位于所述布隆过滤器中,以确定所述数据分区是否为有效分区。
6.根据权利要求1所述的方法,其特征在于,所述存储所述数据分区及所述数据结构包括:
将所述数据分区存储至远端存储介质中;
将所述数据分区对应的所述数据结构存储至本地磁盘或本地内存中。
7.根据权利要求6所述的方法,其特征在于,所述将所述数据分区对应的所述数据结构存储至本地磁盘或者本地内存中包括:
如果所述数据分区的访问频率高于预定频率,将所述数据分区对应的所述数据结构存储至本地磁盘或者本地内存中。
8.根据权利要求1所述的方法,其特征在于,所述根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构包括:
根据所述数据分区中的目标列对应数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构。
9.根据权利要求1所述的方法,其特征在于,所述生成数据分区包括:
针对数据库表中冷数据对应字段,生成数据分区。
10.一种数据处理方法,其特征在于,包括:
接收查询请求,抽取查询条件;
确定请求查询的数据分区;
基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区;
其中,所述数据结构预先存储数据是否位于所述数据分区中的判定结果;所述数据结构为二叉树结构;所述二叉树的节点表示对所述数据分区的最大数据和最小数据构成的数据范围划分获得的数据段;其中,若判定任一数据段中包含的全部数据均未处于所述数据分区中或者处于所述数据分区中,确定所述任一数据段对应节点为叶子节点,并在所述叶子节点存储判定结果;否则对所述任一数据段继续进行数据段划分。
11.根据权利要求10所述的方法,其特征在于,所述基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区包括:
确定查询条件中的目标数据;
查询所述数据分区对应的二叉树结构,基于所述二叉树结构存储的判定结构,确定所述目标数据是否位于所述数据分区中,若是,确定所述数据分区为有效分区,若否,确定所述数据分区为无效分区。
12.根据权利要求10所述的方法,其特征在于,所述数据结构为布隆过滤器,所述数据分区中的数据通过哈希函数映射至布隆过滤器中;
所述基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区包括:
确定查询条件中的目标数据;
将所述目标数据通过哈希函数映射至布隆过滤器中,确定所述目标数据是否位于所述布隆过滤器,若是,则确定所述数据分区为有效分区,否则为无效分区。
13.根据权利要求10所述的方法,其特征在于,所述基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区包括:
从本地内存或本地磁盘中查询是否存在所述数据分区对应的数据结构;
若否,从远端存储介质中下载所述数据分区对应的数据结构至所述本地内存或所述本地磁盘中;
基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区。
14.根据权利要求10所述的方法,其特征在于,还包括:
基于所述查询请求对有效分区进行数据查询。
15.根据权利要求14所述的方法,其特征在于,所述基于所述查询请求对有效分区进行数据查询包括:
如果所述数据分区为有效分区,确定本地内存或本地磁盘中是否存在所述数据分区;
若本地内存存在所述数据分区,基于所述查询请求,对所述数据分区进行数据查询;
若本地磁盘存在所述数据分区,将所述数据分区下载至本地内存进行保存,并基于所述查询请求,对所述数据分区进行数据查询;
若本地内存或本地磁盘未保存所述数据分区,从远端存储介质中下载所述数据分区至本地磁盘及本地内存进行保存,并基于所述查询请求,对所述数据分区进行数据查询。
16.根据权利要求15所述的方法,其特征在于,所述若本地内存或本地磁盘未保存所述数据分区,从远端存储介质中下载所述数据分区至本地磁盘及本地内存进行保存包括:
若本地内存或本地磁盘未保存所述数据分区,如果本地内存或本地磁盘存在空闲空间,从远端存储介质中下载所述数据分区至本地磁盘及本地内存进行保存;
如果本地内存或本地磁盘存储空间已满,删除本地内存或本地磁盘中最久未使用数据,并从远端存储介质中下载所述数据分区至本地磁盘及本地内存进行保存。
17.根据权利要求14所述的方法,其特征在于,所述基于所述查询请求对有效分区进行数据查询包括:
对所述查询请求对应的执行计划进行分区裁剪以过滤无效分区,获得最小化执行计划;
执行所述最小化执行计划,对有效分区进行数据查询。
18.根据权利要求14所述的方法,其特征在于,还包括:
输出所述查询结果。
19.一种数据处理装置,其特征在于,包括:
第一生成模块,用于生成数据分区;
第二生成模块,用于根据数据是否位于所述数据分区中的判定结果,生成存储所述判定结果的数据结构;
存储模块,用于存储所述数据分区及所述数据结构;其中,所述数据结构用于基于查询条件确定所述数据分区是否为有效分区;
其中,所述第二生成模块具体是:对所述数据分区的最大数据和最小数据构成的数据范围进行数据段划分,并构建表示数据段的节点以建立二叉树;如果判定任一个数据段中包含的全部数据均未处于所述数据分区中或者均处于所述数据分区中,确定所述任一个数据段对应节点为叶子节点,并在所述叶子节点存储判定结果;否则对所述任一个数据段继续进行数据段划分;生成所述二叉树对应的数据结构。
20.一种数据处理装置,其特征在于,包括:
请求处理模块,用于接收查询请求,抽取查询条件;
分区确定模块,用于确定请求查询的数据分区;
分区判定模块,用于基于所述查询条件,查询所述数据分区对应数据结构确定所述数据分区是否为有效分区;
其中,所述数据结构预先存储数据是否位于所述数据分区中的判定结果;所述数据结构为二叉树结构;所述二叉树的节点表示对所述数据分区的最大数据和最小数据构成的数据范围划分获得的数据段;其中,若判定任一数据段中包含的全部数据均未处于所述数据分区中或者处于所述数据分区中,确定所述任一数据段对应节点为叶子节点,并在所述叶子节点存储判定结果;否则对所述任一数据段继续进行数据段划分。
21.根据权利要求20所述的装置,其特征在于,还包括:数据查询模块,用于基于所述查询请求对有效分区进行数据查询。
22.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如权利要求1~9任一项所述的数据处理方法。
23.一种计算设备,其特征在于,包括处理组件以及存储组件;所述存储组件存储一个或多个计算机指令;所述一个或多个计算机指令用以被所述处理组件调用执行,实现如权利要求10~18任一项所述的数据处理方法。
24.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算机程序被计算机执行时实现如权利要求1~9任一项所述的数据处理方法。
25.一种计算机存储介质,其特征在于,存储有计算机程序,所述计算机程序被计算机执行时实现如权利要求10~18任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010653952.9A CN113297266B (zh) | 2020-07-08 | 2020-07-08 | 数据处理方法、装置、设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010653952.9A CN113297266B (zh) | 2020-07-08 | 2020-07-08 | 数据处理方法、装置、设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113297266A CN113297266A (zh) | 2021-08-24 |
CN113297266B true CN113297266B (zh) | 2022-08-12 |
Family
ID=77318340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010653952.9A Active CN113297266B (zh) | 2020-07-08 | 2020-07-08 | 数据处理方法、装置、设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113297266B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115454983B (zh) * | 2022-09-13 | 2023-07-14 | 浪潮卓数大数据产业发展有限公司 | 一种基于布隆过滤器的海量Hbase数据去重方法 |
CN116403684B (zh) * | 2023-06-08 | 2023-08-11 | 杭州医策科技有限公司 | 一种数字病理图像加载方法和装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529423A (zh) * | 2006-10-20 | 2009-09-09 | 微软公司 | 有范围查找 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192B (zh) * | 2007-11-16 | 2011-03-16 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
JP6107429B2 (ja) * | 2013-05-30 | 2017-04-05 | 富士通株式会社 | データベースシステム、検索方法およびプログラム |
CN105718455B (zh) * | 2014-12-01 | 2019-06-14 | 阿里巴巴集团控股有限公司 | 一种数据查询方法及装置 |
US11586627B2 (en) * | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
CN110019337A (zh) * | 2017-11-02 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 确定数据库中有效分区的方法、装置和系统 |
CN110263061A (zh) * | 2019-06-17 | 2019-09-20 | 郑州阿帕斯科技有限公司 | 一种数据查询方法及系统 |
-
2020
- 2020-07-08 CN CN202010653952.9A patent/CN113297266B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101529423A (zh) * | 2006-10-20 | 2009-09-09 | 微软公司 | 有范围查找 |
Also Published As
Publication number | Publication date |
---|---|
CN113297266A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108255958B (zh) | 数据查询方法、装置和存储介质 | |
US10585913B2 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
US10769126B1 (en) | Data entropy reduction across stream shard | |
CN106326475B (zh) | 一种高效的静态哈希表实现方法及系统 | |
US20130297613A1 (en) | Indexing based on key ranges | |
US20160103858A1 (en) | Data management system comprising a trie data structure, integrated circuits and methods therefor | |
CN111046034A (zh) | 管理内存数据及在内存中维护数据的方法和系统 | |
US9218394B2 (en) | Reading rows from memory prior to reading rows from secondary storage | |
US10275486B2 (en) | Multi-system segmented search processing | |
US10783142B2 (en) | Efficient data retrieval in staged use of in-memory cursor duration temporary tables | |
US20160328445A1 (en) | Data Query Method and Apparatus | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
US11294816B2 (en) | Evaluating SQL expressions on dictionary encoded vectors | |
CN111708805A (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN109815238A (zh) | 用严格平衡二叉树实现数据库的动态添加方法及装置 | |
Zhang et al. | Succinct range filters | |
CN111782659A (zh) | 数据库索引创建方法、装置、计算机设备和存储介质 | |
Theocharidis et al. | SRX: efficient management of spatial RDF data | |
US9760836B2 (en) | Data typing with probabilistic maps having imbalanced error costs | |
Wang et al. | Rencoder: A space-time efficient range filter with local encoder | |
CN111309704B (zh) | 数据库操作方法和数据库操作系统 | |
CN114398373A (zh) | 应用于数据库存储的文件数据存储读取方法及装置 | |
CN114595215A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN110659286B (zh) | 基于弱平衡空间树动态空间索引方法及其存储介质、装置 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |