一种基于混合存储架构的数据查询方法和装置与流程

文档序号:12465661阅读:337来源:国知局
一种基于混合存储架构的数据查询方法和装置与流程

本发明涉及数据查询技术领域,特别涉及一种基于混合存储架构的数据查询方法和装置。



背景技术:

电力系统正在建设企业级数据中心,支撑各类专题数据分析、即席查询、管理报表业务、辅助决策分析,同时支撑各级别单位个性化报表、定制主题应用。数据中心接入各类源系统,覆盖:结构化管理数据、准实时时序数据、GIS地理信息数据、图形数据、视频数据等。从数据特性来看,包括结构化数据、非结构化数据及部分结构化数据。这些数据大小、产生频率、时效性、关联性等存在极大差异。

基于数据特性差异性,数据中心制定混合存储策略。目前的存储策略:结构化管理类数据,如设备台账、组织人员、用户档案等存储在传统关系数据库中;各类自动化系统产生的实时数据,变化频率快,数据规模大、存储空间消耗大、数据快速存取要求高,此类实时数据需存储在时序数据库中。

现有的混合存储方式,在数据存储和数据访问两方面都存在接口不统一的问题:关系库操作和时序库操作分离,时序库需要定值开发应用程序编程接口(Application Programming Interface,简称“API”),不能使用统一结构化查询操作语句。另外一个问题,数据消费方需要定制开发,合并查询关系库的结果集以及查询时序库的结果集。接口不统一,不支持结果集合并等,导致和数据中心有接口关系的数据源系统或业务系统需做重复定制开发。



技术实现要素:

为了解决现有技术的问题,本发明实施例提供了一种基于混合存储架构的数据查询方法和装置。所述技术方案如下:

一方面,本发明实施例提供了一种基于混合存储架构的数据查询方法,所述方法包括:

初始化混合存储架构,并为混合储存架构提供统一的结构化查询语言(Structured Quevy Language,简称“SQL”)引擎,所述混合存储架构包括:用于储存结构化数据的关系数据库和用于储存实时数据的时序数据库;

获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求,所述SQL数据查询请求包括:所要查询的数据库类型及其相应的数据操作;

根据提供的统一的SQL引擎,解析获取的SQL数据查询请求;

根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果;

将获取到的多个数据操作结果进行合并,形成总的查询结果。

在本发明实施例上述的基于混合存储架构的数据查询方法中,所述初始化混合存储架构,并为混合储存架构提供统一的SQL引擎,包括:

为关系数据库提供统一的java数据库连接(Java Data Base Connectivity,简称“JDBC”)访问接口,并为时序数据库提供统一的SQL访问接口。

在本发明实施例上述的基于混合存储架构的数据查询方法中,所述根据提供的统一的SQL引擎,解析获取的SQL数据查询请求,包括:

根据提供的统一的SQL引擎,识别SQL数据查询请求语句中的分隔符、数据库类型、以及相应的操作关键字。

在本发明实施例上述的基于混合存储架构的数据查询方法中,所述根据解析结果,对不同的数据库执行相应的数据操作,包括:

根据解析结果,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,优化对时序数据库的数据操作。

在本发明实施例上述的基于混合存储架构的数据查询方法中,所述将获取到的多个数据操作结果进行合并,形成总的查询结果,包括:

将获取的多个数据操作结果进行全连接运算,形成总的查询结果。

另一方面,本发明实施例提供了一种基于混合存储架构的数据查询装置,所述装置包括:

初始化模块,用于初始化混合存储架构,并为混合储存架构提供统一的SQL引擎,所述混合存储架构包括:用于储存结构化数据的关系数据库和用于储存实时数据的时序数据库;

获取模块,用于获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求,所述SQL数据查询请求包括:所要查询的数据库类型及其相应的数据操作;

解析模块,用于根据提供的统一的SQL引擎,解析获取的SQL数据查询请求;

处理模块,用于根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果;

所述处理模块,还用于将获取到的多个数据操作结果进行合并,形成总的查询结果。

在本发明实施例上述的基于混合存储架构的数据查询装置中,所述初始化模块,还用于为关系数据库提供统一的JDBC访问接口,并为时序数据库提供统一的SQL访问接口。

在本发明实施例上述的基于混合存储架构的数据查询装置中,所述解析模块,还用于根据提供的统一的SQL引擎,识别SQL数据查询请求语句中的分隔符、数据库类型、以及相应的操作关键字。

