CN108733727B - 一种查询处理方法、数据源注册方法及查询引擎 - Google Patents

一种查询处理方法、数据源注册方法及查询引擎 Download PDF

Info

Publication number
CN108733727B
CN108733727B CN201710274227.9A CN201710274227A CN108733727B CN 108733727 B CN108733727 B CN 108733727B CN 201710274227 A CN201710274227 A CN 201710274227A CN 108733727 B CN108733727 B CN 108733727B
Authority
CN
China
Prior art keywords
data source
query engine
source characteristic
information
characteristic information
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
Application number
CN201710274227.9A
Other languages
English (en)
Other versions
CN108733727A (zh
Inventor
周炳
薛文伟
梁定裕
李韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority to CN201710274227.9A priority Critical patent/CN108733727B/zh
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111382818.0A priority patent/CN114490630A/zh
Priority to PCT/CN2018/084183 priority patent/WO2018196729A1/zh
Priority to EP18791585.5A priority patent/EP3605364B1/en
Priority to EP22166830.4A priority patent/EP4116837A1/en
Publication of CN108733727A publication Critical patent/CN108733727A/zh
Priority to US16/663,050 priority patent/US11366808B2/en
Application granted granted Critical
Publication of CN108733727B publication Critical patent/CN108733727B/zh
Priority to US17/833,031 priority patent/US11907213B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2452Query translation
    • G06F16/24524Access plan code generation and invalidation; Reuse of access plans
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/217Database tuning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24539Query rewriting; Transformation using cached or materialised query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F16/24545Selectivity estimation or determination
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24562Pointer or reference processing operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Operations Research (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种查询处理方法,包括:根据数据源特征信息对SQL进行逻辑计划分解,以得到逻辑计划集,所述数据源特征信息存储于查询引擎的内部数据源特征库,所述内部数据源特征库存储于所述查询引擎的缓存空间;根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集;根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划;执行所述优先级最高的物理计划,以得到用户所查询的查询结果。本申请实施例还公开了一种数据源注册方法和查询引擎,采用本申请实施例可提高查询引擎的性能。

Description

一种查询处理方法、数据源注册方法及查询引擎
技术领域
本申请涉及数据查询技术领域,尤其涉及一种查询处理方法、数据源注册方法及查询引擎。
背景技术
查询引擎是指根据一定的策略、运用特定的计算机程序从数据源搜集信息,再对搜集到的信息进行组织和处理,以为用户提供检索服务,最后将用户检索相关的信息展示给用户的系统。以结构化查询语言(Structured Query Language,SQL)查询引擎为例,该种查询引擎的通用处理流程有:1)接收用户发起的SQL,以及进行SQL作解析和优化,得到一个优化后的逻辑计划;2)将这个逻辑计划根据数据来源的不同分解成不同的多个子逻辑计划(如SQL1、SQL2……SQLn);3)对每个子逻辑计划作物理计划生成,以得到每个子逻辑计划对应的至少一种物理计划;4)对多种物理计划作代价估计,以选择优先级最高的一种物理计划,其中,优先级最高的物理计划表示执行代价最小的物理计划;5)执行代价最小的一种物理计划,然后返回物理计划的执行结果;6)将执行结果进行合并计算得到一个总的结果集,然后向用户返回查询结果。
目前,为了实现多种异构数据源的接入,统一数据访问接口,有的查询引擎为每类数据源定制开发对应的“数据供应器”组件,在执行查询过程中,通过数据供应器向数据源发送实时SQL请求并解析其响应,或者通过监控查询引擎与数据源的历史负载信息,来动态确定和记录该数据源的能力,记录查询引擎与数据源的历史负载信息,并据此推断数据源的网络延迟、响应时间等查询成本。
可见,上述方式数据供应器不通用,多一类数据源就多一类供应器,人力成本较高,以及查询引擎对数据源作一次数据查询,需要引入至少一次的辅助查询,查询引擎与数据源交互频繁,网络通信等开销大。
发明内容
本申请实施例提供一种查询处理方法、数据源注册方法及查询引擎,以提升查询引擎的性能。
第一方面,本申请实施例提供一种查询处理方法,包括:查询引擎根据数据源特征信息确定SQL的查询方式,以及根据确定的查询方式对SQL执行查询操作,以得到查询结果;数据源特征信息存储于查询引擎的内部数据源特征库,内部数据源特征库存储于查询引擎的缓存空间。可见,查询引擎仅需根据静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作即可,相较于现有技术,本方案无需每执行一次SQL查询,都实时地访问数据源获得数据源特征信息,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。
在一种可能的实现方式中,查询引擎根据数据源特征信息确定SQL的查询方式,以及根据确定的查询方式对SQL执行查询操作,以得到查询结果的具体实施方式有:查询引擎根据数据源特征信息对结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集;查询引擎根据数据源特征信息对逻辑计划集进行物理计划生成,以得到物理计划集;查询引擎根据数据源特征信息对物理计划集进行查询代价决策,以得到优先级最高的物理计划;查询引擎执行优先级最高的物理计划,以得所述SQL的查询结果。
在一种可能的实现方式中,还包括:
查询引擎将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中,外部数据源特征库存储于查询引擎的存储空间。可见,事先将数据源特征信息导入查询引擎的内部数据源特征库中,后续查询引擎仅需根据静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作即可,进而提高了查询引擎的性能。
在一种可能的实现方式中,至少两种数据源特征信息均存储于同一内部数据源特征库。可见,无需为每一个数据源配置一个数据源特征库,进而节省了资源的开销。
在一种可能的实现方式中,所述方法还包括:
查询引擎将至少两种外部数据源特征信息基于通用注册模板配置至查询引擎的外部数据源特征库中。可见,无需为每个数据源提供专门的注册模块,进而节省了资源的开销。
在一种可能的实现方式中,所述根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集之前,还包括:查询引擎获取SQL所引用的数据源的标识信息,以及根据数据源的标识信息从内部数据源特征库中读取SQL所引用的数据源对应的数据源特征信息。可见,通过数据源的标识信息可快速读取到数据源的标识信息对应的数据源特征信息。
在一种可能的实现方式中,查询引擎获取SQL所引用的数据源的标识信息的具体实施方式有:查询引擎对SQL进行解析和优化,以得到优化后的逻辑计划,逻辑计划包含SQL所引用的数据源的标识信息。
在一种可能的实现方式中,当SQL所引用的数据源数量为N个时,N个数据源分别对应一个数据源特征信息,N为正整数,查询引擎根据数据源特征信息对SQL进行逻辑计划分解,以得到逻辑计划集的具体实施方式为:查询引擎根据N个数据源特征信息对SQL进行逻辑计划分解,以得到逻辑计划集,逻辑计划集包括X个逻辑计划,X为正整数。可见,逻辑计划分解是基于数据源特征信息进行的,可得到多个最优的逻辑计划,进一步提升查询引擎的性能。
在一种可能的实现方式中,所述根据所述数据源特征信息对所述逻辑计划进行物理计划生成,以得到物理计划集的具体实施方式为:根据所述N个数据源特征信息对所述X个逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。可见,物理计划生成是基于数据源特征信息进行的,可得到多个最优的物理计划,进一步提升查询引擎的性能。
在一种可能的实现方式中,所述根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划的具体实施方式为:根据所述N个数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。可见,查询代价决策是基于数据源特征信息进行的,更合理的从多个物理计划中选取最优的一个物理计划,进一步提升查询引擎的性能。
在一种可能的实现方式中,所述执行所述优先级最高的物理计划,以及对执行所述优先级最高的物理计划的执行结果进行数据处理,以得到用户所查询的查询结果的具体实施方式为:执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集;根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
在一种可能的实现方式中,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
在一种可能的实现方式中,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。可见,查询引擎可支持多种粒度的数据源进行单独操作,进而进一步的提升了查询引擎的性能。
第二方面,本申请实施例提供一种数据源注册方法,包括:查询引擎将外部数据源特征信息配置至查询引擎的外部数据源特征库中,外部数据源特征库存储于查询引擎的存储空间;查询引擎将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中,内部数据源特征库存储于查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库。可见,查询引擎将外部数据源特征信息配置至查询引擎的外部数据源特征库中,然后再将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中。可使得后续查询引擎可基于静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作,相较于现有技术,无需每执行一次SQL查询,都实时地访问数据源获得数据源特征信息,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。另外,至少两种数据源特征信息存储于同一数据源特征库中,无需为每一个数据源配置一个数据源特征库,进而节省了资源的开销。
在一种可能的实现方式中,查询引擎将外部数据源特征信息配置至查询引擎的外部数据源特征库中的具体实施方式为:查询引擎通过查询引擎的工具程序将外部数据源特征信息配置至查询引擎的外部数据源特征库中,至少两种外部数据源特征信息对应于同一工具程序。可见,无需为每一个外部数据源特征信息配置一个工具程序,进而节省了资源的开销。
在一种可能的实现方式中,查询引擎将查询引擎的外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中的具体实施方式为:查询引擎通过查询引擎的导入程序将查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,至少两种数据源特征信息对应于同一导入程序。可见,无需为每一个数据源特征信息配置一个导入程序,进而节省了资源的开销。另外,由于查询引擎的导入程序可以同时访问外部和内部的数据源特征库,通过执行查询引擎的导入程序,可以实现免重启查询引擎,动态完成外部数据源特征库到内部数据源特征库实时更新的数据源特征注册流程。
在一种可能的实现方式中,至少两种外部数据源特征信息是基于通用注册模板配置至所述查询引擎的外部数据源特征库的。可见,无需为每个数据源提供专门的注册模块,进而节省了资源的开销。
结合本申请第二方面、第一种至第三种中的任一种实施方式,在第二方面的第四种实施方式中,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
结合本申请第二方面、第一种至第四种中的任一种实施方式,在第二方面的第五种实施方式中,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。可见,查询引擎可支持多种粒度的数据源进行单独操作,进而进一步的提升了查询引擎的性能。
第三方面,本申请提供一种查询引擎,包含用于执行第一方面中的方法的模块。
第四方面,本申请提供一种查询引擎,包含用于执行第二方面中的方法的模块。
第五方面,本申请提供一种查询引擎,该查询引擎网元中包括处理器,处理器被配置为支持该查询引擎网元执行第一方面提供的一种查询处理方法中相应的功能。该查询引擎还可以包括存储器,存储器用于与处理器耦合,其保存该查询引擎必要的程序指令和数据。该查询引擎还可以包括通信接口,用于该查询引擎与其他设备或通信网络通信。
第六方面,本申请提供一种查询引擎,该查询引擎中包括处理器,处理器被配置为支持该查询引擎网元执行第二方面提供的一种数据源注册方法中相应的功能。该查询引擎还可以包括存储器,存储器用于与处理器耦合,其保存该查询引擎必要的程序指令和数据。该查询引擎还可以包括通信接口,用于该查询引擎与其他设备或通信网络通信。
第七方面,本申请提供一种计算机存储介质,用于储存为上述第五方面提供的查询引擎所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
第八方面,本申请提供一种计算机存储介质,用于储存为上述第六方面提供的查询引擎所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
可见,查询引擎仅需根据静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作即可,相较于现有技术,本方案无需每执行一次SQL查询,都实时地访问数据源获得数据源特征信息,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1是本申请实施例提供的一种逻辑构架的示意图;
图2是本申请实施例提供的一种数据源注册方法的流程示意图;
图3是本申请实施例提供的一种查询处理方法的流程示意图;
图4是本申请实施例提供的另一种查询处理方法的流程示意图;
图5是本申请实施例提供的一种查询引擎的结构示意图;
图6是本申请实施例提供的另一种查询引擎的结构示意图;
图7是本申请实施例提供的又一种查询引擎的结构示意图。
具体实施方式
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)数据源是一个数据库、数据库中的一个表、表中的一行、表中的一列、一个任意存储格式的文件等能够被查询引擎访问的不同粒度的数据单元。
2)数据源的标识信息是能够唯一标识一个数据源的信息。数据源的标识信息包括数据源的连接信息,数据源的连接信息例如可以包括访问协议(如HTTP,JDBC等)、URL、用户名、密码等。
3)数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
4)数据源允许下推的计算包括Predicate、Projection、Aggregate、Join等SQL常用操作。
5)数据源不允许下推的计算包括Predicate、Projection、Aggregate、Join等SQL常用操作。
6)数据源下推计算的SQL语法可以通过模式匹配来描述。模式匹配的语法可沿用现有技术,如标准的SQL模式匹配、脚本正则表达式(Perl、PHP等)、Java正则表达式等。
7)数据源跨数据中心信息描述数据源是否与查询引擎部署在同一数据中心内、通常条件下数据源与查询引擎间的网络距离等等。
8)是否为数据源提供缓存支持信息用于表示远程数据源是否允许查询引擎对数据源的数据作本地缓存,以加速查询优化。
9)是否监控数据源的负载信息表示数据源是否允许查询引擎对数据源作负载监控。
10)逻辑计划是“做什么”都将输入SQL分解成多个子目标。物理计划就是具体“怎么做”将多个子目标的一步一步的实现方式确定下来。
11)缓存空间(Cache)是指为了加快查询引擎的读写速率,为查询引擎分配的可供快速读写的存储空间。一般而言,查询引擎读写缓存空间的速率高于读写存储空间的速率,因而通过直接读取缓存空间,查询引擎不必每次重新从存储空间上读取相应的数据,从而提升了查询引擎的数据读写效率。缓存空间一般设置在随机存取存储器(random accessmemory,RAM)上,但在一些实现,例如虚拟内存技术中,存储于缓存空间中的数据实际可能全部或者部分存储在外部存储器,例如磁盘中。
12)查询引擎的存储空间是指由系统进行分配大小,用于保存软件数据,用户资料,表格的存储资源,存储空间一般划分在外部存储器,例如磁盘中。
13)、“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合本申请实施例中的附图对本申请实施例进行描述。
请参阅图1,图1是本申请实施例公开的一种逻辑构架的示意图。该逻辑构架包括查询引擎和N个数据源,N为正整数,查询引擎包括查询引擎的内部数据源特征库、查询引擎的外部数据源特征库和处理器。图1所示的逻辑构架可应用于大数据领域的查询。基于图1所示的逻辑构架查询引擎的查询处理流程有:
1)查询引擎的处理器将外部数据源特征信息配置至查询引擎的外部数据源特征库中,查询引擎的外部数据源特征库存储于查询引擎的存储空间;
2)查询引擎的处理器将查询引擎的外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中,查询引擎的内部数据源特征库存储于查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库;
3)后续当查询引擎的处理器接收用户发起的查询命令时,查询命令携带SQL,查询引擎的处理器对SQL进行解析/分析/优化处理,以得到SQL所引用的N个数据源的标识信息;
4)查询引擎的处理器根据N个数据源的标识信息从查询引擎的内部数据源特征库读取N个数据源的数据源特征信息,以及根据N个数据源的数据源特征信息对SQL进行逻辑计划分解;
5)查询引擎的处理器根据N个数据源的数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集;
6)查询引擎的处理器根据N个数据源的数据源特征信息对物理计划集进行查询代价决策,以得到优先级最高的物理计划;
7)查询引擎的处理器执行所述优先级最高的物理计划,以得所述SQL的查询结果;
8)查询引擎的处理器输出查询结果。
可见,事先将数据源特征信息静态配置在查询引擎的内部数据源特征库中,后续查询引擎仅需根据静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作即可,相较于现有技术,本方案无需每执行一次SQL查询,都实时地访问数据源获得数据源特征信息,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。
请参见图2,图2为本申请实施例提供的一种数据源注册方法的流程示意图,包括以下步骤:
S201、查询引擎将外部数据源特征信息配置至查询引擎的外部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间。
S202、所述查询引擎将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述内部数据源特征库存储于所述查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库。
在本申请一个示例中,以上步骤S201的具体实施方式为:所述查询引擎通过所述查询引擎的工具程序将外部数据源特征信息配置至查询引擎的外部数据源特征库中,至少两种外部数据源特征信息对应于同一工具程序。
其中,这里“外部”是指查询引擎的外部,用户可以直接访问,但是查询引擎还不能直接访问。该外部数据源特征库,硬件上可以在SSD或HDD等持久化存储上实现,软件上可以用文件或数据库的形式实现,物理上可与查询引擎部署在相同的节点或在查询引擎之外的独立节点实现。
工具程序是查询引擎执行特定功能的小程序,在本方案中,工具程序是查询引擎用于将外部数据源特征信息配置到查询引擎外部数据源特征库的小程序。另外,至少两种外部数据源特征信息对应于同一工具程序,例如有每两种外部数据源特征信息对应于同一工具程序,或者每三种外部数据源特征信息对应于同一工具程序,或者每五种外部数据源特征信息对应于同一工具程序,或者全部外部数据源特征信息对应于同一工具程序,等等,本申请不作限定。
在本申请一个示例中,以上步骤S202的具体实施方式为:所述查询引擎通过所述查询引擎的导入程序将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,至少两种数据源特征信息对应于同一导入程序。
其中,查询引擎通过查询引擎的导入程序将外部数据源特征库中的数据源特征信息导入查询引擎中,以形成内部数据源特征库。这里“内部”是指查询引擎的内部,查询引擎可以直接访问。硬件上,为保证性能,可用RAM内存实现;软件上,可以用哈希HASH表(散列表)或者字典树等数据结构来实现。查询引擎的导入程序可以同时访问外部和内部的数据源特征库。通过执行查询引擎的导入程序,可以实现免查询引擎重启,动态完成外部数据源特征库到内部数据源特征库实时更新的数据源特征注册流程。
导入程序是查询引擎执行特定功能的小程序,在本方案中,导入程序是查询引擎用于将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库的小程序。另外,至少两种数据源特征信息对应于同一导入程序,例如有每两种数据源特征信息对应于同一导入程序,或者每三种数据源特征信息对应于同一导入程序,或者每五种数据源特征信息对应于同一导入程序,或者全部数据源特征信息对应于同一导入程序,等等,本申请不作限定。
在本申请一个示例中,所述外部数据源特征信息是基于通用注册模板记录的。无需为每个数据源(如MySQL、DB2、Oracle等)提供专门的注册模块,只需使用通用的注册模板即可,进而节省了资源的开销。
在本申请一个示例中,数据源特征信息是一个数据源有别于其他数据源的特点信息,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨DC信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
其中,数据源的标识信息是一个数据源区别于另一个数据源的必备特征。数据源特征信息中除了数据源的标识信息之外的其它特征均为可选的数据源特征。如果数据源特征库中有可选特征的相关配置,查询引擎按照该定义作查询决策,如果数据源特征库中没有相关配置,查询引擎使用系统默认方式作查询决策。除了数据源的标识信息,本申请实施例也可以使用其它能够唯一识别一个数据源的任意标识信息。
在以上步骤S102后,查询引擎可以通过数据源的连接唯一标识符(数据源连接信息)访问内部数据源特征库,以获得数据源的相关特征配置,后续查询引擎可以基于数据源的相关特征配置,作查询决策。
在本申请实施例提供的方案,查询引擎将外部数据源特征信息配置至查询引擎的外部数据源特征库中,然后将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中。可使得后续查询引擎可基于静态配置在内部数据源特征库中的数据源特征信息对SQL进行查询操作,相较于现有技术,无需每执行一次SQL查询,都实时地访问数据源获得数据源特征信息,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。另外,不同数据源的特征信息均存储于同一数据源特征库中,可节省了资源的开销。
举例来说,外部数据源特征库可以用文件或者数据库表来实现。外部数据源特征库以XML文件来实现的方式举例如下所示,该XML文件包含三个不同数据源的特征描述,不同数据源对应不同的数据源粒度。
Figure GDA0001319489190000071
Figure GDA0001319489190000081
Figure GDA0001319489190000091
请参见图3,图3为本申请实施例提供的一种查询处理方法的流程示意图,包括以下步骤:
S301、查询引擎根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集,所述数据源特征信息存储于查询引擎的内部数据源特征库,所述内部数据源特征库存储于所述查询引擎的缓存空间。
S302、所述查询引擎根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集。
S303、所述查询引擎根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划。
S304、所述查询引擎执行所述优先级最高的物理计划,以及对执行所述优先级最高的物理计划的执行结果进行数据处理,以得到用户所查询的查询结果。
在本申请一个示例中,以上步骤S301之前,图3所示的方法还包括:
所述查询引擎对用户输入的SQL进行解析和优化,以得到优化后的逻辑计划,所述逻辑计划包含所述SQL所引用的数据源的标识信息;所述查询引擎根据所述数据源的标识信息从内部数据源特征库中读取所述SQL所引用的数据源对应的数据源特征信息。
具体地,查询引擎接收到用户输入的SQL后,首先对SQL作语法解析,语法解析成功后,用户输入的SQL会转化成一棵结构化的抽象语法树(Abstract Syntax Tree,AST)。AST的叶子节点表示数据源提供的数据,非叶子节点表示一个SQL计算操作。这个AST相当于一个查询引擎中的一个逻辑计划。然后查询引擎对AST作语义分析,确认AST叶子节点的数据源是否存在,确认AST非叶子节点的SQL计算操作是否符合逻辑。最后查询引擎对经过语义分析的AST,作基于规则的优化(RBO,Rule Based Optimizer),比如计算合并、计算调序等等,得到优化后的逻辑计划。优化后的逻辑计划包含SQL所引用的数据源的标识信息。
查询引擎根据SQL所引用的数据源的标识信息查询到内部数据源特征库是否有相应的数据源特征信息,若查询到内部数据源特征库有相应的数据源特征信息,则查询引擎后续基于相应的数据源特征信息执行后续的操作,若未查询到内部数据源特征库有相应的数据源特征信息,则查询引擎后续按照默认方式(如跨数据中心的异构数据源的关系数据库管理系统(Relational Database Management System,RDBMS))执行后续的操作。
进一步地,在本申请一个示例中,当所述SQL所引用的数据源数量为N个时,N个数据源分别对应的一个数据源特征信息,所述N为正整数,以上步骤S301的具体实施方式为:所述查询引擎根据N个数据源特征信息对所述SQL进行逻辑计划分解,以得到逻辑计划集,所述逻辑计划集包括X个逻辑计划,所述X为正整数。
具体地,假如SQL所引用的数据源有N个时,查询引擎根据这N个数据源的数据源特征信息对SQL进行数据源分解后得到的X个逻辑计划,这X个逻辑计划可用SQL1、SQL2…和SQLX表示,其中,SQLi表示针对N个数据源的逻辑计划。X个逻辑计划中的每一个逻辑计划会对应N个子逻辑计划。比如,SQL1=F1(SQL11,SQL12,…,SQL1N),F1为用于将N个子逻辑计划进行数据重构的重构函数。
进一步地,在本申请一个示例中,以上步骤S302的具体实施方式为:所述查询引擎根据所述N个数据源特征信息对所述X个子逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。
具体地,查询引擎根据每一个逻辑计划对应的数据源特征信息为每一个逻辑计划生成至少一个物理执行计划,以得到一个物理计划集。该物理计划集包括Y个物理计划,这Y个物理计划用PHY1、PHY2…和PHYY表示。这Y个物理计划中的每个物理计划对应N个子物理计划。比如PHY1=F2(PHY11,PHY12,…,PHY1N),F2为用于将N个子物理计划进行数据重构的重构函数。
进一步地,在本申请一个示例中,以上步骤S303的具体实施方式为:所述查询引擎根据所述N个数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。
具体地,这Y个物理计划执行的结果是一样的,但是执行的代价是不一样的,因此查询引擎需要根据N个数据源特征信息为这Y个物理计划进行查询代价决策,以得到Y个物理计划中优先级最高的物理计划。其中,优先级最高的物理计划用OPT_PHY表示。
进一步地,在本申请一个示例中,以上步骤S304的具体实施方式为:所述查询引擎执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集;根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
具体地,由于物理计划中的每个物理计划对应N个子物理计划,因此执行OPT_PHY对应N个子物理计划可用OPT_PHY1、OPT_PHY2…和OPT_PHYN表示,查询引擎执行OPT_PHY1、OPT_PHY2…和OPT_PHYN得到N个结果集,这N个结果集可用R1、R2…和Rn表示。查询引擎根据重构函数F3对N个结果集进行数据重构,以得到用户所求查询结果U=F3(R1,R2,…,Rn),最后出输出查询结果U。
在本申请一个示例中,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨DC信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
可见,在本申请实施例提供的方案中,查询引擎仅需根据数据源的标识信息搜索静态配置好的内部数据源特征库,以获取数据源特征信息,然后再基于数据源特征信息来执行SQL查询,无需每执行一次SQL查询,都实时地访问数据源,大大节省了远程访问数据源的开销,进而提高了查询引擎的性能。
举例来说,假设用户输入的SQL形式如下:
SELECT F1(C1,C2…Ch),F2(C1,C2…Ch)…Fg(C1,C2…Ch)
FROM T1,T2…Tm
WHERE exp。
(1)假设表T1,T2…,Tm属于N个不同的数据源,其中,N、m、h、g均为正整数,m≥N。查询引擎对用户输入的SQL作数据源分解,得到以下针对m个表,N个数据源的一组子逻辑计划:
SELECT T1_F1(C1,C2…Ch)…T1_Fg(C1,C2…Ch)
FROM T1
WHERE T1_exp;
……
SELECT Tm_F1(C1,C2…Ch)…Tm_Fg(C1,C2…Ch)
FROM Tm
WHERE Tm_exp。
(2)查询引擎根据表Ti(i=1,…,m)所在数据源的标识信息,搜索内部数据源特征库。
(2.1)如果查询引擎未搜索到Ti对应的数据源特征信息,查询引擎按照默认方式,在数据源Ti对应的候选物理计划集,加入候选物理计划:SELECT C1,…,Ch FROM Ti。
具体步骤如(2.1.1)~(2.1.3):
(2.1.1)执行SELECT C1…Ch FROM Ti,即对列C1…Ch的投影(project)操作,在数据源端通过扫描表Ti完成;
(2.1.2)执行Ti_F1(C1,C2…Ch)…Ti_Fg(C1,C2…Ch),即对Ti_F1,Ti_F2…Ti_Fg的计算,在查询引擎端完成;
(2.1.3)执行WHERE Ti_exp过滤操作,即对Ti_exp的计算,在查询引擎端完成。
(2.2)如果查询引擎检索到Ti对应的数据源特征信息,则查询引擎按照具体的Ti_Fj(i=1,…,m;j=1,…,g)的计算公式和Ti对应的数据源特征信息,执行(2.2.1)~(2.2.2)的优化处理:
(2.2.1)如果Ti_Fj全部是聚合(Aggregate)操作。查询引擎根据数据源特征库中关于Ti的“<Aggregate>”特征描述,若Ti_Fj是Ti对应数据源支持的Aggregate操作,例如求和(sum)、统计(count)、平均值(avg)、最大值(max)、最小值(min)等RDBMS支持的系统聚合函数,则将“Ti_Fj计算下推到Ti数据源”。如果Ti_Fj均支持计算下推,则查询引擎在数据源Ti对应的候选物理计划集,加入候选物理计划:SELECT Ti_F1(C1,C2…Ch),…,Ti_Fg(C1,C2…Ch)FROM Ti;否则不加入该候选物理计划。
(2.2.2)如果Ti_Fj部分是Aggregate操作,部分是非Aggregate操作。对于非Aggregate操作Ti_Fj,查询引擎根据数据源特征库中关于Ti的“<project>”特征描述,若Ti_Fj是Ti对应数据源支持的投影(project)操作,例如加减乘除四则运算,则将“Ti_Fj计算下推到Ti数据源”。并且对于Aggregate操作,按照(2.1)均能计算下推到Ti数据源。则在数据源Ti对应的候选物理计划集,加入候选物理计划:SELECT Ti_F1(C1,C2…Ch),…,Ti_Fg(C1,C2…Ch)FROM Ti;否则不加入该候选物理计划。
(2.3)如果Ti_exp是数据源特征库中指定可支持的“<predicate>”操作,则将“Ti_exp计算下推到Ti对应数据源”。对(2.1)生成的候选物理计划集中的物理计划,分别添加“where Ti_exp”计算下推子句,生成新的物理计划:
SELECT C1,…,Ch FROM Ti where Ti_exp;
对(2.2)可能生成的候选物理计划集中的物理计划,分别添加“where Ti_exp”计算下推子句,生成新的物理计划:
SELECT Ti_F1(C1,C2…Ch),…,Ti_Fg(C1,C2…Ch)FROM Ti where Ti_exp;
否则不对Ti_exp作计算下推。
(3)SQL代价计算与决策:
对于N个数据源中候选物理计划集,分别选择一个物理计划,得到N个独立的物理计划,与查询引擎的重构操作形成一个针对用户输入SQL语句的整体的物理计划,
假设数据源i对应的候选物理计划集中物理计划数目为y_i,那么整体的物理计划数目为Y=y_1*y_2*…*y_N。
查询引擎根据数据源的特征信息,分别对Y个物理计划中的每个物理计划,估计数据源执行时间T_1,数据从数据源传输到查询引擎时间T_2和查询引擎重构输出用户SQL查询结果时间T_3,那么每个物理计划整体的执行时延ExecTime=T_1+T_2+T_3。最后查询引擎选择时延最低的物理计划作为优先级最高的物理计划执行。对于与数据源的特征信息无关的执行时间估计,沿用现有的代价决策技术,再此叙述。
请参见图4,图4为本申请实施例提供的另一种查询处理方法的流程示意图,包括以下步骤:
S401、查询引擎将至少两种外部数据源特征信息基于通用注册模板配置至所述查询引擎的外部数据源特征库中。
S402、查询引擎将外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间。
S403、当查询引擎接收到用户发起的查询命令时,查询命令携带SQL,查询引擎对SQL进行优化,以得到优化后的逻辑计划,优化后的逻辑计划包含SQL所引用的N个数据源的标识信息。
S404、查询引擎根据N个数据源的标识信息从查询引擎的内部数据源特征库读取N个数据源的数据源特征信息,以及根据N个数据源的数据源特征信息对所述SQL进行逻辑计划分解,以得到逻辑计划集,所述逻辑计划集包括X个逻辑计划,所述X为正整数。
S405、查询引擎根据N个数据源的数据源特征信息对所述X个逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。
S406、查询引擎根据N个数据源的数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。
S407、查询引擎执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集。
S408、查询引擎根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
S409、查询引擎输出查询结果。
需要说明的是,本申请实施例的步骤S401~步骤S409的具体实施方式可参照上述查询处理方法和上述数据源的注册方法,在此不再叙述。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
请参见图5,图5是本申请实施例提供的一种查询引擎的结构示意图,该查询引擎可以包括内部数据源特征库501、逻辑计划分解模块502、物理计划生成模块503、代价决策模块504和计划执行模块505,其中,各个模块的详细描述如下。
内部数据源特征库501,用于存储数据源特征信息,所述内部数据源特征库存储于所述查询引擎的缓存空间;
逻辑计划分解模块502,用于根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集;
物理计划生成模块503,用于根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集;
代价决策模块504,用于根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划;
计划执行模块505,用于执行所述优先级最高的物理计划,以得到用户所查询的查询结果。
在本申请一个示例中,所述查询引擎还包括:
标识信息获取模块506,用于获取所述SQL所引用的数据源的标识信息;
特征信息读取模块507,用于向所述内部数据源特征库501发送信息获取请求,所述信息获取请求携带所述SQL所引用的数据源的标识信息;接收所述内部数据源特征库501针对所述信息获取请求而发送的所述SQL所引用的数据源对应的数据源特征信息。
在本申请一个示例中,所述标识信息获取模块具体用于:
对所述SQL进行解析和优化,以得到优化后的逻辑计划,所述逻辑计划包含所述SQL所引用的数据源的标识信息。
在本申请一个示例中,当所述SQL所引用的数据源数量为N个时,N个数据源分别对应一个数据源特征信息,所述N为正整数,所述逻辑计划分解模块502具体用于:
根据N个数据源特征信息对所述SQL进行逻辑计划分解,以得到逻辑计划集,所述逻辑计划集包括X个逻辑计划,所述X为正整数。
在本申请一个示例中,所述物理计划生成模块503具体用于:
根据所述N个数据源特征信息对所述X个逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。
在本申请一个示例中,所述代价决策模块504具体用于:
根据所述N个数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。
在本申请一个示例中,所述计划执行模块505具体用于:
执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集;根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
在本申请一个示例中,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
在本申请一个示例中,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
在本申请一个示例中,所述查询引擎还包括:
外部数据源特征库508,用于存储数据源特征信息,所述外部数据源特征库存储于所述查询引擎的存储空间;
特征信息导入模块509,用于将所述外部数据源特征库508中的数据源特征信息导入所述查询引擎的内部数据源特征库中。
在本申请一个示例中,所述查询引擎还包括:
特征信息配置模块510,用于将至少两种外部数据源特征信息基于通用注册模板配置至所述查询引擎的外部数据源特征库中。
需要说明的是,上述各模块(内部数据源特征库501、逻辑计划分解模块502、物理计划生成模块503、代价决策模块504、计划执行模块505、标识信息获取模块506、特征信息读取模块507、外部数据源特征库508、特征信息导入模块509和特征信息配置模块510)用于执行上述查询处理方法的相关步骤。
在本实施例中,一种查询引擎500是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上逻辑计划分解模块502、物理计划生成模块503、代价决策模块504、计划执行模块505、标识信息获取模块506、特征信息读取模块507、特征信息导入模块509和特征信息配置模块510可通过图7所示的查询引擎的处理器701来实现,以上内部数据源特征库501可通过图7所示的查询引擎的存储器702来实现。
请参见图6,图6是本申请实施例提供的一种查询引擎的结构示意图,该查询引擎可以包括特征信息配置模块601和特征信息导入模块602,其中,各个模块的详细描述如下。
特征信息配置模块601,用于将外部数据源特征信息配置至查询引擎的外部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间,不同数据源的特征信息均存储于同一外部数据源特征库;
特征信息导入模块602,用于将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述内部数据源特征库存储于所述查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库。
在本申请一个示例中,所述特征信息配置模块601具体用于:
通过所述查询引擎的工具程序将外部数据源特征信息配置至查询引擎的外部数据源特征库中,至少两种外部数据源特征信息对应于同一工具程序。
在本申请一个示例中,所述特征信息导入模块602具体用于:
通过所述查询引擎的导入程序将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,至少两种数据源特征信息对应于同一导入程序。
在本申请一个示例中,至少两种外部数据源特征信息是基于通用注册模板配置至所述查询引擎的外部数据源特征库的。
在本申请一个示例中,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
在本申请一个示例中,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
需要说明的是,上述各模块(特征信息配置模块601和特征信息导入模块602)用于执行上述数据源注册方法的相关步骤。
在本实施例中,一种查询引擎600是以模块的形式来呈现。这里的“模块”可以指特定应用集成电路(application-specific integrated circuit,ASIC),执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。此外,以上特征信息配置模块601和特征信息导入模块602可通过图7所示的查询引擎的处理器701来实现。
请参见图7,图7是本申请实施例提供的一种查询引擎700,该查询引擎700包括至少一个处理器701、至少一个存储器702以及至少一个通信接口703,所述处理器701通过总线与存储器702和通信接口703相互连接并完成相互间的通信。
处理器701可以是通用中央处理器(英文:Central Processing Unit,简称:CPU),在处理器701是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器701也可以是微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制以上方案程序执行的集成电路。
通信接口703,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
存储器702可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器702用于存储执行以上方案的应用程序代码,并由处理器701来控制执行。所述处理器701用于执行所述存储器702中存储的应用程序代码。
该查询引擎700中的处理器701用于读取所述存储器702中存储的程序代码,执行以下操作:根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集;根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集,所述数据源特征信息存储于查询引擎的内部数据源特征库,所述内部数据源特征库存储于所述查询引擎的缓存空间;根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划;执行所述优先级最高的物理计划,以得到用户所查询的查询结果。
或者,该查询引擎700中的处理器701用于读取所述存储器702中存储的程序代码,执行以下操作:将外部数据源特征信息配置至查询引擎的外部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间;将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述内部数据源特征库存储于所述查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库。
需要说明的是,各个操作的实现还可以对应参照图2-图4所示的方法实施例的相应描述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种查询处理方法的部分或全部步骤。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种数据源注册方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上上述,本说明书内容不应理解为对本申请的限制。

