一种基于Amoeba动态解析SQL注解的装置及方法

文档序号:6526004阅读:186来源:国知局
一种基于Amoeba动态解析SQL注解的装置及方法【专利摘要】本发明提供一种基于Amoeba动态解析SQL注解的装置,包括:Amoeba代理器和Amoeba路由器;所述Amoeba代理器,用于将接收的ASCA?SQL转换为标准SQL,并将标准SQL路由给Amoeba路由器;所述Amoeba路由器,用于接收到的标准SQL,通过SQL协议流转到对应的底层数据库并执行SQL。本发明还提供一种基于Amoeba动态解析SQL注解的方法。通过本发明提供的一种基于Amoeba动态解析SQL注解的装置及方法,可以在不影响原生SQL的前提下,解决分布式SQL的不足,丰富SQL函数,扩展SQL接口。【专利说明】—种基于Amoeba动态解析SQL注解的装置及方法【
技术领域
】[0001]本发明涉及计算机领域,特别是涉及一种基于Amoeba动态解析SQL注解的方法及装置ASCA(AmoebaSQLCommentAPI)。【
背景技术
】[0002]由于近年来,各行业的业务数据急剧上升,传统的集中式数据库管理模式已无法满足,对于系统的稳定性与扩展性造成了极大的问题。而分布式数据库管理模式可以很好的解决此类问题(读写分离,水平切分等)。[0003]无疑,水平切分数据库,可以降低单台机器的负载,同时最大限度的降低了宕机造成的损失。通过负载均衡策略,有效的降低了单台机器的访问负载,降低了宕机的可能性;通过集群方案,解决了数据库宕机带来的单点数据库不能访问的问题。通过读写分离策略更是最大限度了提高了应用中读取数据的速度和并发量。[0004]对开发来讲,所有的分布式数据技术点都无须关注细节。而Amoeba为水平切分技术提供了很好的解决方案。如:数据切分后复杂数据源整合,提供数据切分规则并降低数据切分规则给数据库带来的影响,降低数据库与客户端连接,读写分离路由(暂时不支持分库分表,Amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致)。[0005]由于Amoeba所提供的切分技术,都需要大量的数据配制,并且不具备SQL动态扩展以及动态指定数据分片规则、路由分发规则。所有规则都需提前在xml文件配制,Amoeba会根据传入的SQL(select*fromtablewhereid>100),以及SQL条件实现数据分片,路由分发匹配。这种场景只能根据SQL条件匹配,无法通过其它途径。再如:条数据采用水平切分技术入库,而此时的数据ID必须唯一,并且不能由某个数据库生成,需要获取全局ID。而这种场景说明需要扩展函数,以获取运行时所需要的额外数据。[0006]所以,有必要提供一种新的方案,可以提供一种动态解析SQL注解(如获取所需的额外数据例如全局ID)的方法。【
发明内容】[0007]本发明的目的在于提供一种基于Amoeba动态解析SQL注解的装置及方法,可以在不影响原生SQL的前提下,解决分布式SQL的不足,丰富SQL函数,扩展SQL接口,并具备简单,可扩展性,低侵入等优势。[0008]为解决以上技术问题,本发明提供一种基于Amoeba动态解析SQL注解的装置,包括:Amoeba代理器和Amoeba路由器;[0009]所述Amoeba代理器,用于将接收的ASCASQL转换为标准SQL,并将标准SQL路由给Amoeba路由器;[0010]所述Amoeba路由器,用于接收到的标准SQL,通过SQL协议流转到对应的底层数据库并执行SQL。[0011]进一步地,所述Amoeba代理器包括:语法解析器、模型转换器、数据处理器、路由分发器;其中:[0012]所述语法解析器,用于解析接收到的ASCASQL的语法,并将验证语法正确的ASCASQL转给所述模型转换器;[0013]所述模型转换器,用于将ASCASQL转换为ASCA数据模型;[0014]所述数据处理器,用于根据ASCA数据模型,定位到对应的实现功能,并将对应的结果替换成标准SQL;[0015]所述路由分发器,用于获取标准SQL,构造路由信息,并将处理好的标准SQL路由给Amoeba路由器。[0016]为解决以上技术问题,本发明提供一种基于Amoeba动态解析SQL注解的方法,包括:[0017]步骤1、Amoeba代理器将接收的ASCASQL转换为标准SQL,并将标准SQL路由给Amoeba路由器;[0018]步骤2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。[0019]进一步地,所述步骤I具体包括:[0020]步骤1.1、Amoeba代理将接收到的ASCASQL转发给语法解析器;[0021]步骤1.2、语法解析器验证ASCASQL语法,将验证语法正确的ASCASQL转给所述模型转换器;[0022]步骤1.3、模型处理器将ASCASQL转换成ASCA数据模型,将转换成功的ASCA数据模型交由数据处理器;[0023]步骤1.4、数据处理器通过ASCA数据模型定位到对应的实现功能,并将对应的结果替换成标准SQL;[0024]步骤1.5、路由分发器将处理好的标准SQL路由给Amoeba路由器。[0025]进一步地,所述步骤2具体包括:[0026]步骤2.1、Amoeba路由器接收路由分发器发送过来的标准SQL;[0027]步骤2.2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。[0028]与现有技术相比,本发明提供一种基于Amoeba动态解析SQL注解的装置及方法。该装置包含语法解析器、模型转换器、数据处理器、路由分发器四个模块。其中,语法解析器主要负责解析具有ASCA语法的SQL,验证语法的正确性;模型转换器将ASCASQL拼装成ASCA数据模型;数据处理器、根据ASCA数据模型,定位到对应的功能实现。并将对应的结果替换成标准SQL值;路由分发器将处理好的结果(标准SQL)发送给AmoebaSQL路由器。本发明提供一种基于Amoeba动态解析SQL注解的装置及方法,可以解决分布式SQL的不足,在不影响原生SQL的前提下,丰富SQL函数,扩展SQL接口,并具备简单,可扩展性,低侵入等优势;灵活使用ASCA,可方便的实现Amoeba分片,路由等功能。【专利附图】【附图说明】[0029]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:[0030]图1是本发明提供一种基于Amoeba动态解析SQL注解的装置的结构示意图。[0031]图2是本发明提供一种基于Amoeba动态解析SQL注解的装置的职责功能图。[0032]图3是本发明提供一种基于Amoeba动态解析SQL注解的方法流程图。【具体实施方式】[0033]为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。[0034]如图1所示,本发明提供一种基于Amoeba动态解析SQL注解的装置,包括:Amoeba代理器10和Amoeba路由器20。其中:[0035]Amoeba代理器10,用于解析验证具有ASCA语法的SQL,并将ASCASQL转换为ASCA数据模型,根据ASCA数据模型,定位到对应的功能实现,并将对应的结果替换成标准SQL,并将标准SQL发送给AmoebaSQL路由器20。其包括:语法解析器12、模型转换器14、数据处理器16、路由分发器18;当ASCASQL传入给代理器,会由上到下依次执行。其中:[0036]该语法解析器12,用于解析接收到的ASCASQL的语法,验证语法的正确性,并将验证语法正确的ASCASQL转给所述模型转换器。[0037]该模型转换器14,用于将该语法解析器12转送过来的ASCASQL转换为ASCA数据模型。[0038]该数据处理器16,用于根据该模型转换器14的ASCA数据模型,定位到对应的功能实现,并将对应的结果替换成标准SQL。[0039]该路由分发器18,用于获取标准SQL,构造路由信息,并将处理好的结果(标准SQL)路由给Amoeba路由器20。[0040]该Amoeba路由器20,用于接收该Amoeba代理器10发送过来的已处理好的标准SQL,通过SQL协议流转到对应的底层数据库并执行SQL。[0041]如图2所示,体现出本发明的基于Amoeba动态解析SQL注解的装置的整体数据的输入及输出,ASCASQL途中经过不同的处理模块,根据各模块自身职责的特点,最终转换成标准SQL的输出。[0042]模块的划分利于职责的明确,本图主要强调每个模块所对应的职责。其中:解析职责由语法解析器模块处理。转换职责则由模型转换器处理。处理职责则由数据处理器处理。路由职责则由路由分发器处理。Amoeba路由器以及SQL协议层职责则分别对应Amoeba路由器以及Amoeba路由器中的SQL协议。[0043]各职责之间都存在输入与输出,将输入交由职责器则生产出该职责处理后所对应的输出。经过不断的输入,输出,以及各职责间的互替处理,最终将标准结果输出给底层数据库。[0044]如图3所示,本发明提供一种基于Amoeba动态解析SQL注解的方法,包括:[0045]步骤1、Amoeba代理器将接收的ASCASQL转换为标准SQL,并将标准SQL路由给Amoeba路由器。具体包括:[0046]步骤1.1、Amoeba代理接收ASCASQL(Insertintotable(id)values(table_s.next()/*!amoeba:tabIe_s.next()*/);),并将该ASCASQLl转发给语法解析器;[0047]步骤1.2、语法解析器验证ASCASQL语法的正确性,如果符合ASCASQL接口规范则转由模型处理器,即将验证语法正确的ASCASQL转给所述模型转换器;[0048]步骤1.3、模型处理器将/*!amoeba:tabIe_s.next()*/转换成ASCA数据模型,转换成功交由数据处理器。[0049]步骤1.4、数据处理器通过ASCA数据模型定位到对应的实现功能,此功能主要是获取全局序列;当数据处理器执行完后会替换相应的ASCASQL占位符,并翻译成标准SQL(Insertintotable(id)values(I);)。[0050]步骤1.5、路由分发器将处理好的标准SQL路由给Amoeba路由器。[0051]步骤2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。具体包括:[0052]步骤2.1、Amoeba路由器接收路由分发器发送过来的标准SQL;[0053]步骤2.2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。[0054]本发明提供一种基于Amoeba动态解析SQL注解的装置及方法。该装置包含语法解析器、模型转换器、数据处理器、路由分发器四个模块。其中,语法解析器主要负责解析具有ASCA语法的SQL,验证语法的正确性;模型转换器将ASCASQL拼装成ASCA数据模型;数据处理器、根据ASCA数据模型,定位到对应的功能实现。并将对应的结果替换成标准SQL值;路由分发器将处理好的结果(标准SQL)发送给AmoebaSQL路由器。本发明提供一种基于Amoeba动态解析SQL注解的装置及方法,可以解决分布式SQL的不足,在不影响原生SQL的前提下,扩展SQL接口,丰富SQL;灵活使用ASCA,可方便的实现Amoeba分片,路由等功能。[0055]上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。【权利要求】1.一种基于Amoeba动态解析SQL注解的装置,其特征在于,包括=Amoeba代理器和Amoeba路由器;所述Amoeba代理器,用于将接收的ASCASQL转换为标准SQL,并将标准SQL路由给Amoeba路由器;所述Amoeba路由器,用于接收到的标准SQL,通过SQL协议流转到对应的底层数据库并执行SQL。2.如权利要求1所述的装置,其特征在于,所述Amoeba代理器包括:语法解析器、模型转换器、数据处理器、路由分发器;其中:所述语法解析器,用于解析接收到的ASCASQL的语法,并将验证语法正确的ASCASQL转给所述模型转换器;所述模型转换器,用于将ASCASQL转换为ASCA数据模型;所述数据处理器,用于根据ASCA数据模型,定位到对应的实现功能,并将对应的结果替换成标准SQL;所述路由分发器,用于获取标准SQL,构造路由信息,并将处理好的标准SQL路由给Amoeba路由器。3.一种基于Amoeba动态解析SQL注解的方法,其特征在于,包括:步骤UAmoeba代理器将接收的ASCASQL转换为标准SQL,并将标准SQL路由给Amoeba路由器;步骤2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。4.如权利要求3所述的方法,其特征在于,所述步骤I具体包括:步骤1.UAmoeba代理将接收到的ASCASQL转发给语法解析器;步骤1.2、语法解析器验证ASCASQL语法,将验证语法正确的ASCASQL转给所述模型转换器;步骤1.3、模型处理器将ASCASQL转换成ASCA数据模型,将转换成功的ASCA数据模型交由数据处理器;步骤1.4、数据处理器通过ASCA数据模型定位到对应的实现功能,并将对应的结果替换成标准SQL;步骤1.5、路由分发器将处理好的标准SQL路由给Amoeba路由器。5.如权利要求4所述的方法,其特征在于,所述步骤2具体包括:步骤2.UAmoeba路由器接收路由分发器发送过来的标准SQL;步骤2.2、Amoeba路由器通过SQL协议流转到对应的底层数据库并执行SQL。【文档编号】G06F17/30GK103729433SQ201310737077【公开日】2014年4月16日申请日期:2013年12月27日优先权日:2013年12月27日【发明者】彭振民申请人:深圳市远行科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1