在本发明实施例上述的基于混合存储架构的数据查询装置中,所述处理模块,还用于根据解析结果,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,优化对时序数据库的数据操作。

在本发明实施例上述的基于混合存储架构的数据查询装置中,所述处理模块,还用于将获取的多个数据操作结果进行全连接运算,形成总的查询结果。

本发明实施例提供的技术方案带来的有益效果是:

通过初始化混合存储架构,并为混合储存架构提供统一的SQL引擎;然后,获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求;然后,根据提供的统一的SQL引擎,解析获取的SQL数据查询请求;其次,根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果;最后,将获取到的多个数据操作结果进行合并,形成总的查询结果。这样该基于混合存储架构的数据查询方法,屏蔽底层数据库机制细节,支持关系数据库和时序数据库混合存储的统一标准SQL数据查询,避免了现有技术中,分开访问关系数据库和时序数据库的操作方式,实现了混合储存架构的统一标准访问,有效提高了混合储存架构的数据查询效率,简单易用,大大减少了数据查询的成本,有效支撑大数据分析等各类业务应用。

附图说明

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

图1是本发明实施例一提供的一种基于混合存储架构的数据查询方法流程图;

图2是本发明实施例二提供的一种基于混合存储架构的数据查询装置结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

实施例一

本发明实施例提供了一种基于混合存储架构的数据查询方法,参见图1,该方法可以包括:

步骤S11,初始化混合存储架构,并为混合储存架构提供统一的SQL引擎,该混合存储架构可以包括:用于储存结构化数据的关系数据库和用于储存实时数据的时序数据库。

在本实施例中,电力行业产生的数据中,除了传统的结构化数据外,还有很多实时的监控数据需要储存,因此,采用混合储存架构来储存上述数据是十分必要的。具体地,可以采用关系数据库来储存结构化数据,采用时序数据库来储存实时数据。

可选地,为了方便这些数据库的访问,上述步骤S11可以通过如下方式实现:

为关系数据库提供统一的JDBC访问接口,并为时序数据库提供统一的SQL访问接口。

在本实施例中,JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,这样为多个关系数据库提供统一的JDBC访问接口,可以有效提高访问效率。同时为时序数据库提供统一的SQL访问接口,使得时序数据库可以与关系数据库一样,可以采用SQL数据查询语句进行查询,提供了混合储存架构的数据查询效率。

步骤S12,获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求,该SQL数据查询请求包括:所要查询的数据库类型及其相应的数据操作。

在本实施例中,对混合储存架构的数据查询请求,采用预设的统一标准的SQL数据查询语句编写,能起到统一请求指令编写的目的,提高了数据查询请求的效率。

步骤S13,根据提供的统一的SQL引擎,解析获取的SQL数据查询请求。

在本实施例中,在解析SQL数据查询请求时,可以对SQL数据查询请求进行语句拆分,拆分语句时,按SELECT、FROM、WHERE关键字进行。依据数据库类别(数据库类别可以预先配),每个库内的表以及表内字段(初始化时已识别各库的表及字段分布情况)。按库拆分为查询关系库的SQL和查询时序库的子句,有几个库就拆分为几条语句,形成多个数据访问任务。

具体地,在本实施例中,上述步骤S13可以通过如下方式实现:

根据提供的统一的SQL引擎,识别SQL数据查询请求语句中的分隔符、数据库类型、以及相应的操作关键字。

在本实施例中,对SQL数据查询请求的解析,可以包括:识别分隔符,如空格或逗号以及嵌套使用的括号。识别数据库类别名(用于识别数据库类别,该名称可以配置,如关系库类别配置为ORACLE,时序库类别配置为FASTAR)。识别操作关键字,如SELECT、FROM、WHERE等标准SQL关键字。此外,还可以识别数据库名、表名、字段名称等。

步骤S14,根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果。

在本实施例中,可以分别对关系数据库和时序数据库分别进行相应的数据操作,得到相应的数据操作结果。当然,为了进一步优化执行过程,上述步骤S14可以通过如下方式实现:

根据解析结果,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,优化对时序数据库的数据操作。

