首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于Presto的SQL UPDATE方法及控制系统 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:南威软件股份有限公司

摘要:本发明属于信息检索技术领域,公开了一种基于Presto的SQLUPDATE方法及控制系统,通过修改SQL解释器,使Presto在语法上支持UPDATE操作,在接收UPDATE语句时生成相应的AST语法树,并按DELETE流程生成DELETE执行计划;复制DELETE执行计划将SET部分写入DELETE的执行计划节点中包装成UPDATE节点,最终由相应的连接器识别并进行更新操作。本发明由Presto接收并解析UPDATESQL请求并以DELETE流程为基础生成UPDATE流程,通过连接器对流程的识别,在最终操作数据时进行数据更新操作,从而达到UPDATESQL执行效果,实现数据更新。

主权项:1.一种基于Presto的SQLUPDATE方法,其特征在于,所述基于Presto的SQLUPDATE方法包括:修改SQL解释器,进行UPDATE语法操作;接收UPDATE语句,生成相应的AST语法树,并按DELETE流程生成DELETE执行计划;复制DELETE执行计划将SET部分写入DELETE的执行计划节点中,包装成UPDATE节点,最终由相应的连接器识别并进行更新操作。

全文数据:一种基于Presto的SQLUPDATE方法及控制系统技术领域本发明属于信息检索技术领域,尤其涉及一种基于Presto的SQLUPDATE方法及控制系统。背景技术目前,业内常用的现有技术是这样的:Presto是一个大数据的分布式SQL查询引擎。可对从数G到数P的大数据进行交互式的查询,查询的速度达到商业数据仓库的级别。它可以查询包括Hive、Cassandra甚至是一些商业的数据存储产品。单个Presto查询可合并来自多个数据源的数据进行统一分析。Presto是一个分布式系统,运行在集群环境中,完整的安装包括一个协调器coordinator和多个workers。查询通过例如PrestoCLI的客户端提交到协调器,协调器负责解析、分析和安排查询到不同的worker上执行。各worker节点通过相应的数据源连接器从各种数据源中读取数据。由于Presto官方设计时并不支持SQLUPDATE操作,因此当有更新需求时在Presto系统中就无法通过SQL实现。正常流程向Presto提交UPDATESQL时,由于官方原版的Presto没有更新功能,因此服务器直接返回不支持,由于现有技术的缺陷在于没有对表数据的更新功能,导致在实际使用中有数据更新的场景时需要直接对数据源进行操作,无法使用SQL且操作容易出错。综上所述,现有技术存在的问题是:现有官方Presto原版不支持UPDATE操作,导致在实际使用中有数据更新的场景时需要直接对数据源进行操作,无法使用SQL且操作容易出错。解决上述技术问题的难度:官方源码的说明文档太少,阅读理解源码难度较大;源码代码量大,需要改动的地方较多;需要保证新加入的模块对原有各模块功能的兼容性等。更主要是难度是创新。解决上述技术问题的意义:本发明提出了一种在Presto上执行UPDATESQL进行表数据更新的实现方法,用于补充官方版本的功能不足,是从“没有”到“有”的过程。发明内容针对现有技术存在的问题,本发明提供了一种基于Presto的SQLUPDATE方法及控制系统。本发明为现有技术提供了对表数据更新的功能,同时提出了一种实现思路本发明是这样实现的,一种基于Presto的SQLUPDATE方法,包括:通过修改SQL解释器,使Presto在语法上支持UPDATE操作,在接收UPDATE语句时生成相应的AST语法树,并按DELETE流程生成DELETE执行计划,复制DELETE执行计划将SET部分写入DELETE的执行计划节点中包装成UPDATE节点,最终由相应的连接器识别并进行更新操作。进一步,所述基于Presto的SQLUPDATE方法具体包括以下步骤:步骤一,修改SQL语法解析器parser项目,添加UPDATE语法解析内容,使presto在接收到UPDATE语句时能够解析并生成相应的AST语法树。步骤二,添加一种UPDATE执行计划节点。步骤三,UPDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id。步骤四,PDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id。步骤五,连接器以流程节点类型和SET内容识别出UPDATE,根据步骤四中获取的id和UPDATESQL中的SET内容,对数据进行更新操作。本发明另一目的在于提供一种实施所述的基于Presto的SQLUPDATE方法的基于Presto的SQLUPDATE控制系统。本发明另一目的在于提供一种基于Presto的SQLUPDATE程序,所述基于Presto的SQLUPDATE程序实现所述的基于Presto的SQLUPDATE方法。本发明另一目的在于提供一种实现所述的基于Presto的SQLUPDATE方法的信息数据处理终端。本发明另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于Presto的SQLUPDATE方法。综上所述,本发明的优点及积极效果为:软件版本执行updateempsetage=30wherename='sam';的效果结论原始版本Queryfailed:line1:1:mismatchedinput'update'.操作失败本发明版本UPDATE:1row操作成功*效果图见证明部分本发明通过扩展SQL语法解析器、扩展原版SQLDELETE流程等手段,使Presto支持SQLUPDATE操作;通过修改antlr4语法文件,创建UPDATE流程节点,执行DELETE流程,识别UPDATE操作和执行数据更新,实现SQLUPDATE操作。本发明由Presto接收并解析UPDATESQL请求并以DELETE流程为基础生成UPDATE流程,通过连接器对流程的识别,在最终操作数据时进行数据更新操作,从而达到UPDATESQL执行效果,实现数据更新。附图说明图1是本发明实施例提供的基于Presto的SQLUPDATE方法流程图。图2是本发明实施例提供的Presto系统集群的基本架构示意图。图3是本发明实施例提供的UPDATESQL在系统中的处理流程示意图。图4是本发明实施例提供的官方原始版本执行失败图。图5是本发明实施例提供的利用本发明版本执行成功图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。现有官方Presto原版不支持UPDATE操作,导致在实际使用中有数据更新的场景时需要直接对数据源进行操作,无法使用SQL且操作容易出错。为解决上述问题,下面结合附图对本发明的技术方案作详细描述。本发明实施例提供的基于Presto的SQLUPDATE方法包括:通过修改SQL解释器,使Presto在语法上支持UPDATE操作,在接收UPDATE语句时生成相应的AST语法树,并按DELETE流程生成DELETE执行计划,复制DELETE执行计划将SET部分写入DELETE的执行计划节点中包装成UPDATE节点,最终由相应的连接器识别并进行更新操作。如图1至图3所示,本发明实施例提供的基于Presto的SQLUPDATE方法具体包括以下步骤:S101,修改SQL语法解析器parser项目,添加UPDATE语法解析内容,使presto在接收到UPDATE语句时能够解析并生成相应的AST语法树。S102,添加一种UPDATE执行计划节点。S103,UPDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id。S104,PDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id。S105,连接器以流程节点类型和SET内容识别出UPDATE,根据步骤四中获取的id和UPDATESQL中的SET内容,对数据进行更新操作。下面结合具体实施例对本发明作进一步描述。实施例1:假设有一张表user,表中有两列,分别为name和pwd,表中有若干数据,每条数据都有唯一的id,当执行语句:updateusersetpwd='123'wherename='mar'。本发明为原本不支持update的presto提供update的语法和功能支持,具体步骤包括:1修改antlr4语法规则文件,添加update语法支持。2当服务器接收到updatesql时,解析并生成相应的AST语法树。3创建update执行计划结点,该节点继承delete执行计划结点,在该节点中添加set内容。4创建delete查询执行流程,将update执行计划节点放入流程中,按delete流程执行。5delete流程将name='mar'的所有数据的id都筛选出并发送给连接器进行数据删除操作。6当连接器处理数据删除操作时,再具体识别是否为update流程,如果是则更新相应的行,否则按原delete流程执行。本发明实施例提供的添加UPDATE执行计划节点,此种节点是DELETE执行计划节点的扩展,比DELETE节点只多出了column=value的内容,由于是DELETE节点的子类型,因此这种UPDATE节点兼容DELETE的执行流程。下面结合功能演示对本发明作进一步描述。以下为本发明的功能演示内容,流程为:创建一张包含3个字段的表,向表中插入3条数据,然后执行UPDATE语句对其中的一条数据进行更新,并查看更新结果。官方原始版本执行失败如图4。本发明版本执行成功如图5。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线例如同轴电缆、光纤、数字用户线DSL或无线例如红外、无线、微波等方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带、光介质例如,DVD、或者半导体介质例如固态硬盘SolidStateDiskSSD等。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

