一种半结构化数据查询的方法和分布式NewSQL数据库系统技术方案

技术编号:16456469 阅读:28 留言:0更新日期:2017-10-25 20:52
本发明专利技术公开了一种半结构化数据查询的方法,包括:以JDCB/ODBC的接口方式接入用户请求,其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;解析所述用户请求,编译以及生成对应的执行计划;根据执行计划,获取与所述用户请求的所述查询条件相对应的索引数据;其中,所述索引表中已储存由所述JSON数据作为一个嵌套的类型所生成的倒排索引形式的索引数据;根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;其中,所述JSON数据作为整体进行存储;返回所述查询结果给用户。本发明专利技术还公开了一种分布式NewSQL数据库系统。本发明专利技术实现JSON格式的数据查询,解决处理半结构化数据时效果及性能不佳的问题。

A semi structured data query method and distributed NewSQL database system

The invention discloses a method for querying semistructured data, including: JDCB/ODBC interface access to user requests, which the user request includes the need JSON data query, the query results for JSON data based on the query conditions obtained; analyzing the user requests, and compile to generate the corresponding execution plan; according to the plan, the index data acquisition request and the user of the query corresponding to the condition; among them, the index table is stored in the index data of inverted index in the form of a nested type generated by the JSON as the data according to the data in the table; the index of data acquisition to obtain the corresponding query, the query results; among them, the JSON data are stored as a whole; return the query results to the user. The invention also discloses a distributed NewSQL database system. The invention realizes data inquiry in JSON format and solves the problem of poor effect and poor performance when dealing with semi structured data.

【技术实现步骤摘要】
一种半结构化数据查询的方法和分布式NewSQL数据库系统
本专利技术涉及大数据
,尤其涉及一种半结构化数据查询的方法和分布式NewSQL数据库系统。
技术介绍
目前Hbase单元是Hadoop生态体系中最著名的分布式NoSQL数据库之一。Hbase单元主要组件包括HMaster和HRegionsever,为用户提供表格类型的数据模型,按主键范围划分为多个region,HMaster负责管理和分配region,HRegionserver负责region数据的读写。现有的Hbase单元存储的数据没有数据类型之分,均为byte数组,因此如若要存储JSON这种半结构化数据即在查询方面会存在一些问题。在Hbase单元要存储JSON格式数据,则常规会将整个JSON对象当作字符串存储。该方式存在如下缺陷:要过滤记录的时候,需要将所有的记录都读取出来然后在客户端进行过滤,在数据量较大的情况下该性能不能被接受。要更新记录的时候,需要将记录读取出来再针对具体的字段进行更新后重写入到Hbase单元进行覆盖。
技术实现思路
本专利技术实施例的目的是提供一种半结构化数据查询的方法和分布式NewSQL数据库系统,能实现JSON格式的数据查询,解决处理半结构化数据时效果以及性能不佳的问题。为实现上述目的,本专利技术实施例提供了一种半结构化数据查询的方法,适用于分布式NewSQL数据库系统,包括:以JDCB/ODBC的接口方式接入用户请求,其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;解析所述用户请求,编译以及生成对应的执行计划;根据执行计划,获取与所述用户请求的所述查询条件相对应的索引数据;其中,所述索引表中已储存由所述JSON数据作为一个嵌套的类型所生成的倒排索引形式的索引数据;根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;其中,所述JSON数据作为整体进行存储;返回所述查询结果给用户。进一步的,所述解析所述用户请求,编译以及生成对应的执行计划包括:判断共享缓存池中是否存在与所述SQL请求相对应的预存SQL语句,若是,则输出相对应的所述预存SQL语句对应的执行计划,若否,则,对所述SQL请求进行语法检查,若语法错误返回错误信息给用户,否则,对所述SQL请求进行语义检查,若语义错误返回错误信息给用户,否则,对所述SQL请求进行视图以及表达式转换,获得对应的转化结果;根据所述转换结果选择优化器,获得对应的优化器选择结果;根据所述优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;根据搜索路径生成执行计划,并输出执行计划。相应,本专利技术实施例还提供一种分布式NewSQL数据库系统,包括:JDCB/ODBC接口单元,用于与用户进行交互操作,包括接收用户请求,返回查询结果给用户;其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;master单元,用于接入JDCB/ODBC接口单元所接入的用户请求,并协调多个处理器之间的数据通讯以及管理整体流程,并将所述用户请求优先发送给SQLPlaner单元;master单元还用于所述查询结果返回JDCB/ODBC接口单元;SQLPlaner单元,用于解析所述用户请求,根据所述用户请求编译以及定制执行计划;worker单元,用于并行地执行所述计划,包括:根据执行计划,启动coprocessor模块获取与所述用户请求的所述查询条件相对应的索引数据,并,根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;还用于将所述Hbase单元的查询结果返回至所述master单元;Hbase单元,用于储存所述数据表和索引表;所述Hbase单元还包括所述coprocessor模块,其中,Hbase单元的底层增加JSON类型数据,所述JSON数据整体存储在底层HFile中;分布式事务管理器,用于当所述worker单元执行计划涉及事务时,协调多方完成分布式事务管理。进一步的,JDCB/ODBC接口单元还用于将所述用户请求转化SQL语句形式的SQL请求。进一步的,所述SQLPlaner单元用于:判断共享缓存池中是否存在与所述SQL请求相对应的预存SQL语句,若是,则输出相对应的所述预存SQL语句对应的执行计划,若否,则,对所述SQL请求进行语法检查,若语法错误返回错误信息给用户,否则,对所述SQL请求进行语义检查,若语义错误返回错误信息给用户,否则,对所述SQL请求进行视图以及表达式转换,获得对应的转化结果;根据所述转换结果选择优化器,获得对应的优化器选择结果;根据所述优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;根据搜索路径生成执行计划,并输出执行计划。进一步的,还包括:监视器,用于负责元数据管理,监控所述Hbase单元的Region的负载,以及通过所述Hbase单元的coprocessor模块重新分配Region;所述监视器与所述master单元连接。进一步的,所述监控所述Hbase单元的Region的负载,以及通过所述Hbase单元的coprocessor模块重新分配Region包括:接收所述Hbase单元的数据分布信息,接收所述master单元中的所述worker单元的负载信息,其中,所述负载信息包括所述worker单元的负载偏差值;将所述worker单元的负载偏差值与预设负载偏差阈值进行比较,若判定所述负载偏差值超过阀值,触发所述Hbase单元将命中率较高服务器上的Region和命中率较低服务器上的Region进行从新分配;获取每一Region的数据量,将每一所述Region的数据量与预设数据量阈值进行判断,若判定所述Region的数据量超过阀值,触发所述Hbase单元将超过预设数据量阈值的所述Region切分成两个。进一步的,所述JDCB/ODBC接口单元包括:JDBC应用程序模块,用于接收用户请求,以及调用JDBC对象方法以给出SQL语句,并用于提取结果返回用户;JDBC驱动程序管理器模块,用于为所述JDBC应用程序模块加载和调用JDBC驱动程序模块;JDBC驱动程序模块,用于执行所述JDBC对象方法的调用,发送用户请求所对应的SQL语句给底层的数据库,并将从所述底层的数据库获得的结果返回给JDBC应用程序模块。与现有技术相比,本专利技术提供的一种半结构化数据查询的方法和分布式NewSQL数据库系统,通过首先以JDCB/ODBC的接口方式接入用户请求,其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;解析所述用户请求,编译以及生成对应的执行计划;根据执行计划,获取与所述用户请求的所述查询条件相对应的索引数据;其中,所述索引表中已储存由所述JSON数据作为一个嵌套的类型所生成的倒排索引形式的索引数据;根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;其中,所述JSON数据作为整体进行存储;返回所述查询结果给用户的技术方案,能实现JSON格式的数据查询,解决处理半结构化数据时效果以及性能不佳的问题。附图说明图1是本专利技术实施例1提供的一本文档来自技高网...
一种半结构化数据查询的方法和分布式NewSQL数据库系统

