掌桥专利:专业的专利平台
掌桥专利
首页

数据查询方法及装置

文献发布时间:2023-06-19 12:19:35


数据查询方法及装置

技术领域

本说明书涉及数据处理技术领域,特别涉及数据查询方法及装置。

背景技术

随着互联网技术的发展,越来越多的信息开始数据化,并且部分线上服务平台为了能够满足用户的回溯请求,会向用户提供日志存储服务,实现在用户回溯相关数据时,可以通过线上服务平台提供的日志存储服务,读取该用户相关的数据并反馈。现有技术中,线上服务平台使用的支持多租户的日志数据库,都是采用列存数据文件格式进行相关数据的存储,虽然可以实现相关数据的存储和检索,但是由于数据是采用列存数据文件格式进行存储的,无法提供索引结构和有效的检索方式,导致日志数据库不仅无法满足高写入流量,还存在着检索性能低的问题,因此亟需一种有效的方案以解决上述问题。

发明内容

有鉴于此,本说明书实施例提供了一种数据查询方法。本说明书同时涉及一种数据查询装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。

根据本说明书实施例的第一方面,提供了一种数据查询方法,包括:

获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

可选地,所述获取数据查询请求步骤执行之前,还包括:

提取所述第一数据库中存储时间大于预设时间阈值的待迁移数据,并确定所述待迁移数据对应的迁移分区键;

将所述待迁移数据压缩为压缩数据,并将所述压缩数据写入所述第二数据库中与所述迁移分区键对应的分区;

根据写入结果确定所述压缩数据对应的压缩属性信息和压缩索引信息,并建立所述迁移分区键和所述压缩属性信息与所述压缩索引信息的存储对应关系;

基于所述存储对应关系对所述第二数据库对应的所述存储关系表进行更新。

可选地,所述根据写入结果确定所述压缩数据对应的压缩索引信息,包括:

判断所述压缩数据是否符合预设的索引创建条件;

若是,根据写入结果创建所述压缩数据对应的压缩索引,并基于所述压缩索引确定所述压缩索引信息。

可选地,所述根据写入结果创建所述压缩数据对应的压缩索引,包括:

确定所述压缩数据的数据类型;

在所述数据类型为文本类型的情况下,根据写入结果创建所述压缩数据对应的倒排索引,作为所述压缩索引;

在所述数据类型为数值类型的情况下,根据写入结果创建所述压缩数据对应的树索引,作为所述压缩索引。

可选地,所述在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息步骤执行之前,还包括:

检测所述查询属性信息中是否包含时间信息;

若否,执行所述在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息步骤。

可选地,若所述检测所述查询属性信息中是否包含时间信息的判断结果为是,则执行如下步骤:

判断所述时间信息是否符合预设时间划分条件;

若是,在所述第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

将所述属性信息和所述查询属性信息进行匹配,根据匹配结果在所述数据块中读取所述数据查询请求对应的目标数据。

可选地,若所述判断所述时间信息是否符合预设时间划分条件的判断结果为否,则执行如下步骤:

根据所述分区键和所述查询属性信息读取所述第二数据库对应的所述存储关系表;

根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

可选地,所述在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表步骤执行之前,还包括:

对所述属性信息进行解析获得第一数值区间,以及对所述查询属性信息进行解析获得第二数值区间;

判断所述第一数值区间是否包含所述第二数值区间;

若是,基于所述查询属性信息在所述数据块中读取所述数据查询请求对应的目标数据;

若否,执行所述确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表步骤。

可选地,所述根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表,包括:

对所述分区键和所述查询属性信息进行哈希运算,获得查询哈希值;

在所述第二数据库对应的哈希表中确定所述查询哈希值对应的候选分区键和时间区间信息;

根据所述候选分区键和所述时间区间信息在所述第二数据库中确定第二目标分区,并读取所述第二目标分区包含的候选数据块的第二属性信息;

在所述第二属性信息与所述查询属性信息匹配的情况下,根据所述查询属性信息读取所述第二数据库对应的所述存储关系表。

可选地,所述根据读取结果确定索引信息,包括:

根据读取结果获得查询索引的情况下,将所述查询索引作为所述索引信息;

相应的,所述基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,包括:

基于所述查询索引在所述第二数据库中读取所述数据查询请求对应的目标数据。

根据本说明书实施例的第二方面,提供了一种数据查询装置,包括:

获取请求模块,被配置为获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

读取信息模块,被配置为在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

确定数据库模块,被配置为在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

