支持通过简单SQL调用中间件数据库特有功能的方法与流程

文档序号:11134032阅读:566来源:国知局
本发明涉及一种在分布式数据库中间件中调用底层异构数据库特有功能的方法。
背景技术
::随着计算机和信息技术的迅猛发展以及在各行业应用的日益普及化,人类已进入大数据时代,大数据的海量特性、异构性等“4V”特点对传统数据库技术带来了巨大挑战。为了弥补关系型数据库在处理大数据方面的不足,各种非关系型数据库应运而生。非关系型数据库在实现基础功能的前提下都在某一个或多个方面有着自己独特的优势,如MongDB在存储类型上支持文件存储,在功能上原生支持MapReduce,AggregationPipeline等操作。另一方面,伴随着数据规模的急剧增长,数据管理向分布式发展已成为趋势。传统的分布式数据库构造复杂,分布式管理集成于数据库本身,难以对现有的数据库系统进行整合,而分布式数据库中间件为用户提供了透明的构建数据库集群的方案,能够整合现有的单机集中式数据库,建立“伪分布式”系统架构,成为一种重要的海量数据管理解决方案。与此同时,分布式数据库中间件能够将不同类型的底层数据库和应用集成,若在底层将关系型数据库与NoSQL进行统一集成,将有望高效实现异构大数据管理。然而,目前在分布式数据库中间件中,无法直接调用不同类型底层节点的特有功能。用户若要调用则需要通过编程实现,代价通常较大,且对于用户而言门槛较高。如何为用户提供一个简洁明了的操作接口实现对各类型数据库功能的可定制化调用成为了一个迫切需要解决的问题。技术实现要素:本发明的目的是通过对SQL语句的功能扩展,在分布式数据库中间件中实现借助简单类SQL语句直接调用各数据库特有的功能以更好的发挥该数据库优势的效果。为了达到上述目的,本发明的技术方案是提供了一种支持通过简单SQL调用数据库特有MapReduce功能的方法,其特征在于,包括如下步骤:步骤1、架构搭建;在分布式数据库中间件中接入关系型数据库和NoSQL数据库;步骤2、索引文件创建,用户指定字段r与数据库db的对应关系,以“r:db”形式保存为索引文件;步骤3、数据分库存储,以列为单位按指定数据与节点的对应关系将数据存入对应不同类型节点数据库中,该步骤包括:步骤3.1、建表,检索索引文件中字段与数据库对应关系,基于字段构建作用于分库的建表子语句,进行路由分发;步骤3.2、插入数据,检索索引文件中字段与数据库对应关系,基于字段构建作用于分库的插入数据子语句,进行路由分发,完成数据插入;步骤4、查询扩展,根据精简和实用原则,设计调用指定方法的SQL语句;SQL语句设计为:SELECTexpression[ASoutput_name][,...]FROMfrom_item[(USINGMapReduceONcondition)]其中,expression表示字段名或一个表达式;from_item表示所要查询的表或NoSQL数据库中与表相对应的单位,如MongDB的COLLECTION;括号内USING标识指示使用的执行方法MapReduce;ON标识指示用户所限定的条件condition,通过设定与执行函数相对应的参数获得执行结果集;步骤5、查询解析,根据用户指定SQL语句进行方法的调用,系统在路由分发前对指定SQL语句进行解析,具体步骤如下:步骤5.1、指定关键字解析,判断当前SQL语句是否包含USING关键字,若是,则进行步骤5.2;否则,根据路由配置直接进行SQL语句的分发,以默认方式执行,得到结果;步骤5.2、执行方法解析,解析若包含则通过USING关键字获得执行方法名MapReduce,确定方法执行所调用的函数;步骤5.3、执行参数解析,通过ON关键字获得参数字符串,并从中解析得到参数键值对列表,同时解析待查表名,传入步骤5.2所确定调用的函数中;步骤5.4、返回结果类型解析,确定SQL语句所请求内容的最终返回形式,即步骤4所设计的查询语句中的expression;步骤6、路由绑定与分发,在MYCAT默认路由分发前进行路由绑定,检索索引文件,判断作用字段所在节点及数据库,将SQL语句与待执行节点绑定进行路由分发;步骤7、方法执行,通过函数调用执行脚本,获得结果并返回,具体包括:步骤7.1、函数调用,在步骤5.2所调用的函数中执行脚本函数,其执行步骤如下:步骤7.1.1、结果集映射,根据步骤5.3解析得到的执行参数设定相应类目,并选定规则通过map函数将结果集映射到对应类目中;步骤7.1.2、结果集规约,将步骤7.1.1得到的映射结果集按照步骤5.4解析的内容返回形式通过reduce函数进行规约,并得到函数执行结果集;步骤7.2、结果集返回,将步骤7.1.2规约结果集返回至函数调用处;步骤8、封装结果并返回,根据步骤5.4中获取的内容返回形式,设置表头信息,并将表头信息与返回结果内容对应依次封装为字节流的形式返回。优选地,所述步骤1采用开源数据库中间件MYCAT作为管理平台,进行搭建架构,包括以下步骤:步骤1.1、安装数据库,在单机或多机的环境下安装关系型数据库及NoSQL数据库;步骤1.2、搭建MYCAT中间件平台,在配置中将数据库添加至各个节点,并指定各节点数据库类型。优选地,所述步骤1.2包括:步骤1.2.1、安装MYCAT,通过将MYCAT开源代码导入ECLIPSE中完成软件的安装;步骤1.2.2、设置环境变量,将指定数据库访问所必须的JAR包通过ECLIPSE中BUILDPATH添加到系统运行环境中;步骤1.2.3、配置节点信息,向配置文件schema.xml中添加表table和节点dataNode信息,指定表table与节点dataNode的对应关系;添加垂直分片规则,并将待加入的数据库地址以及用户名密码信息添加到该配置文件中;优选地,所述步骤3.1包括:步骤3.1.1、获取配置信息,确定待操作表包含垂直分片配置;步骤3.1.2、解析拆分语句,读取索引文件并对语句属性进行解析,分别构建作用于分库的建表子语句;步骤3.1.3、路由分发,将步骤3.1.2中得到的子语句分别与配置对应类型的数据库绑定,并进行路由分发,完成创建表。本发明提供了一种通过分布式数据库中间件调用底层数据库特有功能的方法,其特点为用户可以通过简单的SQL语句指定需要操作的数据库以及该数据库特有的功能,以实现操作的便捷性和功能的可定制性。附图说明图1为异构数据存储的流程。具体实施方式为使本发明更明显易懂,兹以优选实施例作详细说明如下。本发明提供了一种支持通过简单SQL调用中间件数据库特有功能的方法,本发明针对多种异构数据库并存的分布式数据库环境下,用户不能通过统一平台以简单的方式操作指定NoSQL数据库特有执行方式的问题,提供给用户以简单类SQL语句,使其通过中间平台MYCAT可以直接调用MongDB节点数据库指定MapReduce功能的方法,提高了分布式数据库的灵活性,并为普通用户对数据库特有功能的使用提供了便捷途径。以MongDB下MapReduce的count操作为例,具体操作步骤为:步骤1、架构搭建,安装数据库,选择MYCAT作为分布式数据库管理平台,将数据库接入MYCAT中间件平台,该步骤包括:步骤1.1、数据库安装,在单机或多机的环境下安装MONGODB等数据库;步骤1.2、搭建MYCAT中间件平台,将步骤1.1MONGODB所在宿主机添加到节点配置中,并在该节点配置信息中添加MONGODB类型数据库及表信息,具体步骤如下;步骤1.2.1、安装MYCAT,通过将MYCAT开源代码导入ECLIPSE中完成软件的安装;步骤1.2.2、设置环境变量,将指定数据库访问所必须的JAR包通过ECLIPSE中BUILDPATH添加到系统运行环境中;步骤1.2.3、配置节点信息,向配置文件“schema.xml”中添加table(表)和dataNode(节点)信息,指定table与dataNode的对应关系。添加垂直分片规则,并将待加入的数据库地址以及用户名密码等信息添加到该配置文件中;步骤2、索引文件创建,用户指定字段r与数据库db的对应关系,以“r:db”形式保存为索引文件;步骤3、数据分库存储,以列为单位按指定数据与节点的对应关系将数据存入对应不同类型节点数据库中,该步骤包括:步骤3.1、建表,检索索引文件中字段与数据库对应关系,基于字段构建作用于分库的建表子语句,进行路由分发,该步骤包括:步骤3.1.1、获取配置信息,确定待操作表包含垂直分片配置;步骤3.1.2、解析拆分语句,读取索引文件并对语句属性进行解析,分别构建作用于分库的建表子语句;步骤3.1.3、路由分发,将步骤3.1.2中得到的子语句分别与配置对应类型的数据库绑定,并进行路由分发,完成创建表;步骤3.2、插入数据,检索索引文件中字段与数据库对应关系,基于字段构建作用于分库的插入数据子语句,进行路由分发,完成数据插入;以建表语句为例,展示异构数据存储的流程如图1所示,其中索引为步骤2创建的索引文件。步骤4、查询扩展,MongDB下MapReduce的count操作的查询语句如下所示:SELECTCOUNT(column)FROMfrom_item[(USINGMapReduceONLENGTH>3|CONTAIN=’str’)]该查询语句中expression为COUNT(column),即MapReduce所统计字段记录的计数;from_item表示NoSQL数据库中与表相对应的单位,在这里为MongDB的COLLECTION;括号内USING标识指示使用的执行方法MapReduce,即使用MapReduce执行count操作;ON标识指示用户所限定的条件condition,这里提供两种条件限制,分别为字段长度和包含字符串,详细说明如表1所示:PARAM名功能描述VALUE类型LENGTH指定字段长度范围INTCONTAIN指定包含某字符串STRING表1步骤5、查询解析,根据步骤4中扩展语句,对执行方法名、参数及返回结果类型进行解析,具体步骤如下:步骤5.1、指定关键字解析,判断当前SQL语句包含USING关键字,于是获得执行方法名MapReduce,即调用函数MapReduce;步骤5.2、执行参数解析,通过ON关键字获得参数字符串LENGTH>3|CONTAIN=’str’,同时解析待查表名,传入步骤5.1所确定调用的函数中;步骤5.3、返回结果类型解析,确定SQL语句所请求内容的最终返回形式,即步骤4所设计的查询语句中的COUNT(column);步骤6、路由绑定与分发,在MYCAT默认路由分发前进行路由绑定,检索索引文件,判断作用字段所在数据库为MONGODB,将SQL语句与待执行节点绑定进行路由分发。步骤7、方法执行,通过函数调用执行脚本,获得结果并返回,具体包括:步骤7.1、函数调用,根据步骤5.1解析得到的方法名调用对应执行脚本,脚本执行步骤如下:步骤7.1.1、结果集映射,根据传入参数为字段长度LENGTH还是包含字符串CONTAIN,设定相应类目,并在查询过程中通过map函数将结果集映射到对应类目中。步骤7.1.2、结果集规约,将步骤7.1.1得到的映射结果集通过reduce函数按照步骤5.3解析的COUNT统计计数形式进行规约,并得到函数执行结果集。步骤7.2、结果集返回,将步骤7.1.2规约结果集返回至函数调用处;步骤8、封装结果并返回,根据步骤5.3解析的COUNT统计计数形式,设置表头信息,并将表头信息与返回结果内容对应依次封装为字节流的形式返回。由此可见,本技术对于用户操作水平要求不高,提供给用户的灵活性较大,且能够充分发挥底层数据库特有的功能。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1