【技术保护点】
一种半结构化数据查询的方法,其特征在于,适用于分布式NewSQL数据库系统,包括:以JDCB/ODBC的接口方式接入用户请求,其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;解析所述用户请求,编译以及生成对应的执行计划;根据执行计划,获取与所述用户请求的所述查询条件相对应的索引数据;其中,所述索引表中已储存由所述JSON数据作为一个嵌套的类型所生成的倒排索引形式的索引数据;根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;其中,所述JSON数据作为整体进行存储;返回所述查询结果给用户。

【技术特征摘要】
2016.09.21 CN 20161084239971.一种半结构化数据查询的方法,其特征在于,适用于分布式NewSQL数据库系统,包括:以JDCB/ODBC的接口方式接入用户请求,其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;解析所述用户请求,编译以及生成对应的执行计划;根据执行计划,获取与所述用户请求的所述查询条件相对应的索引数据;其中,所述索引表中已储存由所述JSON数据作为一个嵌套的类型所生成的倒排索引形式的索引数据;根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;其中,所述JSON数据作为整体进行存储;返回所述查询结果给用户。2.如权利要求1所述的一种半结构化数据查询的方法,其特征在于,还包括:将所述用户请求转化SQL语句形式的SQL请求。3.如权利要求2所述的一种半结构化数据查询的方法,其特征在于,所述解析所述用户请求,编译以及生成对应的执行计划包括:判断共享缓存池中是否存在与所述SQL请求相对应的预存SQL语句,若是,则输出相对应的所述预存SQL语句对应的执行计划,若否,则,对所述SQL请求进行语法检查,若语法错误返回错误信息给用户,否则,对所述SQL请求进行语义检查,若语义错误返回错误信息给用户,否则,对所述SQL请求进行视图以及表达式转换,获得对应的转化结果;根据所述转换结果选择优化器,获得对应的优化器选择结果;根据所述优化器选择结果选择对应的数据连接方式以及连接顺序;根据连接方式和连接顺序选择搜索的路径;根据搜索路径生成执行计划,并输出执行计划。4.一种分布式NewSQL数据库系统,其特征在于,包括:JDCB/ODBC接口单元,用于与用户进行交互操作,包括接收用户请求,返回查询结果给用户;其中,所述用户请求包括需要查询的JSON数据的查询条件,所述查询结果为根据所述查询条件所获得的JSON数据;master单元,用于接入JDCB/ODBC接口单元所接入的用户请求,并协调多个处理器之间的数据通讯以及管理整体流程,并将所述用户请求优先发送给SQLPlaner单元;master单元还用于所述查询结果返回JDCB/ODBC接口单元;SQLPlaner单元,用于解析所述用户请求,根据所述用户请求编译以及定制执行计划;worker单元,用于并行地执行所述计划,包括:根据执行计划,启动coprocessor模块获取与所述用户请求的所述查询条件相对应的索引数据,并,根据获取的所述索引数据查询数据表,从而获得对应的所述查询结果;还用于将所述Hbase单元的查询结果返回至所述master单元;Hbase单元,用于储存所述数据表和索引表;所述Hbase单元还包括所述coprocessor模块,其中,Hbase单元的底...

【专利技术属性】
技术研发人员:晋彤
申请(专利权)人:广州特道信息科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1