一种数据查询方法及装置与流程

文档序号:20768387发布日期:2020-05-15 19:18阅读:146来源:国知局
一种数据查询方法及装置与流程

本发明涉及计算机技术领域,更具体的,涉及一种数据查询方法及装置。



背景技术:

随着大数据技术的发展,大数据平台存储的数据量越来越大、应用越来越广泛。在一些数据应用场景中,需要大数据平台既能够存储海量的结构化数据,又能快速返回对数据的查询结果。

目前业内一般采用hadoop或mpp数据库进行计算和存储,在进行数据汇总后,将计算结果分发到关系数据库,由关系数据库支撑数据查询。但是,基于关系型数据库的存储和访问方式,在海量数据写入和查询的场景下,存在性能瓶颈,在极端情况下甚至会引发锁表等故障。



技术实现要素:

有鉴于此,本发明提供了一种数据查询方法及装置,满足大数据平台的海量数据存储和快速查询需求。

为了实现上述发明目的,本发明提供的具体技术方案如下:

一种数据查询方法,应用于大数据平台中的处理器,所述大数据平台部署有nosql数据库和sqlite数据库,其中,存储有指标数据的sqlite数据文件以对象的形式存储在所述nosql数据库中,所述方法包括:

在接收到数据查询请求的情况下,对所述数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型;

根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个sqlite数据文件;

将所述至少一个sqlite数据文件加载到所述sqlite数据库的sql引擎的数据缓存区;

根据所述查询类型,利用所述sql引擎对所述至少一个sqlite数据文件进行sql查询,得到目标数据。

可选的,所述存储有指标数据的sqlite数据文件以对象的形式存储在所述nosql数据库中,包括:

确定存储有指标数据的sqlite数据文件的指标和统计周期;

根据所述sqlite数据文件的指标和统计周期,生成所述sqlite数据文件的索引;

根据所述sqlite数据文件的索引,将所述sqlite数据文件以对象的形式存储在所述nosql数据库中。

可选的,所述存储有指标数据的sqlite数据文件是通过按照预设指标、预设统计周期和预设属性,对待处理原始数据进行处理,得到所述预设指标在所述预设统计周期的结构化数据表,并将所述结构化数据表转换为sqlite数据文件得到的。

可选的,所述对所述数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型,包括:

对所述数据查询请求进行解析,得到目标指标、目标统计周期和所述查询类型;

依据所述目标指标和所述目标统计周期,确定需要访问的至少一个sqlite数据文件的索引。

可选的,所述对所述数据查询请求进行解析,得到目标指标、目标统计周期和所述查询类型,包括:

接收所述数据查询请求通过调用目标数据访问接口传入的查询参数,所述目标数据访问接口与所述目标指标相对应;

对所述查询参数进行解析,得到所述目标指标、所述目标统计周期和所述查询类型。

可选的,所述根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个sqlite数据文件,包括:

判断所述sql引擎的数据缓存区中是否存在所述至少一个sqlite数据文件;

若不存在,根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个数据文件。

一种数据查询装置,设置于大数据平台中的处理器,所述大数据平台部署有nosql数据库和sqlite数据库,其中,存储有指标数据的sqlite数据文件以对象的形式存储在所述nosql数据库中,装置方法包括:

查询请求解析单元,用于在接收到数据查询请求的情况下,对所述数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型;

数据文件提取单元,用于根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个sqlite数据文件;

数据文件加载单元,用于将所述至少一个sqlite数据文件加载到所述sqlite数据库的sql引擎的数据缓存区;

sql查询单元,用于根据所述查询类型,利用所述sql引擎对所述至少一个sqlite数据文件进行sql查询,得到目标数据。

可选的,所述装置还包括数据文件存储单元,所述数据文件存储单元,具体用于:

确定存储有指标数据的sqlite数据文件的指标和统计周期;

根据所述sqlite数据文件的指标和统计周期,生成所述sqlite数据文件的索引;

