《基于分布式数据库的结构化数据查询方法.pdf》由会员分享,可在线阅读,更多相关《基于分布式数据库的结构化数据查询方法.pdf(7页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201310493187.9(22)申请日 2013.10.18G06F 17/30(2006.01)(71)申请人上海宝信软件股份有限公司地址 201203 上海市浦东新区张江高科技园区郭守敬路515号(72)发明人王剑虎 陆埜 樊国柱 王凯茹伍治平(74)专利代理机构上海汉声知识产权代理有限公司 31236代理人郭国中(54) 发明名称基于分布式数据库的结构化数据查询方法(57) 摘要本发明提供了一种基于分布式数据库的结构化数据查询方法,包括步骤:步骤1:本地解析是否存在Rowkey范围相关参数,获取Rowkey范围相关参数后通过HB。
2、ase的coprocessor框架向相应的RegionServer(RS)发出sql语句,其中,RS表示区域RS,RegionServer(RS)表示对区域RS的管理附服务和对响应客户端的读写请求;步骤2:每一个接受到的集群RS解析sql语句类型,根据不同的语句类型映射到不同的HBase操作对象。本发明的有益效果是为HBase提供了一种灵活快捷的结构化查询方法,使得原本系统能够更方便地从传统数据库移植到HBase上。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书1页 说明书4页 附图1页(10)申请公布号 CN 104462161 A(43)申请公布日。
3、 2015.03.25CN 104462161 A1/1页21.一种基于分布式数据库的结构化数据查询方法,其特征在于,包括如下步骤:步骤1:本地解析是否存在Rowkey范围相关参数,获取Rowkey范围相关参数后通过HBase的coprocessor框架向相应的RegionServer(RS)发出sql语句,其中,RS表示区域RS,RegionServer(RS)表示对区域RS的管理附服务和对响应客户端的读写请求;步骤2:每一个接受到的集群RS解析sql语句类型,根据不同的语句类型映射到不同的HBase操作对象。2.根据权利要求1所述的基于分布式数据库的结构化数据查询方法,其特征在于,所述步骤。
4、2,具体为:每一个接受到的集群RS解析sql语句类型 select,insert,update和delete,根据不同的语句类型映射到不同的HBase操作对象,其中,select对应scan对象,insert和 update对应List对象,delete对应Delete对象;其中,List表示HBase中Put对象的列表集合。3.根据权利要求1所述的基于分布式数据库的结构化数据查询方法,其特征在于,还包括如下步骤:步骤3:对于所有的值都用进行分割,如存在值包含则使用代替。4.根据权利要求3所述的基于分布式数据库的结构化数据查询方法,其特征在于,所述步骤3,具体为:所有值类型前指定一个可选的二元。
5、组postion,type,其中postion表示值所在位置,主要应用在 Select语句中,type表示改值的类型,这个二元组决定了该sql中字段转化成HBase原生对象的最终结果。5.根据权利要求4所述的基于分布式数据库的结构化数据查询方法,其特征在于,postion的可选值包括rowkey,key,value;type的可选值包括prefix,regex,string,Integer,Long,double。权 利 要 求 书CN 104462161 A1/4页3基于分布式数据库的结构化数据查询方法技术领域0001 本发明涉及数据库领域,尤其是HBase的结构化查询,具体地,涉及基于分布。
6、式数据库的结构化数据查询方法。背景技术0002 随着日益增长的数据量,传统关系数据库已经无法很好地满足数据处理的需求,即使采用数据库集群技术,也需要耗费大量资源,增加的能力也并非线性增长,且还会受制于规模限制。所以出现各种NoSQL(非关系型的数据库)数据库,其中比较有代表性就是基于ColumnFamily(列族)存储形式的HBase(Hadoop Database),因为收益于Hadoop平台的广泛应用,HBase也成为一个主流的NoSQL数据库。0003 HBase的特点就是没有固定schema(数据库对象的集合),所以这和有固定schema的传统关系数据库有很大区别,所以原本传统数据库中。
7、数据组织方式无法直接照搬到HBase中,且本身不带有类SQL(结构化查询语言,Structured Query Language)的查询语句,在使用和操作上有不小的难度。现有的Hive(建立在Hadoop上的数据仓库基础构架)提供了类似的SQL语句,但是它基于了MapReduce(编程模型,用于大规模数据集的并行运算),速度比较慢。0004 经检索发现如下相关专利文献。0005 申请号为201120121668.3、名称为搜索引擎性能测试系统的专利文献,其公开了一种搜索引擎性能测试系统,以解决每次测试时都需要重新建立索引和查询请求从而耗费的处理资源较大的问题。系统包括:存储器,用于存储预先指定。
8、的结构化数据和查询请求;搜索引擎服务器,连接于存储器,从存储器中获取进行搜索引擎性能测试的查询请求,并根据获取的查询请求在存储器存储的结构化数据中搜索与查询请求相匹配的结构化数据;搜索引擎性能测试装置,连接于搜索引擎服务器,用于根据从搜索引擎服务器获取的性能指标确定搜索引擎性能。但其速度较慢。发明内容0006 针对上述现有技术中的缺陷,本发明的目的是提供一种基于分布式数据库的结构化数据查询方法,要解决的技术问题是提供一种方法使得HBase能够支持一种扩展性SQL的结构化查询,将SQL转化成HBase的NaiveAPI(以二进制方式,函式库(DLL)直接开放的应用程式开发接口(Applicati。
9、on Programming Interface),可以直接由C/C+来呼叫存取使用),方便了HBase的使用同时提供了更快的速度。0007 根据本发明提供的基于分布式数据库的结构化数据查询方法,包括如下步骤:0008 步骤1:本地解析是否存在Rowkey范围相关参数,获取Rowkey范围相关参数后通过HBase的coprocessor框架向相应的RegionServer(RS)发出sql语句,其中,RS表示区域RS,RegionServer(RS)表示对区域RS的管理附服务和对响应客户端的读写请求;0009 步骤2:每一个接受到的集群RS解析sql语句类型,根据不同的语句类型映射到说 明 书。
10、CN 104462161 A2/4页4不同的HBase操作对象。0010 优选地,所述步骤2,具体为:0011 每一个接受到的集群RS解析sql语句类型 select,insert,update和delete,根据不同的语句类型映射到不同的HBase操作对象,其中,select对应scan对象,insert和 update对应List对象,delete对应Delete对象;其中,List表示HBase中Put对象的列表集合。0012 优选地,还包括如下步骤:0013 步骤3:对于所有的值都用进行分割,如存在值包含则使用代替。0014 优选地,所述步骤3,具体为:0015 所有值类型前指定一个可。
11、选的二元组postion,type,其中postion表示值所在位置,主要应用在 Select语句中,type表示改值的类型,这个二元组决定了该sql中字段转化成HBase原生对象的最终结果。0016 优选地,postion的可选值包括rowkey,key,value;type的可选值包括prefix,regex,string,Integer,Long,double。0017 与现有技术相比,本发明具有如下的有益效果:0018 由于采用了上述技术方案,本发明的有益效果是为HBase提供了一种灵活快捷的结构化查询方法,使得原本系统能够更方便地从传统数据库移植到HBase上。附图说明0019 通过。
12、阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:0020 图1为本发明的整体的架构示意图。具体实施方式0021 下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。0022 本发明基于的架构主要使用了HBase的coprocessor技术中Endpoint的框架,继承CoprocessorProtocol接口并定义sql的解析0023 主要包括以下步骤:0024 。
13、首先,本地解析是否存在Rowkey(行键)范围相关参数,获取Rowkey(行键)范围相关参数后通过HBase的coprocessor框架向相应的RegionServer(RS)发出sql语句。HBase中自动将表水平划分成“区域“(Region)。每一个区域由表中行的子集构成。而RegionServer则负责零个或多个region的管理以及响应客户端的读写请求。0025 其中,RS表示区域RS,RegionServer(RS)表示对区域RS的管理附服务和对响应客户端的读写请求;0026 其次,每一个接受到的集群RS解析sql语句类型select,insert,update和delete,根据不。
14、同的语句类型映射到不同的HBase操作对象,其中,select对应scan说 明 书CN 104462161 A3/4页5对象,insert和 update对应List对象,delete对应Delete对象;其中,List表示HBase中Put对象的列表集合;0027 再次,本发明的SQL为了更好的适应HBase特性,而进行了扩展,对于所有的值都用 进行分割,如有值包含 则使用代替。所有值类型前可以指定一个可选的二元组postion,type,其中postion为该值所在位置,主要应用在Select语句中,可选的值包括rowkey,key,value默认为value,type为改值的类型,可选。
15、为prefix,regex,string,Integer,Long,double等,这个二元组决定了该sql中字段转化成HBase原生对象的最终结果。当字段为返回结果字段时,由于HBase的特性,可以用来动态存储数据的位置有两个类型key和value,当指定字段为key类型时,则返回结果从ResultScanner中一个KV对象(KV对象是指HBase中的原始的key-value对象)中取出key值作为返回结果,而当postion值为“value“时,此种情况查询的值为默认返回值,即从KV对象中获取value值作为返回结果;当字段为条件字段时,则用于获取scan对象,若值为rowkey则配合类。
16、型来添加RowFilter,若为key值时配合运算符以及类型,添加相应的QualifierFilter(列过滤器),若为value时则根据条件添加构造相应的SingleColumnValueFilter,并添加到scan对象上。0028 在相应的Region(区)上执行该对象,把返回结果直接返回给client(客户端),client再次进行结果的整理,最后获得所需要的数据。0029 下面对应用本发明的日志系统改造的例子进行说明。0030 将原本关系数据库的日志存储系统改造成基于HBase存储,并提供sql查询方法。0031 原本的关系数据库包括日志的串接序列号(seqId),日志类型(type。
17、),日志时间(time),日志序号(id),以及日志的信息(info)。对其进行改造则每一条记录0032 Insert into Table(info:seqId,logs:$logId)0033 values($seqId,$type+$logInfo)rowkey=$time+$seqId其中$var需要通过实际数值代替,time为日志时间的反序,即Long.Max-timestamp;0034 则此时HBase的schema为如下所示0035 0036 此时查询所有字段的select语句为:selectInfo:seqId,key,Integerlogs:*,logs:*From Tab。
18、le0037 分析该sql,构造一个scan对象,对每一个字段分析,Info:seqId默认value字段,因为在查询字段处,则为scan增加一个columnFamily为Info:seqId,key,Integerlogs:*,从二元组分析得知,该字段为key类型,且为整数,则获取时从返回值KV对象中获取Key值,且值为Integer,读取时使用相关的类型函数进行专值,且同时为scan增加一个columnFamily为logs:*;说 明 书CN 104462161 A4/4页60038 一般的条件语句select Info:seqId From Table wherekey,Integer。
19、logs=10039 分析该sql,首先构造一个scan对象,where语句后跟随一个字段,发现该字段为key类型,且操作符为=号,构造一个QualifierFilter传入参数op为CompareFilter.CompareOp.EQUAL,0040 wac为new BinaryComparator(Bytes.toBytes(1),从而得到结果。0041 以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。说 明 书CN 104462161 A1/1页7图1说 明 书 附 图CN 104462161 A。