一种分布式NewSQL数据库系统和数据查询方法与流程

文档序号:13164688阅读:145来源:国知局
本发明涉及大数据
技术领域
:,尤其涉及一种分布式newsql数据库系统和数据查询方法。
背景技术
::目前hbase是hadoop生态体系中最著名的分布式nosql数据库之一。其设计理念来源于google的bigtable。hbase主要组件包括hmaster和hregionsever,为用户提供表格类型的数据模型,按主键范围划分为多个region,hmaster负责管理和分配region,hregionserver负责region数据的读写。但随着越来越多的应用尝试迁移到hbase上,hbase的缺陷也越来越被暴露出来:在实际应用中,用户往往需要进行多维度的查询,现有的hbase无法有效的支持非主键查询。技术实现要素:本发明实施例的目的是提供一种分布式newsql数据库系统和数据查询方法,能有效支持二级索引,从而高效解决非主键查询需求。为实现上述目的,本发明实施例提供了一种分布式newsql数据库系统,包括;控制单元,用于以数据库接口的方式接入用户请求,并将所述用户请求发送给计划单元;还用于将查询结果返回用户;其中,所述用户请求包括查询条件,所述查询结果为根据所述查询条件所获得的查询结果;计划单元,用于解析所述用户请求,编译以及生成对应的执行计划;执行单元,用于根据执行计划,启动协同处理模块获取与所述用户请求的所述查询条件相对应的索引数据;并根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;并返回查询结果至所述控制单元;hbase单元,用于储存所述数据表和所述索引表,所述hbase单元还包括所述协同处理模块,用于根据所述查询条件查询索引表,获得相对应的所述索引数据。与现有技术相比,本发明公开的一种newsql数据库,通过控制单元用于以数据库接口的方式接入用户请求,并将用户请求发送给计划单元;通过计划单元解析用户请求,编译以及生成对应的执行计划;通过执行单元根据执行计划,启动协同处理模块根据查询条件查询索引表,获得相对应的索引数据;通过执行单元根据获取的索引数据查询数据表,从而获得对应的查询结果,并返回查询结果至控制单元;通过控制单元将查询结果返回至用户的技术方案,能够实现二级索引,解决了现有技术中无法有效的支持非主键查询的问题,满足了用户非主键查询的需求。进一步的,还包括:分布式事务管理器,用于当所述执行计划中涉及事务时,协调所述执行计划中的多方完成分布式事务管理。进一步的,所述hbase单元还包括hbaseapi接口,所述执行单元用于根据获取的所述索引数据通过所述hbaseapi接口查询数据表,从而获得对应的所述查询结果。进一步的,所述数据库接口为jdbc或odbc。本发明实施例还提供一种数据查询方法,基于本发明实施例所提供的一种分布式newsql数据库系统,包括:通过控制单元以数据库接口的方式接入用户请求,并将所述用户请求发送给计划单元;其中,所述用户请求包括查询条件;通过计划单元解析所述用户请求,编译以及生成对应的执行计划;通过执行单元根据执行计划,启动hbase单元的协同处理模块根据所述查询条件查询索引表,获得相对应的所述索引数据;通过所述执行单元根据获取的所述索引数据查询数据表,从而获得对应的查询结果;并返回查询结果至所述控制单元;其中,所述索引表和所述数据表均储存于所述hbase单元;通过所述控制单元将所述处理结果返回用户。与现有技术相比,本发明公开的一种数据查询方法,首先通过控制单元以数据库接口的方式接入用户请求,并将用户请求发送给计划单元;然后通过计划单元解析用户请求,编译以及生成对应的执行计划;接着,通过执行单元根据执行计划,启动协同处理模块根据查询条件查询索引表,获得相对应的索引数据;然后执行单元根据获取的索引数据查询数据表,从而获得对应的查询结果,并返回查询结果至控制单元;最后,控制单元将查询结果返回至用户的技术方案,能够实现二级索引,解决了现有技术中无法有效的支持非主键查询的问题。进一步的,通过分布式事务管理器当所述执行计划中涉及事务时,协调所述执行计划中的多方完成分布式事务管理。进一步的,所述执行单元查询所述数据表时通过所述hbase单元的hbaseapi接口查询数据表,从而获得对应的查询结果。进一步的,所述数据库接口为jdbc或odbc。附图说明图1是本发明实施例1提供的一种分布式newsql数据库系统的结构示意图;图2是本发明实施例2提供的一种数据查询方法的流程示意图;图3是本发明实施例2提供的一种数据查询方法的步骤s2中生成执行计划的流程示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。参见图1,图1是本发明实施例1提供的一种分布式newsql数据库系统的结构示意图,本实施例1具体包括下述结构:为实现上述目的,本发明实施例提供了一种分布式newsql数据库系统,包括;控制单元1,用于以数据库接口的方式接入用户请求,并将用户请求发送给计划单元2;还用于将查询结果返回用户;其中,用户请求包括查询条件,查询结果为根据查询条件所获得的查询结果;计划单元2,用于解析用户请求,编译以及生成对应的执行计划;执行单元3,用于根据执行计划,启动协同处理模块41获取与用户请求的查询条件相对应的索引数据;并根据获取的索引数据查询数据表,从而获得对应的查询结果;并返回查询结果至控制单元1;hbase单元4,用于储存数据表和索引表,hbase单元4单元包括协同处理模块41,用于根据查询条件查询索引表,获得相对应的索引数据。进一步的,还包括:分布式事务管理器5,用于当执行计划中涉及事务时,协调执行计划中的多方完成分布式事务管理。分布式事务管理器5利用java事务处理api(jta)实现分布式事务处理和事务管理;其中,jta,即javatransactionapi,jta允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。进一步的,hbase单元4还包括hbaseapi接口,执行单元3用于根据获取的索引数据通过hbaseapi接口查询数据表,从而获得对应的查询结果。进一步的,数据库接口为jdbc或odbc。其中,执行单元3通过协同处理模块41获取与用户请求的查询条件相对应的索引数据时,利用协同处理模块41的并行性,能够提高整体的查询速度。且当协同处理模块41获得索引数据后,hbase单元将索引数据返回给执行单元3,从而使执行单元3能够根据索引数据进一步查询数据表,以获得对应的查询结果。进一步的,控制单元1还连接一监视器,用于负责元数据管理以及用于监控底层hbaseregion的负载,避免特定的region负载过高,以及利用协同处理模块41重新分配region。另外,控制单元1还用于协调多个角色之间的数据通讯、管理整体流程。具体的,计划单元2用于接收到控制单元1的用户请求后,解析用户请求,并通过高速sql引擎编译sql,然后再生成执行计划。另外,执行单元2还用于执行计划生成后返回给控制单元1。而控制单元1在接收到执行计划后,还用于根据执行计划的内容判断是否需要分布式事务管理器5的介入,如果需要,则启动分布式事务管理器5。计划单元2用于生成执行计划的过程,具体包括:判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则对sql语句进行语法检查,若语法错误返回错误信息给用户,否则,对sql语句进行语义检查,若语义错误返回错误信息给用户,否则,对sql语句进行视图以及表达式转换,获得对应的转化结果;根据转换结果选择优化器,获得对应的优化器选择结果;根据优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;根据搜索路径生成执行计划,并输出执行计划。具体实施时,首先通过控制单元1以数据库接口的方式接入用户请求,并将用户请求发送给计划单元2;然后通过计划单元2解析用户请求,编译以及生成对应的执行计划;并将执行计划发送给控制单元1;接着,通过控制单元1根据执行计划的内容判断是否需要分布式事务管理器5的介入,如果需要,则启动分布式事务管理器5,通过分布式事务管理器5协调执行计划中的多方完成分布式事务管理;而执行单元3根据执行计划,启动hbase单元4的协同处理模块41,协同处理模块41根据查询条件查询索引表,获得相对应的索引数据;然后执行单元3根据获取的索引数据通过hbaseapi接口查询数据表,从而获得对应的查询结果,并返回查询结果至控制单元1;最后,控制单元1将查询结果返回至用户。本实施例所提供的分布式newsql数据库,能够在接入用户请求查询数据时,根据用户请求的查询条件先查询索引表获取索引数据,再查询数据表获取所需的数据字段作为查询结果返回,从而实现二级索引,高效解决非主键查询需求。参见图2,图2是本发明实施例2提供的一种数据查询方法的流程示意图;本实施例包括下述步骤:s1、通过控制单元1以数据库接口的方式接入用户请求,并将用户请求发送给计划单元2;其中,用户请求包括查询条件;s2、通过计划单元2解析用户请求,编译以及生成对应的执行计划;s3、通过执行单元3根据执行计划,启动hbase单元4的协同处理模块根据查询条件查询索引表,获得相对应的索引数据;s4、通过执行单元3根据获取的索引数据查询数据表,从而获得对应的查询结果,并返回查询结果至控制单元1;其中,索引表和数据表均储存于hbase单元4;s5、通过控制单元1将处理结果返回用户。进一步的,计划单元3完成执行计划生成后,将执行计划返回给控制单元2、通过分布式事务管理器当执行计划中涉及事务时,协调执行计划中的多方完成分布式事务管理。进一步的,执行单元3查询数据表时通过hbase单元4的hbaseapi接口查询数据表,从而获得对应的查询结果。进一步的,数据库接口为jdbc或odbc。其中,通过协同处理模块41获取与用户请求的查询条件相对应的索引数据时,利用协同处理模块41的并行性,能够提高整体的查询速度。且当协同处理模块41获得索引数据后,hbase单元将索引数据返回给执行单元3,从而使执行单元3能够根据索引数据进一步查询数据表,以获得对应的查询结果。具体的,通过计划单元2接收到控制单元1的用户请求后,解析用户请求,并通过高速sql引擎编译sql,然后再生成执行计划。另外,通过执行单元2还执行计划生成后返回给控制单元1。通过控制单元1还在接收到执行计划后,根据执行计划的内容判断是否需要分布式事务管理器5的介入,如果需要,则启动分布式事务管理器5。其中,参见图3,图3为步骤s2中通过计划单元2生成执行计划的流程示意图,具体包括:s201、判断共享缓存池中是否存在与sql语句相对应的预存sql语句,若是,则输出与sql语句对应的执行计划,若否,则s202、对sql语句进行语法检查,若语法错误返回错误信息给用户,否则,s203、对sql语句进行语义检查,若语义错误返回错误信息给用户,否则,s204、对sql语句进行视图以及表达式转换,获得对应的转化结果;s205、根据转换结果选择优化器,获得对应的优化器选择结果;s206、根据优化器选择结果选择对应的数据连接方式以及连接顺序;s207、根据连接方式和连接顺序选择搜索的路径;s208、根据搜索路径生成执行计划,并输出执行计划。具体实施时,首先,通过控制单元1以数据库接口的方式接入用户请求,并将用户请求发送给计划单元2;然后通过计划单元2解析用户请求,编译以及生成对应的执行计划;并将执行计划发送给控制单元1;接着,通过控制单元1根据执行计划的内容判断是否需要分布式事务管理器5的介入,如果需要,则启动分布式事务管理器5,通过分布式事务管理器5协调执行计划中的多方完成分布式事务管理;而执行单元3根据执行计划,启动hbase单元4的协同处理模块41,协同处理模块41根据查询条件查询索引表,获得相对应的索引数据;然后执行单元3根据获取的索引数据通过hbaseapi接口查询数据表,从而获得对应的查询结果,并返回查询结果至控制单元1;最后,控制单元1将查询结果返回至用户。本实施例所提供的数据查询方法,在接入用户请求查询数据时,根据用户请求的查询条件先查询索引表获取索引数据,再查询数据表获取所需的数据字段作为查询结果返回,从而实现二级索引,高效解决非主键查询需求。以上所述是本发明的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1