根据所述sqlite数据文件的索引,将所述sqlite数据文件以对象的形式存储在所述nosql数据库中。

可选的,所述存储有指标数据的sqlite数据文件是通过按照预设指标、预设统计周期和预设属性,对待处理原始数据进行处理,得到所述预设指标在所述预设统计周期的结构化数据表,并将所述结构化数据表转换为sqlite数据文件得到的。

可选的,所述查询请求解析单元,具体用于:

对所述数据查询请求进行解析,得到目标指标、目标统计周期和所述查询类型;

依据所述目标指标和所述目标统计周期,确定需要访问的至少一个sqlite数据文件的索引。

可选的,所述查询请求解析单元,具体用于:

接收所述数据查询请求通过调用目标数据访问接口传入的查询参数,所述目标数据访问接口与所述目标指标相对应;

对所述查询参数进行解析,得到所述目标指标、所述目标统计周期和所述查询类型;

依据所述目标指标和所述目标统计周期,确定需要访问的至少一个sqlite数据文件的索引。

可选的,所述数据文件提取单元,具体用于:

判断所述sql引擎的数据缓存区中是否存在所述至少一个sqlite数据文件;

若不存在,根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个数据文件。

相对于现有技术,本发明的有益效果如下:

本发明公开的一种数据查询方法,需要访问的存储有指标数据的sqlite数据文件以对象的形式存储在nosql数据库中,满足了大数据平台的海量数据的快速存取需求。在接收到数据查询请求的情况下,通过对数据查询请求进行解析,得到需要访问的至少一个sqlite数据文件的索引以及查询类型,在从nosql数据库中提取该sqlite数据文件,并加载到sqlite数据库的sql引擎的数据缓存区,利用sqlite数据库的sql引擎解决了nosql数据库不支持sql查询的问题,满足了大数据平台快速查询的需求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例公开的一种数据查询方法的流程示意图;

图2为本发明实施例公开的一种指标数据的存储方法的流程示意图;

图3为本发明实施例公开的又一种数据查询方法的流程示意图;

图4为本发明实施例公开的一种数据查询装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

发明人通过研究发现,基于关系型数据库的存储和访问方式,在海量数据写入和查询的场景下,存在性能瓶颈,在极端情况下甚至会引发锁表等故障。但是非关系型数据库,如nosql数据库,虽然可以满足海量数据的存储和快速响应,但是nosql数据库不支持sql查询。

为了解决上述技术问题,本发明提供了一种数据查询方法,利用nosql数据库的海量数据快速响应能力,并利用sqlite的sql引擎解决了在大数据平台部署有nosql数据库和sqlite数据库,存储有指标数据的sqlite数据文件以对象的形式存储在所述nosql数据库中,在满足大数据平台对海量数据存储的需求,并利用sqlite数据库的sql引擎解决nosql数据库不支持sql查询的问题,满足大数据平台的海量数据存储和快速查询需求。

请参阅图1,本实施例公开的数据查询方法,应用于上述大数据平台中的处理器中,该数据查询方法具体包括以下步骤:

s101:在接收到数据查询请求的情况下,对数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型;

用户可以通过前端应用向大数据平台发送数据查询请求。

前端应用具体可以通过调用数据访问接口向大数据平台发送数据查询请求,并实现对目标数据的访问。

需要说明的是,用户需要访问的目标数据对应的指标数据存储在sqlite数据文件中,sqlite数据文件以对象的形式存储在nosql数据库中。

数据存储是数据查询的基础,请参阅图2,以上指标数据的存储方法具体包括以下步骤:

s201:通过按照预设指标、预设统计周期和预设属性,对待处理原始数据进行处理,得到预设指标在预设统计周期的结构化数据表;

需要说明的是,本步骤得到的结构化数据表为单指标结构化数据表,也就是说,一个结构化数据表中只包含一种指标数据。

其中,统计周期为该指标的统计周期,如一天、一周、一个月、一年等,属性为该指标的属性,一个指标可以有多个属性。