读取数据模块,被配置为根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

根据本说明书实施例的第三方面,提供了一种计算设备,包括:

存储器和处理器;

所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:

获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据查询方法的步骤。

本说明书提供的数据查询方法,在获取到携带有分区键和查询属性信息的情况下,将在第一数据库中确定分区键对应的目标分区,并读取目标分区中包含的数据块的属性信息,在查询属性信息与属性信息未匹配的情况下,此时可以确定与第一数据库具有数据迁移关系的第二数据库,同时根据分区键和查询属性信息读取第二数据库对应的存储关系表,根据读取即可确定索引信息,最后基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,实现了通过第一数据库和第二数据库结合的方式解决写入流量大无法进行数据存储的问题,同时针对第一数据库和第二数据库采用不同的方式进行数据查询,有效的提高了数据查询效率,从而实现快速的针对数据查询请求进行响应。

附图说明

图1是本说明书一实施例提供的一种数据查询方法的流程图;

图2是本说明书一实施例提供的一种数据查询方法中冷数据格式的示意图;

图3是本说明书一实施例提供的一种应用于日志审计场景中的数据查询方法的处理流程图;

图4是本说明书一实施例提供的一种数据查询装置的结构示意图;

图5是本说明书一实施例提供的一种计算设备的结构框图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。

在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本说明书一个或多个实施例涉及的名词术语进行解释。

租户:是指使用业务服务方提供的日志存储服务(Log Storage)的用户,其中同一个Log Storage可以被多个租户使用。

热数据:指写入时间较短的实时数据,热数据的数据结构是写入优化型的。

冷数据:指写入时间较长且由热数据转换后得到的数据,冷数据的数据结构是读取优化型的。

在本说明书中,提供了一种数据查询方法,本说明书同时涉及一种数据查询装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。

实际应用中,为提高Hadoop Hive的计算性能和存储效率,通常会采用ORC列存数据格式的方式进行数据存储,该格式下通常包括Postscript、File Footer、Stripe条带数据块以及列统计,实现对数据进行存储,虽然可以达到文件级别的检索和过滤,但是由于ORC列存数据格式的特性,无法提供实时数据的写入优化的数据结构,并且在日志存储服务的审计日志场景中,ORC本身并不会提供满足快速检索数据的索引结构和检索方式,导致该方法无法应用到审议日志场景中,因此亟需一种有效的方案以解决上述问题。

本说明书提供的数据查询方法,在获取到携带有分区键和查询属性信息的情况下,将在第一数据库中确定分区键对应的目标分区,并读取目标分区中包含的数据块的属性信息,在查询属性信息与属性信息未匹配的情况下,此时可以确定与第一数据库具有数据迁移关系的第二数据库,同时根据分区键和查询属性信息读取第二数据库对应的存储关系表,根据读取即可确定索引信息,最后基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,实现了通过第一数据库和第二数据库结合的方式解决写入流量大无法进行数据存储的问题,同时针对第一数据库和第二数据库采用不同的方式进行数据查询,有效的提高了数据查询效率,从而实现快速的针对数据查询请求进行响应。

图1示出了根据本说明书一实施例提供的一种数据查询方法的流程图,具体包括以下步骤:

步骤S102,获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息。

实际应用中,由于线上服务的特性,因此大多数线上服务都会建立记录日志,用于记录业务相关的数据和相应的业务处理过程,而随着日志数据的不断增多,服务方自己很难对大量的日志数据进行存储,因此为了能够保证服务方可以留存大量的日志数据,日志存储服务方向租户提供了日志数据存储服务,通过建立专属数据库为租户存储日志数据的方式,保证服务方可以随时对日志数据进行回溯,满足对日志数据的审计。

基于此,所述数据查询请求具体是指在审计日志场景中进行日志的相关数据进行查询的请求,由租户向日志存储服务方提交;相应的,所述分区键具体是指租户对应的ID,用于在数据库中确定对应于租户的分区,需要说明的是,为了能够提高日志数据库的利用率,同一日志数据库可以同时向多个租户提供日志数据存储服务,并且每个租户对应一个分区,每个分区的键即为租户的ID,租户的ID具有唯一性;相应的,所述查询属性信息具体是指数据本身所具有的属性,包括但不限于数据的最值,行数,占用空间,类型,存储时间,生成时间等。

