• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
    • / 15
    • 下载费用:30 金币  

    重庆时时彩最新开奖号: 用于分布式系统的执行过程化SQL语句的方法和设备.pdf

    关 键 词:
    用于 分布式 系统 执行 过程 SQL 语句 方法 设备
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201510530403.1

    申请日:

    2015.08.26

    公开号:

    CN106484706A

    公开日:

    2017.03.08

    当前法律状态:

    实审

    有效性:

    审中

    法律详情: 实质审查的生效IPC(主分类):G06F 17/30申请日:20150826|||公开
    IPC分类号: G06F17/30 主分类号: G06F17/30
    申请人: 星环信息科技(上海)有限公司
    发明人: 孙若曦
    地址: 200233 上海市徐汇区桂平路391号A座19层1902室
    优先权:
    专利代理机构: 上海百一领御专利代理事务所(普通合伙) 31243 代理人: 马育麟
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201510530403.1

    授权公告号:

    |||

    法律状态公告日:

    2017.05.03|||2017.03.08

    法律状态类型:

    实质审查的生效|||公开

    摘要

    本申请的目的是提供一种用于分布式系统的执行过程化SQL语句的方法,通过对过程化SQL语句进行词法分析和语法分析,以建立所述过程化SQL语句的中间表示;对所述中间表示进行语义分析,以转化为若干执行块;逐块执行所述执行块。本申请所述方法和设备增强了大数据平台上的SQL语言表达能力,使得用户可以在数据库层完成复杂的业务逻辑。通过与现有过程化SQL语言的语法兼容,使得现有应用迁移到大数据平台的成本大幅降低。

    权利要求书

    1.一种用于分布式系统的执行过程化SQL语句的方法,其中,所述
    方法包括:
    A对过程化SQL语句进行词法分析和语法分析,以建立所述过程化
    SQL语句的中间表示;
    B对所述中间表示进行语义分析,以转化为若干执行块,并逐块执行
    所述执行块。
    2.根据权利要求1所述的方法,其中,所述步骤B还包括:
    记录若干所述执行块之间的依赖关系;
    基于所述依赖关系,从起始的执行块起,依次执行所述执行块。
    3.根据权利要求1或2所述的方法,其中,所述过程化SQL语句包
    括若干非标准SQL语句。
    4.根据权利要求1或2所述的方法,其中,所述过程化SQL语句包
    括若干非标准SQL语句和若干标准SQL语句。
    5.根据权利要求4所述的方法,其中,所述步骤B包括:
    B1对所述过程化SQL语句进行语义分析,将所述非标准SQL语句
    的中间表示转化为待解释执行的执行块,将所述标准SQL语句的中间表
    示转化为标准SQL语句执行块;
    B2解释执行所述待解释执行的执行块;
    B3将所述标准SQL语句执行块发送给分布式系统的计算引擎进行执
    行。
    6.根据权利要求5所述的方法,其中,所述步骤B1包括:
    根据所述过程化SQL语句的中间表示,分析并记录所述中间表示的属
    性,所述属性包括参量、变量和类型;
    所述步骤B2包括:
    创建基于栈式的函数执行框架;
    在所述函数执行框架的栈中分配所述中间表示的属性;
    利用所述函数执行框架,逐块执行所述执行块。
    7.根据权利要求5或6所述的方法,其中,所述步骤B3还包括:
    分析所述标准SQL语句的中间表示是否用到其他中间表示的变量,
    若用到,则记录所述变量的名称和在标准SQL语句中的位置,并在执行
    到所述标准SQL语句执行块时,先获取所述变量的值,将所述变量的值
    替换为常量后存入标准SQL语句执行块。
    8.根据权利要求5至7中任一项所述的方法,其中,所述B还包括:
    将所述分布式系统的计算引擎所执行的结果存储于所述分布式系统
    的存储装置,以供后续执行块读取使用。
    9.根据权利要求5至8中任一项所述的方法,其中,所述待解释执行
    的执行块包括以下至少任一项:
    起止执行块、赋值语句执行块、控制语句执行块、读取执行块、调用
    执行块。
    10.一种用于分布式系统的执行过程化SQL语句的设备,其中,所述
    设备包括:
    第一装置,用于对过程化SQL语句进行词法分析和语法分析,以建
    立所述过程化SQL语句的中间表示;
    第二装置,用于对所述中间表示进行语义分析,以转化为若干执行块,
    并逐块执行所述执行块。
    11.根据权利要求10所述的设备,其中,所述第二装置还用于:
    记录若干所述执行块之间的依赖关系;
    基于所述依赖关系,从起始的执行块起,依次执行所述执行块。
    12.根据权利要求10或11所述的设备,其中,所述过程化SQL语句
    包括若干非标准SQL语句。
    13.根据权利要求10或11所述的设备,其中,所述过程化SQL语句
    包括若干非标准SQL语句和若干标准SQL语句。
    14.根据权利要求13所述的设备,其中,所述第二装置包括:
    第二一单元,用于对所述过程化SQL语句进行语义分析,将所述非
    标准SQL语句转化为待解释执行的执行块,将所述标准SQL语句转化为
    标准SQL语句执行块;
    第二二单元,用于解释执行所述待解释执行的执行块;
    第二三单元,用于将所述标准SQL语句执行块发送给分布式系统的
    计算引擎进行执行。
    15.根据权利要求14所述的设备,其中,所述第二一单元用于:
    根据所述过程化SQL语句的中间表示,分析并记录所述中间表示的属
    性,所述属性包括参量、变量和类型;
    所述第二二单元用于:
    创建基于栈式的函数执行框架;
    在所述函数执行框架的栈中分配所述中间表示的属性;
    利用所述函数执行框架,逐块执行所述执行块。
    16.根据权利要求14或15所述的设备,其中,所述第二三单元还用
    于:
    分析所述标准SQL语句的中间表示是否用到其他中间表示的变量,
    若用到,则记录所述变量的名称和在标准SQL语句中的位置,并在执行
    到所述标准SQL语句执行块时,先获取所述变量的值,将所述变量的值
    替换为常量后存入标准SQL语句执行块。
    17.根据权利要求14至15中任一项所述的设备,其中,所述第二装
    置还包括:
    第二五单元,用于将所述分布式系统的计算引擎所执行的结果存储于
    所述分布式系统的存储装置,以供后续执行块读取使用。
    18.根据权利要求14至17中任一项所述的设备,其中,所述待解释
    执行的执行块包括以下至少任一项:
    起止执行块、赋值语句执行块、控制语句执行块、读取执行块、调用
    执行块。

    说明书

    用于分布式系统的执行过程化SQL语句的方法和设备

    技术领域

    本申请涉及计算机领域,尤其涉及一种用于分布式系统的执行过程化
    SQL语句的技术。

    背景技术

    传统关系型数据库为数据库使用者提供了SQL(Structured Query
    Language,结构化查询语言)语言作为数据库操作的接口,几乎所有的数
    据库应用都是建立在SQL语言接口之上,而SQL语言的支持程度则是一
    个数据库系统是否健壮的最重要指标。

    随着企业业务的快速发展,大数据的处理需求成为了所有行业不可避
    免的问题。而现有的大数据平台对SQL语言的支持十分有限,同时也缺
    少很多对SQL语言的优化,更没有对过程化SQL语言的支持。这一局限
    极大的增加了传统应用向大数据平台的迁移成本,成为了传统应用迁移至
    大数据平台的最大难题。因此,增强在大数据平台上的SQL语言完整度,
    降低企业的迁移成本,是一个很有意义和挑战的课题。

    发明内容

    本申请的目的是提供一种用于分布式系统的执行过程化SQL语句的
    方法和设备,以解决现有大数据平台对SQL语言支持完整度的问题。

    根据本申请的一个方面提供的一种用于分布式系统的执行过程化
    SQL语句的方法,其中,A对过程化SQL语句进行词法分析和语法分析,
    以建立所述过程化SQL语句的中间表示;

    B对所述中间表示进行语义分析,以转化为若干执行块,并逐块执行
    所述执行块。

    进一步地,所述步骤B还包括:

    记录若干所述执行块之间的依赖关系;

    基于所述依赖关系,从起始的执行块起,依次执行所述执行块。

    进一步地,所述过程化SQL语句包括若干非标准SQL语句。

    进一步地,所述过程化SQL语句包括若干非标准SQL语句和若干标
    准SQL语句。

    进一步地,所述步骤B包括:

    B1对所述过程化SQL语句进行语义分析,将所述非标准SQL语句
    的中间表示转化为待解释执行的执行块,将所述标准SQL语句的中间表
    示转化为标准SQL语句执行块;

    B2解释执行所述待解释执行的执行块;

    B3将所述标准SQL语句执行块发送给分布式系统的计算引擎进行执
    行。

    进一步地,所述步骤B1包括:

    根据所述过程化SQL语句的中间表示,分析并记录所述中间表示的属
    性,所述属性包括参量、变量和类型;

    所述步骤B2包括:

    创建基于栈式的函数执行框架;

    在所述函数执行框架的栈中分配所述中间表示的属性;

    利用所述函数执行框架,逐块执行所述执行块。

    进一步地,所述步骤B3还包括:

    分析所述标准SQL语句的中间表示是否用到其他中间表示的变量,
    若用到,则记录所述变量的名称和在标准SQL语句中的位置,并在执行
    到所述标准SQL语句执行块时,先获取所述变量的值,将所述变量的值
    替换为常量后存入标准SQL语句执行块。

    进一步地,所述B还包括:

    将所述分布式系统的计算引擎所执行的结果存储于所述分布式系统
    的存储装置,以供后续执行块读取使用。

    进一步地,所述待解释执行的执行块包括以下至少任一项:

    起止执行块、赋值语句执行块、控制语句执行块、读取执行块、调用
    执行块。

    根据本申请另一方面提供的一种用于分布式系统的执行过程化SQL
    语句的设备,其中,所述设备包括:

    第一装置,用于对过程化SQL语句进行词法分析和语法分析,以建
    立所述过程化SQL语句的中间表示;

    第二装置,用于对所述中间表示进行语义分析,以转化为若干执行块,
    并逐块执行所述执行块。

    进一步地,所述第二装置还用于:

    记录若干所述执行块之间的依赖关系;

    基于所述依赖关系,从起始的执行块起,依次执行所述执行块。

    进一步地,所述过程化SQL语句包括若干非标准SQL语句。

    进一步地,所述过程化SQL语句包括若干非标准SQL语句和若干标
    准SQL语句。

    进一步地,所述第二装置包括:

    第二一单元,用于对所述过程化SQL语句进行语义分析,将所述非
    标准SQL语句转化为待解释执行的执行块,将所述标准SQL语句转化为
    标准SQL语句执行块;

    第二二单元,用于解释执行所述待解释执行的执行块;

    第二三单元,用于将所述标准SQL语句执行块发送给分布式系统的
    计算引擎进行执行。

    进一步地,所述第二一单元用于:

    根据所述过程化SQL语句的中间表示,分析并记录所述中间表示的属
    性,所述属性包括参量、变量和类型;

    所述第二二单元用于:

    创建基于栈式的函数执行框架;

    在所述函数执行框架的栈中分配所述中间表示的属性;

    利用所述函数执行框架,逐块执行所述执行块。

    进一步地,所述第二三单元还用于:

    分析所述标准SQL语句的中间表示是否用到其他中间表示的变量,
    若用到,则记录所述变量的名称和在标准SQL语句中的位置,并在执行
    到所述标准SQL语句执行块时,先获取所述变量的值,将所述变量的值
    替换为常量后存入标准SQL语句执行块。

    进一步地,所述第二装置还包括:

    第二五单元,用于将所述分布式系统的计算引擎所执行的结果存储于
    所述分布式系统的存储装置,以供后续执行块读取使用。

    进一步地,所述待解释执行的执行块包括以下至少任一项:

    起止执行块、赋值语句执行块、控制语句执行块、读取执行块、调用
    执行块。

    与现有技术相比,本申请通过提供了用于分布式系统的执行过程化
    SQL语句的方法和设备,对过程化SQL语句进行词法分析和语法分析,
    以建立所述过程化SQL语句的中间表示;对所述中间表示进行语义分析,
    以转化为若干执行块;逐块执行所述执行块。本申请所述方法和设备增强
    了大数据平台上的SQL语言表达能力,使得用户可以在数据库层完成复
    杂的业务逻辑。通过与现有过程化SQL语言的语法兼容,使得现有应用
    迁移到大数据平台的成本大幅降低。

    附图说明

    通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本
    申请的其它特征、目的和优点将会变得更明显:

    图1示出根据本申请一个方面的一种用于分布式系统的执行过程化
    SQL语句的方法流程图;

    图2示出根据本申请一具体实施例中的一种用于分布式系统的执行过
    程化SQL语句的中间表示的语法树示意图;

    图3示出根据本申请一具体实施例中的一种用于分布式系统的执行过
    程化SQL语句的执行块示意图;

    图4示出根据本申请一个方面的用于分布式系统的执行过程化SQL
    语句的设备示意图;

    附图中相同或相似的附图标记代表相同或相似的部件。

    具体实施方式

    下面结合附图对本申请作进一步详细描述。

    图1示出根据本申请一个方面的一种用于分布式系统的执行过程化
    SQL语句的方法流程图,结合图1,所述方法包括:步骤S11和步骤S12。

    其中,在所述步骤S11中,对过程化SQL语句进行词法分析和语法
    分析,以建立所述过程化SQL语句的中间表示;在所述步骤S12中,对
    所述中间表示进行语义分析,以转化为若干执行块,并逐块执行所述执行
    块。

    在此,所述过程化SQL语句来源可以包括用户设备的输入或通过
    JDBC(Java Data Base Connectivity,JAVA数据库连接)/ODBC(Open
    Database Connectivity,ODBC)标准接口来中间设备发送的请求等。所述
    过程化SQL语句可以包括若干非标准SQL语句,此外,所述过程化SQL
    语句还可以包括若干非标准SQL语句和若干标准SQL语句。

    其中,非标准SQL语句可以例如但不限于:起止语句(BEGIN/END)、
    控制语句(IF/ELSE)、赋值语句、循环语句、游标(CURSOR)、异常
    捕获等;所述标准SQL语句可以是DML(Data Manipulation Language,
    数据操纵语言命令)。

    首先,在所述步骤S11中,对过程化SQL语句进行词法分析和语法
    分析,以建立所述过程化SQL语句的中间表示。

    在所述步骤S11中,通过在标准SQL的词法分析器和语法分析器的
    基础上进行了扩展,在词法分析器和语法分析器中增加对过程化SQL语
    句的词法和语法的定义,使其能够在对过程化SQL语句进行词法分析和
    语法分析时,识别过程化SQL语句的特有关键词和语法结构,包括:函
    数和过程的定义;函数参数的定义;函数变量的定义,标量、集合和记录
    数据类型,赋值语句,条件分支语句,LOOP循环语句,FOR循环语句,
    FORALL循环语句,WHILE循环语句,CONTINUE语句,EXIT语句,
    返回语句,DML语句。例如,遇到关键词(Keyword)为select,非标准
    SQL语句,遇到关键词包括:Begin procedure statement……End,则识
    别为一个起止执行的中间语句(block statement)。

    在具体的实施例中,以下代码示例一中描述的过程化SQL语句包括:


    上述过程化SQL语句包括,开始:“BEGIN”、结束:“END”、
    如果:“IF”和否则:“ELS”的非标准SQL语句,以及从表格1中选择:
    “select*from table1”,从表格2中选择:“select*from table2”这两个
    标准SQL语句,代码示例一的过程化SQL语句表示:用于根据变量var
    值是否大于0来决定是从table1还是table2来做查询。

    接上例,词法分析器需要扩展为能够识别关键字BEGIN、END、IF、
    THEN、ELSE。语法分析器需要扩展为能够识别BEGIN、END、IF、THEN、
    ELSE等语句的语法结构。扩展之后的词法分析器和语法分析器能够将上
    例中的过程化SQL语句识别,形成图2所示的中间表示的语法树。

    接着,在所述步骤S12中,对所述中间表示进行语义分析,以转化为
    若干执行块,并逐块执行所述执行块。

    进一步地,在所述步骤S12中,还包括:记录若干所述执行块之间的
    依赖关系;基于所述依赖关系,从起始的执行块起,依次执行所述执行块。

    当所述过程化SQL只包括非标准SQL语句时,将过程化SQL语句全
    部转化为待解释执行的执行块,所述待解释执行的执行块可以包括以下至
    少任一项:赋值语句执行块、控制语句执行块(例如IF/ELSE、GOTO、
    LOOP、FOR、FORALL、WHILE/CONTINUE/EXIT)、读取执行块及调
    用执行块。

    当所述过程化SQL语句包括非标准SQL语句和标准SQL语句时,对
    所述过程化SQL语句进行语义分析,将所述非标准SQL语句转化为待解
    释执行的执行块,将所述标准SQL语句转化为标准SQL语句执行块。

    图3示出根据本申请一具体实施例中的一种用于分布式系统的执行过
    程化SQL语句的执行块示意图;接上例,将图2所示的中间表示转化为
    图3所示的执行块,其中,包括根执行块、条件判断执行块、表达式执行
    块、标准SQL语句执行块、变量访问执行块和常量访问执行块,并且所
    述执行块之间的连线关系即为其依赖关系,在执行时,从起始执行块
    (Begin)起,依此执行所述执行块。

    在执行过程中,所述步骤S12包括:步骤S121、步骤S122和步骤S123。

    所述步骤S121:对所述过程化SQL语句进行语义分析,将所述非标
    准SQL语句的中间表示转化为待解释执行的执行块,将所述标准SQL语
    句的中间表示转化为标准SQL语句执行块;

    所述步骤S122:解释执行所述待解释执行的执行块;

    所述步骤S123:将所述标准SQL语句执行块发送给分布式系统的计
    算引擎进行执行。

    进一步地,在所述步骤S121还包括:根据所述过程化SQL语句的中
    间表示,分析并记录所述中间表示的属性,所述属性包括参量、变量和类
    型;则在所述步骤S122根据所述中间表示的属性,利用基于栈式的函数
    执行框架执行所述执行块,包括:创建基于栈式的函数执行框架;在所述
    函数执行框架的栈中分配所述中间表示的属性;利用所述函数执行框架,
    逐块执行所述执行块。

    进一步地,所述步骤S123还包括:分析所述标准SQL语句的中间表
    示是否用到其他中间表示的变量,若用到,则记录所述变量的名称和在标
    准SQL语句中的位置,并在执行到所述标准SQL语句执行块时,先获取
    所述变量的值,将所述变量的值替换为常量后存入标准SQL语句执行块。
    随后将变量的值替换为常量的标准SQL语句执行块发送分布式系统的计
    算引擎进行执行。

    具体地,代码示例二如下:

    Declare

    Var int:=100

    Begin

    Select*from T where col<var

    End

    所述代码示例二描述了一个整型(int)的变量var,首先定义变量Var
    为100,开始执行从表格T中选择小于var的数据。在步骤S123中,首
    先通过语义分析,分析到标准SQL语句“Select*from T where col<var”
    用到其他中间表示的变量var,记录变量的名称为var和在标准SQL语句
    中的位置为小于号后;在执行到所述标准SQL语句执行块时,先获取所
    述变量var的值为100(执行至此的变量通常都已通过之前执行过程获得
    值的结果),将所述变量的值替换为常量100后存入标准SQL语句执行
    块(Select*from T where col<var的执行块),随后将变量的值替换为
    常量的标准SQL语句执行块发送分布式系统的计算引擎进行执行。

    通过交由分布式系统的计算引擎进行执行,能够提高数据处理效率,
    进而实现数据的实时处理,使得用户可以在数据库层完成复杂的业务逻
    辑,并且通过与现有过程化SQL语言的语法兼容,使得现有应用迁移到
    大数据平台的成本大幅降低。

    进一步地,所述步骤S12还包括:步骤S124,在所述步骤S124中,
    将所述分布式系统的计算引擎所执行的结果存储于所述分布式系统的存
    储装置,以供后续执行块读取使用。例如,游标(CURSOR)语句可以用
    于过程化SQL语句和标准SQL语句之间的数据调用,可以读取存储于所
    述分布式系统的存储装置的数据。

    具体地,如以下示例代码三所示:

    Declare

    cursor C is Select name from T//从T表中选name字段的一列数据

    Var_name string//定义本地变量

    Begin

    Open C//打开游标语句

    Fetch C into var_name//第一种情况,从游标C中获取一条数据到本地
    的变量Var_name

    ……

    Putline(var_name)//打印本地的Var_name

    示例代码三表示,定义游标C表示从T表中选name字段的一列数据,
    定义本地变量var_name,开始执行打开游标C,从游标C中获取一条数据
    到本地变量var_name中,此后本地变量var_name的数据。最后可以通过
    游标内部的状态确定是否已取完。

    此外,如以下示例代码四所示:

    Declare

    cursor C is Select name from T//从T表中选name字段的一列数据

    Var_name string//定义本地变量

    Begin

    Open C//打开游标语句

    Fetch C buck collect into本地数组//从游标C中获取所有数据到本
    地数组

    Limit 100//最大取100条

    示例代码四表示,定义游标C表示从T表中选name字段的一列数据,
    定义本地变量var_name,开始执行打开游标C,从游标C中获取所有数据
    到本地数组,可以限制最大取100条。最后可以通过游标内部的状态确定
    是否已取完。

    在步骤S124中,通过游标(CURSOR)语句可以将存储于分布式系
    统的存储装置中的数据读取,并未后续执行块在执行中使用。当然,本领
    域技术人员应当能够理解,所述步骤S124通过游标读取分布式系统的存
    储装置中的数据的方式仅为举例,其他能够读取方式适用于本申请的,也
    包含在本申请的思想范围之内。

    图4示出根据本申请一个方面的用于分布式系统的执行过程化SQL
    语句的设备示意图,结合图4,所述设备1包括:第一装置11和第二装置
    S12。

    其中,在所述第一装置11中,对过程化SQL语句进行词法分析和语
    法分析,以建立所述过程化SQL语句的中间表示;在所述第二装置12中,
    对所述中间表示进行语义分析,以转化为若干执行块并逐块执行所述执行
    块。

    在此,所述过程化SQL语句来源可以包括用户设备的输入或通过
    JDBC(Java Data Base Connectivity,JAVA数据库连接)/ODBC(Open
    Database Connectivity,ODBC)标准接口来中间设备发送的请求等。所述
    过程化SQL语句可以包括若干非标准SQL语句,此外,所述过程化SQL
    语句还可以包括若干非标准SQL语句和若干标准SQL语句。

    其中,非标准SQL语句可以例如但不限于:起止语句(BEGIN/END)、
    控制语句(IF/ELSE)、赋值语句、循环语句、游标、异常捕获等;所述
    标准SQL语句可以是DML(Data Manipulation Language,数据操纵语言
    命令)。

    首先,在所述第一装置11中,对过程化SQL语句进行词法分析和语
    法分析,以建立所述过程化SQL语句的中间表示。

    在所述第一装置11中,通过在标准SQL的词法分析器和语法分析器
    的基础上进行了扩展,在词法分析器和语法分析器中增加对过程化SQL
    语句的词法和语法的定义,使其能够在对过程化SQL语句进行词法分析
    和语法分析时,识别过程化SQL语句的特有关键词和语法结构,包括:
    函数和过程的定义;函数参数的定义;函数变量的定义,标量、集合和记
    录数据类型,赋值语句,条件分支语句,LOOP循环语句,FOR循环语句,
    FORALL循环语句,WHILE循环语句,CONTINUE语句,EXIT语句,
    返回语句,DML语句。例如,遇到关键词(Keyword)为select,非标准
    SQL语句,遇到关键词包括:Begin procedure statement……End,则识
    别为一个起止执行的中间语句(block statement)。

    在具体的实施例中,例如一段过程化SQL语句如下:


    上述过程化SQL语句包括,开始:“BEGIN”、结束:“END”、
    如果:“IF”和否则:“ELS”的非标准SQL语句,以及从表格1中选择:
    “select*from table1”,从表格2中选择:“select*from table2”这两个
    标准SQL语句,代码示例一的过程化SQL语句表示:用于根据变量var
    值是否大于0来决定是从table1还是table2来做查询。

    接上例,词法分析器需要扩展为能够识别关键字BEGIN、END、IF、
    THEN、ELSE。语法分析器需要扩展为能够识别BEGIN、END、IF、THEN、
    ELSE等语句的语法结构。扩展之后的词法分析器和语法分析器能够将上
    例中的过程化SQL语句识别,形成图2所示的中间表示的语法树。

    接着,在所述第二装置12中,对所述中间表示进行语义分析,以转
    化为若干执行块,并逐块执行所述执行块。

    进一步地,在第二装置12中,还包括:记录若干所述执行块之间的
    依赖关系;基于所述依赖关系,从起始的执行块起,依次执行所述执行块。

    当所述过程化SQL只包括非标准SQL语句时,将过程化SQL语句全
    部转化为待解释执行的执行块,所述待解释执行的执行块可以包括以下至
    少任一项:赋值语句执行块、控制语句执行块(例如IF/ELSE、GOTO、
    LOOP、FOR、FORALL、WHILE/CONTINUE/EXIT)、读取执行块及调
    用执行块。

    当所述过程化SQL语句包括非标准SQL语句和标准SQL语句时,对
    所述过程化SQL语句进行语义分析,将所述非标准SQL语句转化为待解
    释执行的执行块,将所述标准SQL语句转化为标准SQL语句执行块。

    图3示出根据本申请一具体实施例中的一种用于分布式系统的执行过
    程化SQL语句的执行块示意图;接上例,将图2所示的中间表示转化为
    图3所示的执行块,其中,包括根执行块、条件判断执行块、表达式执行
    块、标准SQL语句执行块、变量访问执行块和常量访问执行块。

    所述第二装置12包括:第二一单元121、第二二单元122和第二三单
    元123。

    所述第二一单元121用于:对所述过程化SQL语句进行语义分析,
    将所述非标准SQL语句的中间表示转化为待解释执行的执行块,将所述
    标准SQL语句的中间表示转化为标准SQL语句执行块;

    所述第二二单元122用于:解释执行所述待解释执行的执行块;

    所述第二三单元123用于:将所述标准SQL语句执行块发送给分布
    式系统的计算引擎进行执行。

    进一步地,在所述第二一单元121还包括:根据所述过程化SQL语句
    的中间表示,分析并记录所述中间表示的属性,所述属性包括参量、变量
    和类型;则在所述第二二单元122根据所述中间表示的属性,利用基于栈
    式的函数执行框架执行所述执行块,包括:创建基于栈式的函数执行框架;
    在所述函数执行框架的栈中分配所述中间表示的属性;利用所述函数执行
    框架,逐块执行所述执行块。

    进一步地,所述第二三单元123还包括:分析所述标准SQL语句的
    中间表示是否用到其他中间表示的变量,若用到,则记录所述变量的名称
    和在标准SQL语句中的位置,并在执行到所述标准SQL语句执行块时,
    先获取所述变量的值,将所述变量的值替换为常量后存入标准SQL语句
    执行块。随后将变量的值替换为常量的标准SQL语句执行块发送分布式
    系统的计算引擎进行执行。

    具体地,代码示例二如下:

    Declare

    Var int:=100

    Begin

    Select*from T where col<var

    End

    所述代码示例二描述了一个整型(int)的变量var,首先定义变量Var
    为100,开始执行从表格T中选择小于var的数据。在第二三单元123中,
    首先通过语义分析,分析到标准SQL语句“Select*from T where col<var”
    用到其他中间表示的变量var,记录变量的名称为var和在标准SQL语句
    中的位置为小于号后;在执行到所述标准SQL语句执行块时,先获取所
    述变量var的值为100(执行至此的变量通常都已通过之前执行过程获得
    值的结果),将所述变量的值替换为常量100后存入标准SQL语句执行
    块(Select*from T where col<var的执行块),随后将变量的值替换为
    常量的标准SQL语句执行块发送分布式系统的计算引擎进行执行。

    通过交由分布式系统的计算引擎进行执行,能够提高数据处理效率,
    进而实现数据的实时处理,使得用户可以在数据库层完成复杂的业务逻
    辑,并且通过与现有过程化SQL语言的语法兼容,使得现有应用迁移到
    大数据平台的成本大幅降低。

    进一步地,所述第二装置12还包括:第二四单元124,所述第二四单
    元124用于,将所述分布式系统的计算引擎所执行的结果存储于所述分布
    式系统的存储装置,以供后续执行块读取使用。例如,游标(CURSOR)
    语句可以用于过程化SQL语句和标准SQL语句之间的数据调用,可以读
    取存储于所述分布式系统的存储装置的数据。

    具体地,如以下示例代码三所示:

    Declare

    cursor C is Select name from T//从T表中选name字段的一列数据

    Var_name string//定义本地变量

    Begin

    Open C//打开游标语句

    Fetch C into var_name//第一种情况,从游标C中获取一条数据到本地
    的变量Var_name

    ……

    Putline(var_name)//打印本地的Var_name

    示例代码三表示,定义游标C表示从T表中选name字段的一列数据,
    定义本地变量var_name,开始执行打开游标C,从游标C中获取一条数据
    到本地变量var_name中,此后本地变量var_name的数据。最后可以通过
    游标内部的状态确定是否已取完。

    此外,如以下示例代码四所示:

    Declare

    cursor C is Select name from T//从T表中选name字段的一列数据

    Var_name string//定义本地变量

    Begin

    Open C//打开游标语句

    Fetch C buck collect into本地数组//从游标C中获取所有数据到本
    地数组

    Limit 100//最大取100条

    示例代码四表示,定义游标C表示从T表中选name字段的一列数据,
    定义本地变量var_name,开始执行打开游标C,从游标C中获取所有数据
    到本地数组,可以限制最大取100条。最后可以通过游标内部的状态确定
    是否已取完。

    第二四单元124通过游标(CURSOR)语句可以将存储于分布式系统
    的存储装置中的数据读取,并为后续执行块在执行中使用。当然,本领域
    技术人员应当能够理解,所述第二四单元124通过游标读取分布式系统的
    存储装置中的数据的方式仅为举例,其他能够读取方式适用于本申请的,
    也包含在本申请的思想范围之内。

    与现有技术相比,本申请通过提供了用于分布式系统的执行过程化
    SQL语句的方法和设备,对过程化SQL语句进行词法分析和语法分析,
    以建立所述过程化SQL语句的中间表示;对所述中间表示进行语义分析,
    以转化为若干执行块;逐块执行所述执行块。本申请所述方法和设备增强
    了大数据平台上的SQL语言表达能力,使得用户可以在数据库层完成复
    杂的业务逻辑。通过与现有过程化SQL语言的语法兼容,使得现有应用
    迁移到大数据平台的成本大幅降低。

    需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,
    例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬
    件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行
    以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数
    据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁
    或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用
    硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

    另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序
    指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据
    本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存
    储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中
    的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的
    工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包
    括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其
    中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根
    据本申请的多个实施例的方法和/或技术方案。

    对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细
    节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体
    形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性
    的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限
    定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括
    在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要
    求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装
    置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件
    或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定
    的顺序。

    关于本文
    本文标题:用于分布式系统的执行过程化SQL语句的方法和设备.pdf
    链接地址://www.4mum.com.cn/p-6004859.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    [email protected] 2017-2018 www.4mum.com.cn网站版权所有
    经营许可证编号:粤ICP备17046363号-1 
     


    收起
    展开
  • 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 2019-05-13
  • 银保监会新规剑指大企业多头融资和过度融资 2019-05-12
  • 韩国再提4国联合申办世界杯 中国网友无视:我们自己来 2019-05-11
  • 中国人为什么一定要买房? 2019-05-11
  • 十九大精神进校园:风正扬帆当有为 勇做时代弄潮儿 2019-05-10
  • 粽叶飘香幸福邻里——廊坊市举办“我们的节日·端午”主题活动 2019-05-09
  • 太原设禁鸣路段 设备在测试中 2019-05-09
  • 拜耳医药保健有限公司获第十二届人民企业社会责任奖年度企业奖 2019-05-08
  • “港独”没出路!“梁天琦们”该醒醒了 2019-05-07
  • 陈卫平:中国文化内涵包含三方面 文化复兴表现在其中 2019-05-06
  • 人民日报客户端辟谣:“合成军装照”产品请放心使用 2019-05-05
  • 【十九大·理论新视野】为什么要“建设现代化经济体系”?   2019-05-04
  • 聚焦2017年乌鲁木齐市老城区改造提升工程 2019-05-04
  • 【专家谈】上合组织——构建区域命运共同体的有力实践者 2019-05-03
  • 【华商侃车NO.192】 亲!楼市火爆,别忘了买车位啊! 2019-05-03
  • 携程股票 股票行情实时查询 贵州茅台股票分析2017 股票行情601299 股票配资骗局 000878股票行情 美国股票指数比中国股票指数高 股票配资排名.选杨方配资给力 上证指数历年k线图 2008上证指数最高 森林狼炒股群 股票推荐每日一股 微博 四川股票配资哪里好 今日股票推荐公司 股票行情002216 今日股票推荐短线个股推荐 今日个股推荐