在本实施例中,对于时序数据库的操作可抽象为一种字段为时标、测点标识、测点值、质量位的关系数据库表。为避免扩大访问时序数据库导致的低效查询,可先使用由关系数据库的数据操作所得的约束条件,缩小对时序数据库的访问,从而提升统一查询或操作的效率。因此,通过任务调度,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,来执行对时序数据库的数据操作,这样可以优化时序数据库的数据操作,缩短时序数据库的数据操作时间,提高数据操作效率。

步骤S15,将获取到的多个数据操作结果进行合并,形成总的查询结果。

具体地,在本实施例中,上述步骤S15可以通过如下方式实现:

将获取的多个数据操作结果进行全连接运算,形成总的查询结果。

在本实施例中,合并结果集的方法是对各子查询任务的结果集进行全连接,假设有两个子查询任务,反馈两个操作结果集,汇总合并则对两个子查询的结果集进行全连接运算,在全连接的结果上依据原查询语句中where子句中的过滤条件,对合并结果集进行过滤,如原查询语句有排序或去重复等操作,在合并结果集基础上统一做排序或去重复操作。最后返回总的查询结果集。

进一步地,该基于混合存储架构的数据查询方法,屏蔽底层数据库机制细节,支持关系数据库和时序数据库混合存储的统一标准SQL访问或操作,改变分开访问关系数据库及API访问时序数据库的操作方式,实现混合存储业务系统的统一标准访问。简单易用,大大减少了数据访问的成本,有效支撑大数据分析等各类业务应用。

下面在某电网公司所辖若干供电局,调度自动化系统提供的一次设备模型(包括设备信息和拓扑连接信息等)存储在ORACLE关系数据库,自动化采集实时数据存储在时序数据库FASTAR中,这样的背景条件下,对查询该电网公司在指定日期内所辖馈线重过载过程进行举例:

获取的SQL数据查询请求如下所示:

SELECT F.FL_NAME,F.FL_NO,MAX(R.VALUE)/F.CAPACITY AS LOAD FROM ORACLE.FEEDER F LEFT JOIN FASTAR.R R ON F.MeaName=R.MeaName WHERE R.TIME>=‘2016-01-28’AND R.TIME<‘2016-01-29’AND F.MeaType=‘I’GROUP BY F.FL_NAME,F.FL_NO

其中,对关系库查询:

SELECT F.FL_NAME,F.FL_NO,F.CAPACITY FROM FEEDER F WHERE F.MeaType=‘I’GROUP BY F.FL_NAME,F.FL_NO

对时序库查询:

SELECT MAX(R.VALUE)FROM FASTAR R WHERE R.TIME>=‘2016-01-28’AND R.TIME<‘2016-01-29’

本发明实施例通过初始化混合存储架构,并为混合储存架构提供统一的SQL引擎;然后,获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求;然后,根据提供的统一的SQL引擎,解析获取的SQL数据查询请求;其次,根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果;最后,将获取到的多个数据操作结果进行合并,形成总的查询结果。这样该基于混合存储架构的数据查询方法,屏蔽底层数据库机制细节,支持关系数据库和时序数据库混合存储的统一标准SQL数据查询,避免了现有技术中,分开访问关系数据库和时序数据库的操作方式,实现了混合储存架构的统一标准访问,有效提高了混合储存架构的数据查询效率,简单易用,大大减少了数据查询的成本,有效支撑大数据分析等各类业务应用。

实施例二

本发明实施例提供了一种基于混合存储架构的数据查询装置,采用了实施例一所述的方法,参见图2,该装置可以包括:初始化模块100、获取模块200、解析模块300、处理模块400。

初始化模块100,用于初始化混合存储架构,并为混合储存架构提供统一的SQL引擎,该混合存储架构可以包括:用于储存结构化数据的关系数据库和用于储存实时数据的时序数据库。

在本实施例中,电力行业产生的数据中,除了传统的结构化数据外,还有很多实时的监控数据需要储存,因此,采用混合储存架构来储存上述数据是十分必要的。具体地,可以采用关系数据库来储存结构化数据,采用时序数据库来储存实时数据。

获取模块200,用于获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求,该SQL数据查询请求包括:所要查询的数据库类型及其相应的数据操作。

在本实施例中,对混合储存架构的数据查询请求,采用预设的统一标准的SQL数据查询语句编写,能起到统一请求指令编写的目的,提高了数据查询请求的效率。

解析模块300,用于根据提供的统一的SQL引擎,解析获取的SQL数据查询请求。