进一步的,在接收到所述数据查询请求的情况下,说明租户需要对历史日志数据进行查询,而在此之前,为了能够提高查询性能,可以针对不同时间段的数据采用不同的方式进行存储,从而保证日志存储服务方可以快速的针对不同租户的不同查询请求进行响应,本实施例中,具体实现方式如下所述:

提取所述第一数据库中存储时间大于预设时间阈值的待迁移数据,并确定所述待迁移数据对应的迁移分区键;

将所述待迁移数据压缩为压缩数据,并将所述压缩数据写入所述第二数据库中与所述迁移分区键对应的分区;

根据写入结果确定所述压缩数据对应的压缩属性信息和压缩索引信息,并建立所述迁移分区键和所述压缩属性信息与所述压缩索引信息的存储对应关系;

基于所述存储对应关系对所述第二数据库对应的所述存储关系表进行更新。

具体的,所述预设时间阈值是指判断数据迁移的条件,在第一数据库中存储时间超过所述时间阈值,即可确定该数据需要由热数据转换为冷数据,在第一数据库中存储时间未超过所述时间阈值,即可确定该数据的当前状态是热数据,相应的,所述第一数据库具体是指存储写入时间未超过预设时间阈值的热数据,所述第二数据库具体是指存储写入时间超过预设时间阈值的冷数据,并且冷数据是由超过预设时间阈值的热数据经过转换得到的。

需要说明的是,由于第一数据库和第二数据库都是为了存储日志数据的日志数据库,并且第一数据库是存储热数据的数据库,第二数据库是存储冷数据的数据库,而冷数据是由热数据转换后得到,因此在第二数据库和第一数据库中包含与同一分区键对应的分区,也就是说,同一分区键可以在第一数据库中确定分区,也可以在第二数据库中确定分区。

此外,由于第一数据库存储的数据是热数据,而热数据转换到冷数据需要消耗较多的计算资源,因此当接收到数据之后,会将其先写入到所述第一数据库,当在第一数据库中存储时间超过预设时间阈值的情况下,才会将第一数据库中的热数据转换为冷数据存储到第二数据库;进一步的,为了提高查询性能,第二数据库中存储数据的格式可以由元信息、索引和数据三部分组成,参见图2所示,元信息包括表的元信息,列的列表和索引列表等信息,索引包括索引元信息和索引数据等,并且为了能够提高查询性能,针对文本类数据可以建立倒排索引,针对数值类型建立kd树索引,数据包括数据的统计信息(最值、行数)和压缩后的原始数据等。

其中,所述第一数据库和所述第二数据库中均包含与分区键对应的分区,所述压缩数据具体是指对待迁移数据经过压缩处理后得到的数据,所述压缩数据的占用空间要小于待迁移数据的占用空间;所述压缩属性信息具体是指待迁移数据的最值和行数等,所述压缩索引信息具体是指是否具有索引的信息。

基于此,每隔设定时间会对第一数据库中的数据存储时间进行检测,当检测到有需要进行迁移的数据的情况下,将在所述第一数据库中提取存储时间大于预设时间阈值的所述待迁移数据,同时确定所述待迁移数据对应的迁移分区键,所述迁移分区键具体是指存储所述待迁移数据的分区对应的键;之后为了能够提高后续的查询性能,可以将所述待迁移数据进行压缩获得压缩数据,同时将所述压缩数据写入所述第二数据库中与所述迁移分区键对应分区;当写入完成后,为了方便后续进行数据的查询,可以确定压缩数据的压缩属性信息和压缩索引信息,之后建立迁移分区键和所述压缩属性信息与所述压缩索引信息的存储对应关系,最后基于该存储对应关系对第二数据库对应的存储关系表进行更新即可;其中,第二数据库的存储关系表记录分区键、数据属性信息和索引信息的对应关系,再进行检索数据时,即可通过读表确定需要读取数据的信息。

更进一步的,当压缩数据写入第二数据库完成之后,可以根据写入结果针对所述压缩数据创建索引,而在创建索引的过程中,由于索引相关的数据也需要占用存储空间,因此考虑到空间利用率,不同的压缩数据可以根据需求选择是否创建索引,本实施例中,具体实现方式如下所述:

判断所述压缩数据是否符合预设的索引创建条件;

若是,确定所述压缩数据的数据类型;在所述数据类型为文本类型的情况下,根据写入结果创建所述压缩数据对应的倒排索引,作为所述压缩索引;在所述数据类型为数值类型的情况下,根据写入结果创建所述压缩数据对应的树索引,作为所述压缩索引,并基于所述压缩索引确定所述压缩索引信息。