s202:将结构化数据表转换为sqlite数据文件;

s203:确定存储有指标数据的sqlite数据文件的指标和统计周期;

s204:根据sqlite数据文件的指标和统计周期,生成sqlite数据文件的索引;

即sqlite数据文件的索引可以为指标+统计周期。

s205:根据sqlite数据文件的索引,将sqlite数据文件以对象的形式存储在nosql数据库中。

基于上述指标数据存储方法可知:根据索引可以在nosql数据库中唯一定位到一个sqlite数据文件。

在接收到前端应用发起的数据查询请求的情况下,对改数据查询请求进行解析,可以得到目标指标、目标统计周期和查询类型,由于sqlite数据文件在nosql数据库中的索引是根据指标和统计周期生成的,因此,得到目标指标和目标统计周期后,可以确定需要访问的至少一个sqlite数据文件的索引。

在前端应用通过调用数据访问接口向大数据平台发送数据查询请求的情况下,可以接收该数据访问接口传入的查询参数,然后对查询参数进行解析,得到目标指标、目标统计周期和查询类型。

为了提高在大规模并发请求场景下的处理效率,前端应用可以通过不同的数据访问接口发起对不同指标数据的数据查询请求,也就是说,数据访问接口与指标相对应。

s102:根据至少一个sqlite数据文件的索引,从nosql数据库中提取至少一个sqlite数据文件;

s103:将至少一个sqlite数据文件加载到sqlite数据库的sql引擎的数据缓存区;

通过将sqlite数据文件加载到sqlite数据库的sql引擎的数据缓存区,可以提高对sqlite数据文件的处理效率。

s104:根据查询类型,利用sql引擎对至少一个sqlite数据文件进行sql查询,得到目标数据。

查询类型可以包括环比统计、同比统计等等,根据查询类型,利用sql引擎可以实现对至少一个sqlite数据文件进行合并、聚合处理与计算,得到目标数据。

为了进一步对本实施例公开的数据查询方法进行说明,以下为一个具体的场景实施例。

在某大数据平台的指标库建设中,往期采取了关系数据库来进行指标的存储与展现。随着数据量的迅速增长,在并发场景下性能瓶颈开始凸显,且经常会产生锁表事件导致指标库生产故障。

应用本实施例的数据查询方法,该大数据平台对指标库进行重构,基于数据模型计算基础指标,以属性组/统计周期的方式组织数据文件,得到指标数据的结构化数据表,将结构化数据表转化为sqlite数据文件,存储在hbase(hbase为nosql数据库的一种)。

前端应用发起指标调用流程,即上述实施例中的数据查询请求,数据访问接口受理后,利用接口传入的参数,进行文件的提取、加载、文件合并、sql聚合计算、结果获取,最终由数据访问接口的形式返回目标数据值。

该项目建设通过统一的指标数据调用服务接口,同时支持通过sql访问服务接口,降低指标获取的复杂度,实现了指标库的生产和应用的平滑迁移。解决了关系型数据库存在的性能瓶颈和锁表的问题,同时满足了海量数据的高速查询要求。

可见,本实施例公开的一种数据查询方法,需要访问的存储有指标数据的sqlite数据文件以对象的形式存储在nosql数据库中,满足了大数据平台的海量数据存储和快速响应需求。在接收到数据查询请求的情况下,通过对数据查询请求进行解析,得到需要访问的至少一个sqlite数据文件的索引以及查询类型,在从nosql数据库中提取该sqlite数据文件,并加载到sqlite数据库的sql引擎的数据缓存区,利用sqlite数据库的sql引擎解决了nosql数据库不支持sql查询的问题,满足了大数据平台快速查询的需求。

请参阅图3,图3示出了数据查询方法的又一个实施例的流程,具体包括以下步骤:

s301:在接收到数据查询请求的情况下,对数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型;