Claims (28)

1.一种查询处理方法,其特征在于,包括:
将外部数据源特征库中的数据源特征信息导入查询引擎的内部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种;
根据数据源特征信息对结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集,所述数据源特征信息存储于查询引擎的内部数据源特征库,所述内部数据源特征库存储于所述查询引擎的缓存空间;
根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集;
根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划;
执行所述优先级最高的物理计划,以得所述SQL的查询结果。
2.根据权利要求1所述方法,所述方法还包括:
将至少两种外部数据源特征信息基于通用注册模板配置至所述查询引擎的外部数据源特征库中。
3.根据权利要求1所述的方法,其特征在于,所述根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集之前,所述方法还包括:
获取所述SQL所引用的数据源的标识信息;
根据所述数据源的标识信息从内部数据源特征库中读取所述SQL所引用的数据源对应的数据源特征信息。
4.根据权利要求3所述的方法,其特征在于,所述获取所述SQL所引用的数据源的标识信息,包括:
对所述SQL进行优化,以得到优化后的逻辑计划,所述逻辑计划包含所述SQL所引用的数据源的标识信息。
5.根据权利要求3或4所述的方法,其特征在于,当所述SQL所引用的数据源数量为N个时,N个数据源分别对应一个数据源特征信息,所述N为正整数,所述根据数据源特征信息对SQL进行逻辑计划分解,以得到逻辑计划集,包括:
根据N个数据源特征信息对所述SQL进行逻辑计划分解,以得到逻辑计划集,所述逻辑计划集包括X个逻辑计划,所述X为正整数。
6.根据权利要求5所述的方法,其特征在于,所述根据所述数据源特征信息对所述逻辑计划进行物理计划生成,以得到物理计划集,包括:
根据所述N个数据源特征信息对所述X个逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。
7.根据权利要求6所述的方法,其特征在于,所述根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划,包括:
根据所述N个数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。
8.根据权利要求7所述的方法,其特征在于,所述执行所述优先级最高的物理计划,以得到用户所查询的查询结果,包括:
执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集;
根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
9.根据权利要求1所述的方法,其特征在于,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
10.一种数据源注册方法,其特征在于,包括:
将外部数据源特征信息配置至查询引擎的外部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间;
将所述外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述内部数据源特征库存储于所述查询引擎的缓存空间,至少两种数据源特征信息存储于同一内部数据源特征库,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
11.根据权利要求10所述的方法,其特征在于,所述将外部数据源特征信息配置至查询引擎的外部数据源特征库中,包括:
通过所述查询引擎的工具程序将外部数据源特征信息配置至查询引擎的外部数据源特征库中,至少两种外部数据源特征信息对应于同一工具程序。
12.根据权利要求10所述的方法,其特征在于,所述将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,包括:
通过所述查询引擎的导入程序将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,至少两种数据源特征信息对应于同一导入程序。
13.根据权利要求10-12任一项所述的方法,其特征在于,至少两种外部数据源特征信息是基于通用注册模板配置至所述查询引擎的外部数据源特征库的。
14.根据权利要求10所述的方法,其特征在于,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
15.一种查询引擎,其特征在于,包括:
外部数据源特征库,用于存储数据源特征信息,所述外部数据源特征库存储于所述查询引擎的存储空间,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种;
特征信息导入模块,用于将所述外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中;
内部数据源特征库,用于存储数据源特征信息,所述内部数据源特征库存储于所述查询引擎的缓存空间;
逻辑计划分解模块,用于根据数据源特征信息对用户输入的结构化查询语言SQL进行逻辑计划分解,以得到逻辑计划集;
物理计划生成模块,用于根据所述数据源特征信息对所述逻辑计划集进行物理计划生成,以得到物理计划集;
代价决策模块,用于根据所述数据源特征信息对所述物理计划集进行查询代价决策,以得到优先级最高的物理计划;
计划执行模块,用于执行所述优先级最高的物理计划,以得到用户所查询的查询结果。
16.根据权利要求15所述的查询引擎,其特征在于,所述查询引擎还包括:
特征信息配置模块,用于将至少两种外部数据源特征信息基于通用注册模板配置至所述查询引擎的外部数据源特征库中。
17.根据权利要求15所述的查询引擎,其特征在于,所述查询引擎还包括:
标识信息获取模块,用于获取所述SQL所引用的数据源的标识信息;
特征信息读取模块,用于向所述内部数据源特征库发送信息获取请求,所述信息获取请求携带所述SQL所引用的数据源的标识信息;接收所述内部数据源特征库针对所述信息获取请求而发送的所述SQL所引用的数据源对应的数据源特征信息。
18.根据权利要求17所述的查询引擎,其特征在于,所述标识信息获取模块具体用于:
对所述SQL进行解析和优化,以得到优化后的逻辑计划,所述逻辑计划包含所述SQL所引用的数据源的标识信息。
19.根据权利要求17或18所述的查询引擎,其特征在于,当所述SQL所引用的数据源数量为N个时,N个数据源分别对应一个数据源特征信息,所述N为正整数,所述逻辑计划分解模块具体用于:
根据N个数据源特征信息对所述SQL进行逻辑计划分解,以得到逻辑计划集,所述逻辑计划集包括X个逻辑计划,所述X为正整数。
20.根据权利要求19所述的查询引擎,其特征在于,所述物理计划生成模块具体用于:
根据所述N个数据源特征信息对所述X个逻辑计划进行物理计划生成,以得到物理计划集,所述物理计划集包括Y个物理计划,所述Y大于或等于所述X。
21.根据权利要求20所述的查询引擎,其特征在于,所述代价决策模块具体用于:
根据所述N个数据源特征信息分别对所述Y个物理计划进行查询代价决策,以得到所述Y个物理计划中优先级最高的物理计划。
22.根据权利要求21所述的查询引擎,其特征在于,所述计划执行模块具体用于:
执行所述Y个物理计划中优先级最高的物理计划,以得到N个结果集;根据重构函数对所述N个结果集进行数据重构,以得到用户所查询的查询结果。
23.根据权利要求15所述的查询引擎,其特征在于,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
24.一种查询引擎,其特征在于,包括:
特征信息配置模块,用于将外部数据源特征信息配置至查询引擎的外部数据源特征库中,所述外部数据源特征库存储于所述查询引擎的存储空间;
特征信息导入模块,用于将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,所述内部数据源特征库存储于所述查询引擎的缓存空间,至少两种数据源的特征信息存储于同一内部数据源特征库,所述数据源特征信息包括数据源的标识信息、数据源粒度、数据源允许下推的计算、数据源不允许下推的计算、数据源下推计算的SQL语法、数据源跨数据中心信息、是否为数据源提供缓存支持信息、是否监控数据源的负载信息中的至少一种。
25.根据权利要求24所述的查询引擎,其特征在于,所述特征信息配置模块具体用于:
通过所述查询引擎的工具程序将外部数据源特征信息配置至查询引擎的外部数据源特征库中,至少两种外部数据源特征信息对应于同一工具程序。
26.根据权利要求24所述的查询引擎,其特征在于,所述特征信息导入模块具体用于:
通过所述查询引擎的导入程序将所述查询引擎的外部数据源特征库中的数据源特征信息导入所述查询引擎的内部数据源特征库中,至少两种数据源特征信息对应于同一导入程序。
27.根据权利要求24-26任一项所述的查询引擎,其特征在于,至少两种外部数据源特征信息是基于通用注册模板配置至所述查询引擎的外部数据源特征库的。
28.根据权利要求24所述的查询引擎,其特征在于,所述数据源粒度包括文件、数据库、数据库中的表、表中的行、表中的列中的至少一种。
CN201710274227.9A 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎 Active CN108733727B (zh)