若否,将不存在索引的信息作为所述压缩索引信息。

具体的,所述索引创建条件具体是指判断是否需要针对索引数据创建索引的条件,所述索引创建条件可以是判断压缩数据的占用空间是否大于预设占用阈值,还可以是判断压缩数据的长度是否大于预设长度阈值;相应的,由于不同的类型的数据的结构不同,因此在满足所述索引创建条件的情况下,将针对不同类型的数据采用不同的方式进行索引的创建。

基于此,由于索引对应的数据也需要占用一定的空间,因此在决定是否创建所述索引时,可以判断创建出的索引是否大于压缩数据的占用空间,若大于,则不需要创建,若不大于,则需要创建;进一步的,在将所述压缩数据写入所述第二数据库之后,将判断所述压缩数据是否符合预设的索引创建条件,若是,可以确定所述压缩数据的数据类型,在所述数据类型为文本类型的情况下,可以根据写入结果创建所述压缩数据对应的倒排索引,将所述倒排索引作为所述压缩索引;在所述数据类型为数值类型的情况下,可以根据写入结果创建所述压缩数据对应的树索引,作为所述压缩索引;最后基于所述压缩索引即可确定所述压缩索引信息。

例如,租户1在某一时刻产生的日志数据在热数据库中存储时间大于1小时,确定需要将这部分日志数据转换为冷数据存储到冷数据库;基于此,确定待迁移的日志数据对应的迁移分区键为cid_1,并在冷数据中确定了迁移分区键cid_1对应的分区,此时采用预设的压缩算法对待迁移的日志数据进行压缩,获得压缩日志数据,之后将压缩日志数据写入迁移分区键cid_1对应的分区;当写入完成后,为了后续进行日志的审计,确定压缩日志数据的压缩属性信息为{最大值L

其中,倒排索引被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。

综上,通过将写入优化型数据结构(热数据)定期转换为读取优化型数据结构(冷数据)的方式,有效的提高了对第二数据库中的数据进行查询的效率,从而实现可以快速的针对不同租户的查询请求进行响应,提高租户的使用体验。

步骤S104,在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息。

具体的,在上述获取到数据查询请求的基础上,进一步的,将根据所述数据查询请求中携带的分区键在所述第一数据库中确定目标分区,所述目标分区具体是指存储某一租户日志数据的分区,在确定所述目标分区之后,为了能够针对数据查询请求进行反馈,此时可以读取所述目标分区包含的数据块的数据信息,所述数据块具体是指由部分日志数据组成的数据块,所述数据块的属性信息具体是指数据块中存储的数据对应的最值,行数,占用空间,类型,存储时间,生成时间等,以用于后续的查询处理操作。

进一步的,由于不同的数据查询请求提供的查询条件不同,如果接收到的数据查询请求包含的信息较多,则可以根据数据查询请求精准的确定存储需要查询数据的数据库,并进行查询即可,如果接收到的数据查询请求包含的信息较少,则可能无法根据数据查询请求中包含的信息精准的确定数据库,可以按照步骤S102至步骤S108的方式进行查询,本实施例中,如何根据数据查询请求选择正确的查询方式,具体实现方式如下所述:

检测所述查询属性信息中是否包含时间信息;

若否,执行所述在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息步骤。

若是,再次判断所述时间信息是否符合预设时间划分条件;

若符合,在所述第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;将所述属性信息和所述查询属性信息进行匹配,根据匹配结果在所述数据块中读取所述数据查询请求对应的目标数据。

若未符合,根据所述分区键和所述查询属性信息读取所述第二数据库对应的所述存储关系表;根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

具体的,所述时间信息具体是指所述查询属性信息中包含的时间相关的信息,通过所述时间信息可以确定需要查询的数据对应的时间节点;相应的,所述预设时间划分条件具体是指判断需要查询的数据存储于第一数据库或第二数据库的条件。

基于此,在获得所述数据查询请求之后,此时可以检测所述查询属性信息中是否包含时间信息,若未包含,说明无法根据所述数据查询请求精准的确定需要查询的数据库,则可以执行步骤S104;若包含,说明可以通过所述查询属性信息中包含的时间信息初步的确定存储需要查询的数据对应的数据库。

当确定所述查询属性信息包含所述时间信息得情况下,此时可以判断所述查询属性信息中包含的时间信息是否符合预设时间划分条件,若符合,说明可以在所述第一数据库中查询到所述数据查询请求对应的目标数据,则此时可以根据所述数据查询请求中包含的分区键在所述第一数据库中确定目标分区,之后读取所述目标分区包含的数据块的属性信息,同时将所述属性信息和所述查询属性信息进行匹配,根据匹配结果即可确定存储满足数据查询请求的目标数据块,最后从所述目标数据块中读取所述目标数据并针对所述数据查询请求进行反馈即可。

若未符合,说明可以在所述第二数据库中查询到所述数据查询请求对应的目标数据,并且由于第二数据库是存储冷数据的数据库,因此此时可以根据所述分区键和所述查询属性信息读取所述第二数据库对应的所述存储关系表,根据读取结果即可确定所述数据查询请求对应的索引信息,最后基于所述索引信息在所述第二数据库中即可读取到符合所述数据查询请求对应的目标数据,并将所述目标数据作为所述数据查询请求对应的响应进行反馈即可。

沿用上例,当需要租户1的日志数据进行审计的情况下,此时将提交数据查询请求,通过对数据查询请求中包含的查询属性信息进行解析,确定查询属性信息中包含时间信息是T1,此时可以通过分析时间信息确定需要审计的日志数据存储于那个数据库;基于此,此时将判断查询属性信息中包含的时间信息T1是否符合预设的时间划分条件;

若符合,说明需要审计的日志数据存储于热数据库,则此时可以根据数据查询请求中包含的分区键cid_1在热数据库中确定目标分区,之后读取目标分区包含的数据块的属性信息,确定属性信息为(最大值10,最小值0,行数N1,时间T2),而查询属性信息为(最大值5,最少值0,行数N2,时间T1),通过将数据查询请求中查询属性信息与数据块的数据信息进行比对,确定数据块中存在与数据查询请求对应的数据,则此时可以根据查询属性信息在数据块中提取符合查询属性信息的目标日志数据,并针对数据查询请求进行反馈,以用于进行后续的审计处理。

若未符合,说明需要审计的日志数据存储于冷数据库,则此时可以根据分区键cid_1和查询属性信息(最大值5,最少值0,行数N2,时间T1)读取冷数据库对应的存储关系表,根据读取结果确定读取目标日志数据的索引,之后通过加载和检索索引的方式获取符合数据查询请求的目标日志数据即可,并针对数据查询请求进行反馈,以用于进行后续的审计处理。

综上,在进行数据查询前,为了能够提高查询效率,可以通过时间信息精准的区分需要采用的查询方式,以实现可以快速的针对所述数据查询请求反馈目标数据,提高日志审计场景下的查询性能,提高日志审计效率。

步骤S106,在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表。

具体的,在上述确定所述数据块的属性信息的基础上,进一步的,此时可以将所述查询属性信息与所述属性信息进行匹配,如果所述查询属性信息和所述属性信息匹配,则说明在所述第一数据库中存在与所述数据查询请求对应的目标数据,可以在所述第一数据库中查询所述数据查询请求对应的目标数据,即通过对记录cid(分区键)和row_count(行数)的PartitionId Map进行过滤,得到分区键对应的目标分区,之后对于数据查询请求中除分区键之外的column(列),会先根据hot block statistics(包含min、max值)进行初步过滤,若无法完全过滤,说明在该数据块中可以查询到符合所述数据查询请求的目标数据,则可以通过扫描数据块进行深层次的过滤,从而得到所述数据查询请求对应的目标数据。如果所述查询属性信息和所述属性信息未匹配,则说明在所述第一数据库中未存在与所述数据查询请求对应的数据,此时可以确定与所述第一数据库具有数据迁移关系的第二数据库,继续进行目标数据的查询处理。

需要说明的是,所述数据迁移关系具体是指所述第一数据库中的数据会在满足条件的情况下转换到第二数据库中,具体实现方式可以参见上述实施例中相应的描述内容,本实施例在此不作任何限定。

基于此,在确定所述第二数据库之后,由于所述第二数据库是存储冷数据的数据库,因此在查询时需要读取所述第二数据库对应的存储关系表,以确定存储满足所述数据查询请求对应的数据块压缩后的数据,以及相应的索引信息,以通过所述索引直接读取压缩后的数据,并对其进行解压以获得满足所述数据查询请求对应的目标数据。

进一步的,在确定所述查询属性信息和所述属性信息是否匹配的过程中,为了能够提高匹配精准度,以实现快速的针对所述数据查询请求进行目标数据的反馈,可以根据数据的取值进行确定,本实施例中,具体实现方式如下所述:

对所述属性信息进行解析获得第一数值区间,以及对所述查询属性信息进行解析获得第二数值区间;

判断所述第一数值区间是否包含所述第二数值区间;

若是,基于所述查询属性信息在所述数据块中读取所述数据查询请求对应的目标数据;

若否,执行步骤S106。

具体的,所述第一数值区间具体是指数据块中数据取值的最大值和最小值组成的区间,所述第二数值区间具体是指需要查询的数据对应的最大值和最小值;基于此,通过对所述属性信息进行解析获得第一数值区间,以及对所述查询属性信息进行解析获得第二数值区间;之后判断所述第一数值区间中是否包含所述第二数值区间,若未包含,则确定所述属性信息和所述查询属性信息未匹配,此时可以继续执行步骤S106,以在第二数据库中确定所述数据查询请求对应的目标数据;若包含,则确定所述属性信息和所述查询属性信息匹配,此时可以基于所述查询属性信息在所述数据块中读取所述数据查询请求对应的目标数据,即在所述第一数据库中获得与所述查询属性信息相同的数据作为所述目标数据。

综上,通过查询所述数据查询请求对应的目标数据的过程中,采用将第一数值区间和第二数值区间比对的方式,可以精准的确定第一数据库中是否存在所述数据查询请求对应的目标数据,从而节省遍历数据库中包含的全部数据的方式,以节省查询时间。

更进一步的,在根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表的过程中,由于第二数据库属于冷数据库,因此第二数据库具有相比于第一数据库的较高的查询效率,而为了能够更进一步的提高在第二数据库中查询数据的效率,以及减少除数据本身之外的其他数据的占用空间,可以采用hash表的方式记录相应的信息,本实施例中,具体实现方式如下所述:

对所述分区键和所述查询属性信息进行哈希运算,获得查询哈希值;

在所述第二数据库对应的哈希表中确定所述查询哈希值对应的候选分区键和时间区间信息;

根据所述候选分区键和所述时间区间信息在所述第二数据库中确定第二目标分区,并读取所述第二目标分区包含的候选数据块的第二属性信息;

在所述第二属性信息与所述查询属性信息匹配的情况下,根据所述查询属性信息读取所述第二数据库对应的所述存储关系表。

具体的,在确定所述目标数据存在于所述第二数据库的情况下,可以对所述分区键和所述查询属性信息进行哈希运算,获得查询哈希值,之后在第二数据库对应的哈希表中确定所述查询哈希值对应的候选分区键和时间区间信息;之后根据所述候选分区键和所述时间区间信息在所述第二数据库中确定存储目标数据的第二目标分区,而由于所述第二目标分区中包含大量的数据块,因此可以根据所述查询属性信息和所述时间区间信息在所述第二目标分区中确定候选数据块,此时确定数据存储于所述候选数据块中,之后读取所述候选数据块的第二属性信息,将所述第二属性信息与所述查询属性信息进行匹配,在所述第二属性信息与所述查询属性信息匹配的情况下,说明所述第二数据库中存在与所述数据查询请求对应的目标数据,则可以进一步的根据所述查询属性信息读取所述第二数据库对应的存储关系表,以确定存储目标数据的相关信息,用于后续的查询处理操作。

实际应用中,在第二数据库中进行数据查询的过程中,可以在查询时根据logblock map中存储的cid和信息,过滤得到需要查询的一个或多个数据块,之后由于每个数据块会存储每个column的statistics(最大值、最小值、空值集合等),对于查询条件中除分区键之外的column,可以根据数据查询请求中的查询属性信息进行进一步的过滤,从而确定是否可以在所述第二数据库中查询到所述数据查询请求对应的目标数据,若存在说明属性信息匹配成功,则进行后续的查询处理即可。

综上,第二数据库中的相关信息通过采用哈希表的方式进行记录,不仅可以降低相关信息的占用空间,还能够避免信息被篡改,从而提高了在所述第二数据库中进行数据查询的效率。

步骤S108,根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

具体的,在上述根据所述分区键和所述查询属性信息查询所述第二数据库对应的存储关系表后,根据读取结果即可确定所述索引信息,所述索引信息可以是包含索引或未包含索引的信息,在确定所述索引信息之后,即可根据所述索引信息在所述第二数据库中读取所述数据查询请求对应的所述目标数据。

进一步的,在根据所述索引信息查询所述目标数据的过程中,由于索引信息存在两种情况,因此不同的方式将采用不同的方式进行目标数据的查询,本实施例中,具体实现方式如下所述:

根据读取结果获得查询索引的情况下,将所述查询索引作为所述索引信息;基于所述查询索引在所述第二数据库中读取所述数据查询请求对应的目标数据。

根据查询结果未获得查询索引的情况下,可以在第二数据库中选择与查询属性信息匹配的数据块,之后从数据块中选择与数据查询请求对应的目标数据进行反馈即可。

本说明书提供的数据查询方法,在获取到携带有分区键和查询属性信息的情况下,将在第一数据库中确定分区键对应的目标分区,并读取目标分区中包含的数据块的属性信息,在查询属性信息与属性信息未匹配的情况下,此时可以确定与第一数据库具有数据迁移关系的第二数据库,同时根据分区键和查询属性信息读取第二数据库对应的存储关系表,根据读取即可确定索引信息,最后基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,实现了通过第一数据库和第二数据库结合的方式解决写入流量大无法进行数据存储的问题,同时针对第一数据库和第二数据库采用不同的方式进行数据查询,有效的提高了数据查询效率,从而实现快速的针对数据查询请求进行响应。

下述结合附图3,以本说明书提供的数据查询方法在日志审计场景中的应用为例,对所述数据查询方法进行进一步说明。其中,图3示出了本说明书一实施例提供的一种应用于日志审计场景中的数据查询方法的处理流程图,具体包括以下步骤:

步骤S302,提取第一数据库中存储时间大于预设时间阈值的待迁移数据,并确定待迁移数据对应的迁移分区键。

步骤S304,将待迁移数据压缩为压缩数据,并将压缩数据写入第二数据库中与迁移分区键对应的分区。

步骤S306,根据写入结果确定压缩数据对应的压缩属性信息和压缩索引信息,并建立迁移分区键和压缩属性信息与压缩索引信息的存储对应关系。

步骤S308,基于存储对应关系对第二数据库对应的存储关系表进行更新。

步骤S310,获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息。

步骤S312,在第一数据库中确定分区键对应的目标分区,并读取目标分区包含的数据块的属性信息。

步骤S314,在查询属性信息与属性信息未匹配的情况下,确定与第一数据库具有数据迁移关系的第二数据库。

步骤S316,对分区键和查询属性信息进行哈希运算,获得查询哈希值。

步骤S318,在第二数据库对应的哈希表中确定查询哈希值对应的候选分区键和时间区间信息。

步骤S320,根据候选分区键和时间区间信息在第二数据库中确定第二目标分区,并读取第二目标分区包含的候选数据块的第二属性信息。

步骤S322,在第二属性信息与查询属性信息匹配的情况下,根据查询属性信息读取第二数据库对应的所述存储关系表。

步骤S324,根据读取结果确定索引信息,并基于索引信息在第二数据库中读取数据查询请求对应的目标数据。

本说明书提供的数据查询方法,在获取到携带有分区键和查询属性信息的情况下,将在第一数据库中确定分区键对应的目标分区,并读取目标分区中包含的数据块的属性信息,在查询属性信息与属性信息未匹配的情况下,此时可以确定与第一数据库具有数据迁移关系的第二数据库,同时根据分区键和查询属性信息读取第二数据库对应的存储关系表,根据读取即可确定索引信息,最后基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,实现了通过第一数据库和第二数据库结合的方式解决写入流量大无法进行数据存储的问题,同时针对第一数据库和第二数据库采用不同的方式进行数据查询,有效的提高了数据查询效率,从而实现快速的针对数据查询请求进行响应。

与上述方法实施例相对应,本说明书还提供了数据查询装置实施例,图4示出了本说明书一实施例提供的一种数据查询装置的结构示意图。如图4所示,该装置包括:

获取请求模块402,被配置为获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

读取信息模块404,被配置为在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

确定数据库模块406,被配置为在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

读取数据模块408,被配置为根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

一个可选的实施例中,所述数据查询装置,还包括:

迁移模块,被配置为提取所述第一数据库中存储时间大于预设时间阈值的待迁移数据,并确定所述待迁移数据对应的迁移分区键;将所述待迁移数据压缩为压缩数据,并将所述压缩数据写入所述第二数据库中与所述迁移分区键对应的分区;根据写入结果确定所述压缩数据对应的压缩属性信息和压缩索引信息,并建立所述迁移分区键和所述压缩属性信息与所述压缩索引信息的存储对应关系;基于所述存储对应关系对所述第二数据库对应的所述存储关系表进行更新。

一个可选的实施例中,所述迁移模块进一步被配置为:

判断所述压缩数据是否符合预设的索引创建条件;若是,根据写入结果创建所述压缩数据对应的压缩索引,并基于所述压缩索引确定所述压缩索引信息。

一个可选的实施例中,所述迁移模块进一步被配置为:

确定所述压缩数据的数据类型;在所述数据类型为文本类型的情况下,根据写入结果创建所述压缩数据对应的倒排索引,作为所述压缩索引;在所述数据类型为数值类型的情况下,根据写入结果创建所述压缩数据对应的树索引,作为所述压缩索引。

一个可选的实施例中,所述数据查询装置,还包括:

检测模块,被配置为检测所述查询属性信息中是否包含时间信息;若否,运行读取信息模块404。

一个可选的实施例中,若所述检测的判断结果为是,则运行如下模块:

第一判断模块,被配置为判断所述时间信息是否符合预设时间划分条件;若是,在所述第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;将所述属性信息和所述查询属性信息进行匹配,根据匹配结果在所述数据块中读取所述数据查询请求对应的目标数据。

一个可选的实施例中,所述第一判断模块进一步被配置为:

根据所述分区键和所述查询属性信息读取所述第二数据库对应的所述存储关系表;根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

一个可选的实施例中,所述数据查询装置,还包括:

解析模块,被配置为对所述属性信息进行解析获得第一数值区间,以及对所述查询属性信息进行解析获得第二数值区间;

第二判断模块,被配置为判断所述第一数值区间是否包含所述第二数值区间;若是,基于所述查询属性信息在所述数据块中读取所述数据查询请求对应的目标数据;

若否,运行所述确定数据库模块406

一个可选的实施例中,所述确定数据库模块406进一步被配置为:

对所述分区键和所述查询属性信息进行哈希运算,获得查询哈希值;在所述第二数据库对应的哈希表中确定所述查询哈希值对应的候选分区键和时间区间信息;根据所述候选分区键和所述时间区间信息在所述第二数据库中确定第二目标分区,并读取所述第二目标分区包含的候选数据块的第二属性信息;在所述第二属性信息与所述查询属性信息匹配的情况下,根据所述查询属性信息读取所述第二数据库对应的所述存储关系表。

一个可选的实施例中,所述读取数据模块408进一步被配置为:

根据读取结果获得查询索引的情况下,将所述查询索引作为所述索引信息;基于所述查询索引在所述第二数据库中读取所述数据查询请求对应的目标数据。

本实施例提供的数据查询装置,在获取到携带有分区键和查询属性信息的情况下,将在第一数据库中确定分区键对应的目标分区,并读取目标分区中包含的数据块的属性信息,在查询属性信息与属性信息未匹配的情况下,此时可以确定与第一数据库具有数据迁移关系的第二数据库,同时根据分区键和查询属性信息读取第二数据库对应的存储关系表,根据读取即可确定索引信息,最后基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据,实现了通过第一数据库和第二数据库结合的方式解决写入流量大无法进行数据存储的问题,同时针对第一数据库和第二数据库采用不同的方式进行数据查询,有效的提高了数据查询效率,从而实现快速的针对数据查询请求进行响应。

上述为本实施例的一种数据查询装置的示意性方案。需要说明的是,该数据查询装置的技术方案与上述的数据查询方法的技术方案属于同一构思,数据查询装置的技术方案未详细描述的细节内容,均可以参见上述数据查询方法的技术方案的描述。

图5示出了根据本说明书一实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。

计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。

在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备500还可以是移动式或静止式的服务器。

其中,处理器520用于执行如下计算机可执行指令:

获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据查询方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据查询方法的技术方案的描述。

本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:

获取数据查询请求,所述数据查询请求中携带有分区键和查询属性信息;

在第一数据库中确定所述分区键对应的目标分区,并读取所述目标分区包含的数据块的属性信息;

在所述查询属性信息与所述属性信息未匹配的情况下,确定与所述第一数据库具有数据迁移关系的第二数据库,根据所述分区键和所述查询属性信息读取所述第二数据库对应的存储关系表;

根据读取结果确定索引信息,并基于所述索引信息在所述第二数据库中读取所述数据查询请求对应的目标数据。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据查询方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据查询方法的技术方案的描述。

上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

相关技术
  • 硬件数据库查询方法、数据库系统查询方法及装置
  • 数据库数据分片存储方法和装置、数据查询方法和装置
技术分类

06120113255730