s302:判断sql引擎的数据缓存区中是否存在上述至少一个sqlite数据文件;

若sql引擎的数据缓存区中不存在上述至少一个sqlite数据文件,执行s303:根据至少一个sqlite数据文件的索引,从nosql数据库中提取至少一个sqlite数据文件;

s304:将至少一个sqlite数据文件加载到sqlite数据库的sql引擎的数据缓存区;

若sql引擎的数据缓存区中存在上述至少一个sqlite数据文件,直接执行s305;

s305:根据查询类型,利用sql引擎对至少一个sqlite数据文件进行sql查询,得到目标数据。

从图3中可以看出,与图1对应的实施例相比,本实施例中的数据查询方法,在确定需要访问的至少一个sqlite数据文件的索引时,首先判断sql引擎的数据缓存区中是否存在该sqlite数据文件,在存在该sqlite数据文件的情况下,可以直接对其进行sql查询,提高数据查询请求的访问效率。

基于上述实施例公开的一种数据查询方法,本实施例对应公开了一种数据查询装置,设置于大数据平台中的处理器,所述大数据平台部署有nosql数据库和sqlite数据库,其中,存储有指标数据的sqlite数据文件以对象的形式存储在所述nosql数据库中,请参阅图4,该装置方法包括:

查询请求解析单元401,用于在接收到数据查询请求的情况下,对所述数据查询请求进行解析,确定需要访问的至少一个sqlite数据文件的索引以及查询类型;

数据文件提取单元402,用于根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个sqlite数据文件;

数据文件加载单元403,用于将所述至少一个sqlite数据文件加载到所述sqlite数据库的sql引擎的数据缓存区;

sql查询单元404,用于根据所述查询类型,利用所述sql引擎对所述至少一个sqlite数据文件进行sql查询,得到目标数据。

可选的,所述装置还包括数据文件存储单元,所述数据文件存储单元,具体用于:

确定存储有指标数据的sqlite数据文件的指标和统计周期;

根据所述sqlite数据文件的指标和统计周期,生成所述sqlite数据文件的索引;

根据所述sqlite数据文件的索引,将所述sqlite数据文件以对象的形式存储在所述nosql数据库中。

可选的,所述存储有指标数据的sqlite数据文件是通过按照预设指标、预设统计周期和预设属性,对待处理原始数据进行处理,得到所述预设指标在所述预设统计周期的结构化数据表,并将所述结构化数据表转换为sqlite数据文件得到的。

可选的,所述查询请求解析单元401,具体用于:

对所述数据查询请求进行解析,得到目标指标、目标统计周期和所述查询类型;

依据所述目标指标和所述目标统计周期,确定需要访问的至少一个sqlite数据文件的索引。

可选的,所述查询请求解析单元402,具体用于:

接收所述数据查询请求通过调用目标数据访问接口传入的查询参数,所述目标数据访问接口与所述目标指标相对应;

对所述查询参数进行解析,得到所述目标指标、所述目标统计周期和所述查询类型;

依据所述目标指标和所述目标统计周期,确定需要访问的至少一个sqlite数据文件的索引。

可选的,所述数据文件提取单元402,具体用于:

判断所述sql引擎的数据缓存区中是否存在所述至少一个sqlite数据文件;

若不存在,根据所述至少一个sqlite数据文件的索引,从所述nosql数据库中提取所述至少一个数据文件。

本实施例公开的一种数据查询装置,需要访问的存储有指标数据的sqlite数据文件以对象的形式存储在nosql数据库中,满足了大数据平台的海量数据存储和快速响应需求。在接收到数据查询请求的情况下,通过对数据查询请求进行解析,得到需要访问的至少一个sqlite数据文件的索引以及查询类型,在从nosql数据库中提取该sqlite数据文件,并加载到sqlite数据库的sql引擎的数据缓存区,利用sqlite数据库的sql引擎解决了nosql数据库不支持sql查询的问题,满足了大数据平台快速查询的需求。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1