本发明涉及数据处理,尤其涉及智能搜索,也可用于金融领域,具体涉及一种数据查询方法及装置。
背景技术:
1、随着大数据、人工智能和机器学习的发展,数据库查询技术也在不断演进,现有技术中用于实现跨数据库查询管理的方法主要分为两种,一种是基于常规的关系型数据库,使用语法解析器将常用数据库的sql语句解析成语法树,再转换成对应关系型数据库的sql,最后使用关系型数据库存储数据以供查询;另一种是使用大数据结构化查询语言作为中间语言,基于大数据计算引擎的查询方式。
2、然而,基于常规的关系型数据库,受限于性能瓶颈无法满足大数据查询的需求,即使有基于大数据计算引擎实现的程序,由于查询sql只能使用该大数据计算引擎特有的结构化查询语言,导致产生大量的学习和迁移成本。
技术实现思路
1、为了解决上述技术问题中的至少一个,本申请提出了一种数据查询方法及装置,通过将大数据计算引擎和语法解析器相结合,实现了使用一种常用数据库的sql对不同种数据库的数据交叉查询和数据管理的功能,同时又可以满足大数据性能的需求。
2、根据本申请的第一个方面,提供了一种数据查询方法,包括:
3、接收用户在数据查询平台输入的原始数据查询语句,并确定所述原始数据查询语句的数据库类型;
4、根据所述数据库类型和预先构建的sql语法分析模型,生成与所述原始数据查询语句对应的原始语法树;
5、将所述原始语法树转换为所述数据查询平台所需的目标查询语句。
6、在本实施例的一些可选方式中,所述确定所述原始数据查询语句的数据库类型,包括:
7、响应于所述原始数据查询语句包括数据库连接信息,根据所述数据库连接信息,确定所述原始数据查询语句的数据库类型;
8、响应于所述原始数据查询语句包括预设关键词、预设语法或预设函数,根据所述预设关键词、预设语法或预设函数,确定所述原始数据查询语句的数据库类型;
9、响应于所述原始数据查询语句包括预设系统表名称和预设视图名称,根据所述预设系统表名称和预设视图名称,确定所述原始数据查询语句的数据库类型。
10、在本实施例的一些可选方式中,所述根据所述数据库类型和预先构建的sql语法分析模型,生成与所述原始数据查询语句对应的原始语法树,包括:
11、根据所述数据库类型和所述sql语法分析模型,确定所述数据库类型对应的sql方言特性,其中,所述sql语法分析模型中存储有数据库类型与sql方言特性的映射关系,所述sql方言特性用于表征关键字、操作符、标识符、数字以及字符串的结构特征;
12、根据所述sql方言特性,生成与所述原始数据查询语句对应的原始语法树。
13、在本实施例的一些可选方式中,所述sql语法分析模型包括词法分析器、语法分析器以及语义分析器,所述根据所述sql方言特性,生成与所述原始数据查询语句对应的原始语法树,包括:
14、基于所述词法分析器,将所述原始数据查询语句分解为多个原始数据查询子语句,其中,所述原始数据查询子语句包括关键字、操作符、标识符、数字以及字符串;
15、基于所述语法分析器和所述sql方言特性,将所述多个原始数据查询子语句,构建语法解析树;
16、基于所述语义分析器,对所述语法解析树进行语义检查;
17、响应于确定所述语法解析树的语义正确,将所述语法解析树确定为所述原始语法树。
18、在本实施例的一些可选方式中,所述将所述原始语法树转换为所述数据查询平台所需的目标查询语句,包括:
19、确定所述数据查询平台的预设查询语句规范;
20、根据所述预设查询语句规范,将所述原始语法树转换为目标语法树;
21、根据所述目标语法树,确定所述数据查询平台所需的目标查询语句。
22、在本实施例的一些可选方式中,在所述将所述原始语法树转换为所述数据查询平台所需的目标查询语句之后,还包括:
23、根据所述数据库类型,确定目标数据库;
24、确定是否基于所述目标查询语句进行实时查询;
25、若是,基于所述目标查询语句查询所述目标数据库,得到查询结果;
26、若否,确定本地数据是否存储有所述目标数据库的数据,其中:
27、若是,基于所述目标查询语句查询所述本地数据,得到所述查询结果;
28、若否,基于所述目标查询语句查询所述目标数据库,得到所述查询结果,并将所述查询结果保存至所述本地数据。
29、在本实施例的一些可选方式中,所述目标数据库的数量为1个或多个,响应于所述目标数据库包括第一数据库和第二数据库,所述基于所述目标查询语句查询所述目标数据库,包括:
30、确定所述目标查询语句中用于查询所述第一数据库的第一目标查询子语句;
31、确定所述目标查询语句中用于查询所述第二数据库的第二目标查询子语句;
32、基于所述第一目标查询子语句查询所述第一数据库,得到第一查询子结果;
33、基于所述第二目标查询子语句查询所述第二数据库,得到第二查询子结果;
34、合并所述第一查询子结果和所述第二查询子结果,得到所述查询结果,并将所述查询结果发送至所述数据查询平台;
35、其中,所述第一数据库的数据库类型和第二数据库的数据库类型不同,所述第一数据库和所述第二数据库均被配置为与所述数据查询平台建立连接。
36、根据本申请的第二个方面,提供了一种数据查询装置,包括:
37、数据库类型确定模块,被配置为接收用户在数据查询平台输入的原始数据查询语句,并确定所述原始数据查询语句的数据库类型;
38、原始语法树确定模块,被配置为根据所述数据库类型和预先构建的sql语法分析模型,生成与所述原始数据查询语句对应的原始语法树;
39、目标查询语句确定模块,被配置为将所述原始语法树转换为所述数据查询平台所需的目标查询语句。
40、根据本申请的第三个方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据查询方法。
41、根据本申请的第四个方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据查询方法。
42、根据本申请的第五个方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述数据查询方法。
43、本发明实施例提供的数据查询方法及装置,将大数据计算引擎和语法解析器相结合,实现了使用一种常用数据库的sql对不同种数据库的数据交叉查询和数据管理的功能,同时又可以满足大数据性能的需求。
1.一种数据查询方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述确定所述原始数据查询语句的数据库类型,包括:
3.根据权利要求1所述的方法,其特征在于,所述根据所述数据库类型和预先构建的sql语法分析模型,生成与所述原始数据查询语句对应的原始语法树,包括:
4.根据权利要求3所述的方法,其特征在于,所述sql语法分析模型包括词法分析器、语法分析器以及语义分析器,所述根据所述sql方言特性,生成与所述原始数据查询语句对应的原始语法树,包括:
5.根据权利要求1所述的方法,其特征在于,所述将所述原始语法树转换为所述数据查询平台所需的目标查询语句,包括:
6.根据权利要求1所述的方法,其特征在于,在所述将所述原始语法树转换为所述数据查询平台所需的目标查询语句之后,还包括:
7.根据权利要求6所述的方法,其特征在于,所述目标数据库的数量为1个或多个,响应于所述目标数据库包括第一数据库和第二数据库,所述基于所述目标查询语句查询所述目标数据库,包括:
8.一种数据查询装置,其特征在于,包括:
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一所述的数据查询方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述的数据查询方法。
11.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至7任一所述的数据查询方法。