生成执行计划的方法、计划单元和分布式NewSQL数据库系统与流程

文档序号:13236640阅读:256来源:国知局
本发明涉及hadoop大数据
技术领域
:,尤其涉及生成执行计划的方法、计划单元和分布式newsql数据库系统。
背景技术
::目前hbase是hadoop生态体系中最著名的分布式nosql数据库之一。其设计理念来源于google的bigtable。hbase主要组件包括hmaster和hregionsever,为用户提供表格类型的数据模型,按主键范围划分为多个region,hmaster负责管理和分配region,hregionserver负责region数据的读写。但随着越来越多的应用尝试迁移到hbase上,hbase的缺陷也越来越被暴露出来:使用成本高:用户需要通过api编程访问hbase,对于复杂应用使用成本过高;不支持标准jdbc/odbc接口,etl过程十分复杂。使用成本过高直接导致许多较为复杂的应用无法使用hbase。技术实现要素:本发明实施例的目的是提供一种生成执行计划的方法和计划单元、及分布式newsql数据库系统,能支持sql,通过编写sql实现复杂的业务逻辑,极大的降低了使用成本;支持jdbc/odbc接口,极大的简化了etl过程。为实现上述目的,本发明实施例提供了一种生成执行计划的方法,包括:判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与所述sql语句对应的执行计划,若否,则对所述sql语句进行语法检查,若语法错误返回错误信息给用户,否则,对所述sql语句进行语义检查,若语义错误返回错误信息给用户,否则,对所述sql语句进行视图以及表达式转换,获得对应的转化结果;根据所述转换结果选择优化器,获得对应的优化器选择结果;根据所述优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;根据搜索路径生成执行计划,并输出执行计划。与现有技术相比,本发明实施例公开的一种生成执行计划的方法,通过首先判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则对sql语句依次进行语法检查、语义检查;然后在语法检查和语义检查无误的情况下,对sql语句进行视图以及表达式转换;接着根据转换结果选择优化器;再接着根据优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;最后根据搜索路径生成执行计划,并输出执行计划的技术方案,解决了现有技术中用户需要通过api编程访问hbase,对于复杂应用使用成本过高,以及不支持标准jdbc/odbc接口,etl过程十分复杂的问题,获得了降低成本、简化了etl过程的有益效果。进一步的,所述判断共享缓存池中是否存在与sql语句相对应的预存sql语句前还包括:解析用户请求,通过sql引擎编译sql语句。本发明实施例还提供一种计划单元,包括:缓存判断模块,用于判断共享缓存池中是否存在接收的sql语句,若是,则输出与所述sql语句对应的执行计划,若否,则启动语法检查模块;语法检查模块,用于对所述sql语句进行语法检查,若语法错误返回错误信息给用户,否则,语义检查模块,用于对所述sql语句进行语义检查,若语义错误返回错误信息给用户,否则,转换模块,用于对所述sql语句进行视图以及表达式转换,获得对应的转化结果;优化器选择模块,用于根据所述转换结果选择优化器,获得对应的优化器选择结果;连接选择模块,用于根据所述优化器选择结果选择对应的数据连接方式以及连接顺序;路径选择模块,用于根据连接方式和连接顺序选择搜索的路径;执行计划输出模块,用于根据搜索路径生成执行计划,并输出执行计划。与现有技术相比,本发明公开的一种执行单元,首先通过缓存判断模块判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则依次通过语法检查模块和语义检查模块对sql语句进行语法检查、语义检查,然后在语法检查和语义检查无误的情况下,通过转换模块对sql语句进行视图以及表达式转换;接着通过优化器选择模块根据转换结果选择优化器;再接着通过连接选择模块根据优化器选择结果选择对应的数据连接方式以及连接顺序;通过路径选择模块根据连接方式和连接顺序选择搜索的路径;最后通过执行计划输出模块根据搜索路径生成执行计划,并输出执行计划的技术方案,解决了现有技术中用户需要通过api编程访问hbase,对于复杂应用使用成本过高,以及不支持标准jdbc/odbc接口,etl过程十分复杂的问题,获得了降低成本、简化了etl过程的有益效果。进一步的,所述执行单元还包括:sql语句编译模块,用于解析用户请求,并通过sql引擎编译sql语句。本发明实施例还提供一种分布式newsql数据库系统,包括上述本发明实施例提供的一种计划单元,还包括:数据库接口,用于接入用户请求;控制单元,用于接收所述数据库接口所接入的所述用户请求,并将所述用户请求发送给计划单元,并将接收到的执行单元返回的执行结果返回给用户;分布式事务管理器,用于当所述执行计划中涉及事务时,协调所述执行计划中的多方完成分布式事务管理。执行单元,用于执行所述执行计划,并将所述执行计划的执行结果返回给控制单元。与现有技术相比,本发明公开的一种分布式newsql数据库系统,首先通过控制单元接入用户请求,然后将用户请求发送至计划单元;由计划单元根据用户请求定制执行计划发送至控制单元;控制单元根据执行计划的内容判断是否需要分布式事务管理器的介入;接着,通过执行单元执行计划单元所生成的执行计划;最后,通过执行单元将执行结果返回至控制单元的技术方案,解决hbase使用成本高、不支持复杂查询、可用性较低的问题,获得了极大的降低了使用成本,。极大的简化了etl过程的技术效果。进一步的,还包括数据库接口,所述数据库接口与所述控制单元连接,所述数据库接口用于接收用户请求,还用于接收所述控制单元返回的执行结果返回给用户。进一步的,所述数据库接口为jdbc或odbc。进一步的,所述控制单元还连接一监视器,用于负责元数据管理以及用于监控底层hbaseregion的负载,避免特定的region负载过高,以及利用hbase协同处理模块重新分配region。进一步的,所述执行单元通过hbase和搜索引擎服务器向数据库获取数据。附图说明图1是本发明实施例1提供的一种生成执行计划的方法的流程示意图;图2是本发明实施例2提供的一种计划单元的结构示意图;图3是本发明实施例3提供的一种分布式newsql数据库系统的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,图1是本发明实施例1提供的一种生成执行计划的方法的流程示意图;本发明实施例1包括步骤:s1、判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则s2、对sql语句进行语法检查,若语法错误返回错误信息给用户,否则,s3、对sql语句进行语义检查,若语义错误返回错误信息给用户,否则,s4、对sql语句进行视图以及表达式转换,获得对应的转化结果;s5、根据转换结果选择优化器,获得对应的优化器选择结果;s6、根据优化器选择结果选择对应的数据连接方式以及连接顺序;s7、根据连接方式和连接顺序选择搜索的路径;s8、根据搜索路径生成执行计划,并输出执行计划。判断共享缓存池中是否存在与sql语句相对应的预存sql语句前还包括预置步骤:s0、解析用户请求,通过sql引擎编译sql语句。具体的,用户请求为通过jdbc或odbc的数据库接口所接收的。基于接收的用户请求,通过sql引擎编译sql语句,进而基于sql语句生成执行计划。解决了用户需要通过api编程访问hbase,对于复杂应用使用成本过高;不支持标准jdbc或odbc接口,etl过程十分复杂;使用成本过高直接导致许多较为复杂的应用无法使用hbase的问题。具体实施时,首先解析用户请求,通过sql引擎编译sql语句,然后判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则对sql语句依次进行语法检查、语义检查,在语法检查和语义检查无误的情况下,对sql语句进行视图以及表达式转换;接着根据转换结果选择优化器;再接着根据优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;最后根据搜索路径生成执行计划,并输出执行计划。本发明实施例1对jdbc或odbc的支持,转化为hbase基本操作;解决hbase使用成本高、不支持复杂查询、可用性较低的问题,极大的降低了使用成本,极大的简化了etl过程,并能提供大数据存储以及高速读写能力。参见图2,图2是本发明实施例2提供的一种计划单元的结构示意图;本发明实施例2包括:缓存判断模块31,用于判断共享缓存池中是否存在接收的sql语句,若是,则输出与sql语句对应的执行计划,若否,则启动语法检查模块;语法检查模块32,用于对sql语句进行语法检查,若语法错误返回错误信息给用户,否则,语义检查模块33,用于对sql语句进行语义检查,若语义错误返回错误信息给用户,否则,转换模块34,用于对sql语句进行视图以及表达式转换,获得对应的转化结果;优化器选择模块35,用于根据转换结果选择优化器,获得对应的优化器选择结果;连接选择模块36,用于根据优化器选择结果选择对应的数据连接方式以及连接顺序;路径选择模块37,用于根据连接方式和连接顺序选择搜索的路径;执行计划输出模块38,用于根据搜索路径生成执行计划,并输出执行计划。进一步的,还包括:sql语句编译模块30,用于解析用户请求,并通过sql引擎编译sql语句。具体实施时,首先通过sql语句编译模块30解析用户请求,通过sql引擎编译sql语句,然后通过缓存判断模块31判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则依次通过语法检查模块32和语义检查模块33对sql语句进行语法检查、语义检查,在语法检查和语义检查无误的情况下,通过转换模块34对sql语句进行视图以及表达式转换;接着通过优化器选择模块35根据转换结果选择优化器;再接着通过连接选择模块36根据优化器选择结果选择对应的数据连接方式以及连接顺序;通过路径选择模块37根据连接方式和连接顺序选择搜索的路径;最后通过执行计划输出模块38根据搜索路径生成执行计划,并输出执行计划。本发明实施例2对jdbc或odbc的支持,转化为hbase基本操作;解决hbase使用成本高、不支持复杂查询、可用性较低的问题,极大的降低了使用成本,极大的简化了etl过程,并能提供大数据存储以及高速读写能力。参见图3,图3是本发明实施例3提供的一种分布式newsql数据库系统的结构示意图,本实施例3的结构包括上述本发明实施例2提供的一种计划单元3,还包括下述结构:数据库接口1,用于接入用户请求;控制单元2,用于接入用户请求,并将用户请求发送给计划单元,并将接收到的执行单元返回的执行结果返回给用户;分布式事务管理器4,用于当执行计划中涉及事务时,协调执行计划中的多方完成分布式事务管理。执行单元5,用于执行计划单元3所生成的执行计划,并将执行计划的执行结果返回给控制单元2。其中,分布式事务管理器4中所涉及的事务是一种机制、是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。计划单元3完成执行计划定制后返回给控制单元2,控制单元2根据执行计划的内容判断是否需要分布式事务管理器4的介入,如若需要,则通过分布式事务管理器4协调执行计划中的多方完成分布式事务管理;否则不需要分布式事务管理器4协调执行计划中的多方完成分布式事务管理,直接由执行单元5执行计划。进一步的,还包括数据库接口1,数据库接口1与控制单元2连接,数据库接口1用于接收用户请求,还用于接收控制单元2返回的执行结果返回给用户。进一步的,数据库接口1为jdbc或odbc。进一步的,控制单元2还连接一监视器6,用于负责元数据管理以及用于监控底层hbaseregion的负载,避免特定的region负载过高,以及利用hbase协同处理模块重新分配region。元数据,又称中介数据、中继数据,为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。进一步的,执行单元5通过hbase和搜索引擎服务器向数据库获取数据。具体实施时,首先控制单元2通过数据库接口1接入用户请求,然后将用户请求发送至计划单元3;由计划单元3根据用户请求定制执行计划发送至控制单元2;控制单元2根据执行计划的内容判断是否需要分布式事务管理器4的介入;接着,通过执行单元5执计划单元3所生成的执行计划;最后,通过执行单元5将执行结果返回至控制单元2。本实施例3的分布式newsql数据库系统对jdbc或odbc的支持,转化为hbase基本操作;解决hbase使用成本高、不支持复杂查询、可用性较低的问题,极大的降低了使用成本,极大的简化了etl过程,并能提供大数据存储以及高速读写能力。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1