权利要求:1.一种基于Presto的SQLUPDATE方法,其特征在于,所述基于Presto的SQLUPDATE方法包括:修改SQL解释器,进行UPDATE语法操作;接收UPDATE语句,生成相应的AST语法树,并按DELETE流程生成DELETE执行计划;复制DELETE执行计划将SET部分写入DELETE的执行计划节点中,包装成UPDATE节点,最终由相应的连接器识别并进行更新操作。2.如权利要求1所述的基于Presto的SQLUPDATE方法,其特征在于,所述基于Presto的SQLUPDATE方法具体包括以下步骤:步骤一,修改SQL语法解析器parser项目,添加UPDATE语法解析内容,使presto在接收到UPDATE语句时能够解析并生成相应的AST语法树;步骤二,添加一种UPDATE执行计划节点;步骤三,UPDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id;步骤四,PDATE执行计划按DELETE流程执行,先由数据源连接向数据源读取数据,过滤出符合WHERE条件的数据,并获得这些数据的唯一标识id;步骤五,连接器以流程节点类型和SET内容识别出UPDATE,根据步骤四中获取的id和UPDATESQL中的SET内容,对数据进行更新操作。3.一种实施权利要求1所述的基于Presto的SQLUPDATE方法的基于Presto的SQLUPDATE控制系统。4.一种基于Presto的SQLUPDATE程序,其特征在于,所述基于Presto的SQLUPDATE程序实现权利要求1~2任意一项所述的基于Presto的SQLUPDATE方法。5.一种实现权利要求1~2任意一项所述的基于Presto的SQLUPDATE方法的信息数据处理终端。6.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-2任意一项所述的基于Presto的SQLUPDATE方法。

百度查询: 南威软件股份有限公司 一种基于Presto的SQL UPDATE方法及控制系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。