Priority Applications (7)

Application Number Priority Date Filing Date Title
CN202111382818.0A CN114490630A (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎
CN201710274227.9A CN108733727B (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎
EP18791585.5A EP3605364B1 (en) 2017-04-25 2018-04-24 Query processing method, data source registration method and query engine
EP22166830.4A EP4116837A1 (en) 2017-04-25 2018-04-24 Query processing method, data source registration method, and query engine
PCT/CN2018/084183 WO2018196729A1 (zh) 2017-04-25 2018-04-24 一种查询处理方法、数据源注册方法及查询引擎
US16/663,050 US11366808B2 (en) 2017-04-25 2019-10-24 Query processing method, data source registration method, and query engine
US17/833,031 US11907213B2 (en) 2017-04-25 2022-06-06 Query processing method, data source registration method, and query engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710274227.9A CN108733727B (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111382818.0A Division CN114490630A (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎

Publications (2)

Publication Number Publication Date
CN108733727A CN108733727A (zh) 2018-11-02
CN108733727B true CN108733727B (zh) 2021-11-30

Family

ID=63920173

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111382818.0A Pending CN114490630A (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎
CN201710274227.9A Active CN108733727B (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111382818.0A Pending CN114490630A (zh) 2017-04-25 2017-04-25 一种查询处理方法、数据源注册方法及查询引擎

Country Status (4)

Country Link
US (2) US11366808B2 (zh)
EP (2) EP4116837A1 (zh)
CN (2) CN114490630A (zh)
WO (1) WO2018196729A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110674331A (zh) * 2018-06-15 2020-01-10 华为技术有限公司 信息处理方法、相关设备及计算机存储介质
CN111221860A (zh) * 2018-11-27 2020-06-02 北京奇虎科技有限公司 基于大数据的混合查询优化方法及装置
CN111221852A (zh) * 2018-11-27 2020-06-02 北京奇虎科技有限公司 基于大数据的混合查询处理方法及装置
US11157514B2 (en) * 2019-10-15 2021-10-26 Dropbox, Inc. Topology-based monitoring and alerting
CN112287012B (zh) * 2020-11-26 2022-05-03 杭州火树科技有限公司 采用Spark SQL模式实现http接口调用方法
US11809426B2 (en) * 2022-02-03 2023-11-07 Bank Of America Corporation System for implementing a data driven channel for query executions using quantum computing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156753A (zh) * 2011-04-29 2011-08-17 中国人民解放军国防科学技术大学 面向固态硬盘文件系统的数据页缓存方法
CN104142980A (zh) * 2014-07-15 2014-11-12 中电科华云信息技术有限公司 基于大数据的元数据模型管理系统和管理方法
CN105279286A (zh) * 2015-11-27 2016-01-27 陕西艾特信息化工程咨询有限责任公司 一种交互式大数据分析查询处理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7809882B1 (en) * 2006-01-24 2010-10-05 Verizon Services Corp. Session independent backend data cache system
US9087102B2 (en) * 2007-10-09 2015-07-21 International Business Machines Corporation Adaptive query processing infrastructure
US8954418B2 (en) * 2010-05-14 2015-02-10 Sap Se Performing complex operations in a database using a semantic layer
US20120215763A1 (en) 2011-02-18 2012-08-23 Microsoft Corporation Dynamic distributed query execution over heterogeneous sources
US9177021B2 (en) 2011-06-09 2015-11-03 International Business Machines Corporation Relational query planning for non-relational data sources
EP2761510A4 (en) * 2011-09-29 2015-08-05 Cirro Inc UNIFORM QUESTION ENGINE TO ASSEMBLE DATA INTERROGATION BETWEEN STRUCTURED AND UNSTRUCTURED DATA
WO2015095000A1 (en) * 2013-12-16 2015-06-25 F5 Networks, Inc. Methods for facilitating improved user authentication using persistent data and devices thereof
CN103902671B (zh) * 2014-03-19 2018-04-13 北京科技大学 一种异构多源数据的动态集成方法及系统
CN104133889B (zh) 2014-07-30 2017-04-19 国云科技股份有限公司 一种数据库虚拟化微内核数据源注册与封装方法
US9348880B1 (en) * 2015-04-01 2016-05-24 Palantir Technologies, Inc. Federated search of multiple sources with conflict resolution
WO2016183564A1 (en) * 2015-05-14 2016-11-17 Walleye Software, LLC Data store access permission system with interleaved application of deferred access control filters
US10430478B1 (en) * 2015-10-28 2019-10-01 Reputation.Com, Inc. Automatic finding of online profiles of an entity location

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156753A (zh) * 2011-04-29 2011-08-17 中国人民解放军国防科学技术大学 面向固态硬盘文件系统的数据页缓存方法
CN104142980A (zh) * 2014-07-15 2014-11-12 中电科华云信息技术有限公司 基于大数据的元数据模型管理系统和管理方法
CN105279286A (zh) * 2015-11-27 2016-01-27 陕西艾特信息化工程咨询有限责任公司 一种交互式大数据分析查询处理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于虚拟视图的网络化数据共享;宗士强;《指挥信息系统与技术》;20121031;第3卷(第5期);第74-78页 *

Also Published As

Publication number Publication date
EP3605364B1 (en) 2022-06-08
CN114490630A (zh) 2022-05-13
US11366808B2 (en) 2022-06-21
US20200073867A1 (en) 2020-03-05
WO2018196729A1 (zh) 2018-11-01
CN108733727A (zh) 2018-11-02
US20220300506A1 (en) 2022-09-22
US11907213B2 (en) 2024-02-20
EP4116837A1 (en) 2023-01-11
EP3605364A1 (en) 2020-02-05
EP3605364A4 (en) 2020-02-26

Similar Documents

Publication Publication Date Title
CN108733727B (zh) 一种查询处理方法、数据源注册方法及查询引擎
EP3173944B1 (en) Database access method and apparatus and database system
CN110795455A (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
US8417690B2 (en) Automatically avoiding unconstrained cartesian product joins
CN108536808B (zh) 一种基于Spark计算框架的数据获取方法和装置
WO2012071162A1 (en) Highly adaptable query optimizer search space generation process
CN107102995B (zh) 一种sql执行计划的确定方法及装置
JP2019504390A (ja) データ照会方法および装置ならびにデータベースシステム
CN108073641B (zh) 查询数据表的方法和装置
US10003492B2 (en) Systems and methods for managing data related to network elements from multiple sources
JP4031947B2 (ja) 異種データベース統合システムにおける問い合わせ最適化処理装置、問い合わせ最適化処理方法、その方法をコンピュータに実行させるプログラムおよびプログラムを記録した記録媒体
CN115114325B (zh) 数据查询方法、装置、电子设备以及存储介质
CN115168389A (zh) 请求处理方法以及装置
CN114547083A (zh) 数据处理方法、装置及电子设备
CN115292313A (zh) 一种伪列实现方法、装置、电子设备及存储介质
US11501177B2 (en) Knowledge engineering and reasoning on a knowledge graph
WO2017156673A1 (zh) 一种存储过程处理方法及装置
CN113076330A (zh) 查询处理方法、装置、数据库系统、电子设备及存储介质
KR20150046659A (ko) 프리미티브 생성 방법과 그를 이용한 질의처리 방법
CN117609233A (zh) 数据分析方法、装置、设备及计算机可读介质
CN116126995A (zh) 一种索引信息的生成方法、装置及计算机可读存储介质
CN117131230A (zh) 数据血缘分析方法、装置、设备及存储介质
CN117971855A (zh) 一种数据库查询处理方法及装置
CN117971888A (zh) 数据引擎的确定方法、装置、设备、存储介质及程序产品
CN116991884A (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