在本实施例中,在解析SQL数据查询请求时,可以对SQL数据查询请求进行语句拆分,拆分语句时,按SELECT、FROM、WHERE关键字进行。依据数据库类别(数据库类别可以预先配),每个库内的表以及表内字段(初始化时已识别各库的表及字段分布情况)。按库拆分为查询关系库的SQL和查询时序库的子句,有几个库就拆分为几条语句,形成多个数据访问任务。

处理模块400,用于根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果。

在本实施例中,可以分别对关系数据库和时序数据库分别进行相应的数据操作,得到相应的数据操作结果。

处理模块400,还用于将获取到的多个数据操作结果进行合并,形成总的查询结果。

在本实施例中,该基于混合存储架构的数据查询装置,屏蔽底层数据库机制细节,支持关系数据库和时序数据库混合存储的统一标准SQL访问或操作,改变分开访问关系数据库及API访问时序数据库的操作方式,实现混合存储业务系统的统一标准访问。简单易用,大大减少了数据访问的成本,有效支撑大数据分析等各类业务应用。

可选地,为了方便混合储存架构中不同数据库的访问,初始化模块100,还用于为关系数据库提供统一的JDBC访问接口,并为时序数据库提供统一的SQL访问接口。

在本实施例中,JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成,这样为多个关系数据库提供统一的JDBC访问接口,可以有效提高访问效率。同时为时序数据库提供统一的SQL访问接口,使得时序数据库可以与关系数据库一样,可以采用SQL数据查询语句进行查询,提供了混合储存架构的数据查询效率。

可选地,解析模块300,还用于根据提供的统一的SQL引擎,识别SQL数据查询请求语句中的分隔符、数据库类型、以及相应的操作关键字。

在本实施例中,对SQL数据查询请求的解析,可以包括:识别分隔符,如空格或逗号以及嵌套使用的括号。识别数据库类别名(用于识别数据库类别,该名称可以配置,如关系库类别配置为ORACLE,时序库类别配置为FASTAR)。识别操作关键字,如SELECT、FROM、WHERE等标准SQL关键字。此外,还可以识别数据库名、表名、字段名称等。

可选地,为了进一步优化执行过程,处理模块400,还用于根据解析结果,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,优化对时序数据库的数据操作。

在本实施例中,对于时序数据库的操作可抽象为一种字段为时标、测点标识、测点值、质量位的关系数据库表。为避免扩大访问时序数据库导致的低效查询,可先使用由关系数据库的数据操作所得的约束条件,缩小对时序数据库的访问,从而提升统一查询或操作的效率。因此,通过任务调度,优先对关系数据库执行相应的数据操作,并根据关系数据库的数据操作结果,来执行对时序数据库的数据操作,这样可以优化时序数据库的数据操作,缩短时序数据库的数据操作时间,提高数据操作效率。

可选地,处理模块400,还用于将获取的多个数据操作结果进行全连接运算,形成总的查询结果。

在本实施例中,合并结果集的方法是对各子查询任务的结果集进行全连接,假设有两个子查询任务,反馈两个操作结果集,汇总合并则对两个子查询的结果集进行全连接运算,在全连接的结果上依据原查询语句中where子句中的过滤条件,对合并结果集进行过滤,如原查询语句有排序或去重复等操作,在合并结果集基础上统一做排序或去重复操作。最后返回总的查询结果集。

本发明实施例通过初始化混合存储架构,并为混合储存架构提供统一的SQL引擎;然后,获取根据预设统一标准的SQL数据查询语句编写的SQL数据查询请求;然后,根据提供的统一的SQL引擎,解析获取的SQL数据查询请求;其次,根据解析结果,对不同的数据库执行相应的数据操作,并获取相应的数据操作结果;最后,将获取到的多个数据操作结果进行合并,形成总的查询结果。这样该基于混合存储架构的数据查询装置,屏蔽底层数据库机制细节,支持关系数据库和时序数据库混合存储的统一标准SQL数据查询,避免了现有技术中,分开访问关系数据库和时序数据库的操作方式,实现了混合储存架构的统一标准访问,有效提高了混合储存架构的数据查询效率,简单易用,大大减少了数据查询的成本,有效支撑大数据分析等各类业务应用。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是:上述实施例提供的基于混合存储架构的数据查询装置在实现基于混合存储架构的数据查询方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于混合存储架构的数据查询装置与基于混合存储架构的数据查询方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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