• 四川郎酒股份有限公司获第十二届人民企业社会责任奖年度环保奖 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
    • / 29
    • 下载费用:30 金币  

    重庆时时彩技巧五星: 一种数据处理方法及装置.pdf

    关 键 词:
    一种 数据处理 方法 装置
      专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    摘要
    申请专利号:

    CN201410055711.9

    申请日:

    2014.02.19

    公开号:

    CN103838614A

    公开日:

    2014.06.04

    当前法律状态:

    授权

    有效性:

    有权

    法律详情: 授权|||实质审查的生效IPC(主分类):G06F 9/45申请日:20140219|||公开
    IPC分类号: G06F9/45; G06F17/30 主分类号: G06F9/45
    申请人: 华为技术有限公司
    发明人: 孙东旺; 文继军; 王传廷
    地址: 518129 广东省深圳市龙岗区坂田华为总部办公楼
    优先权:
    专利代理机构: 北京中博世达专利商标代理有限公司 11274 代理人: 申健
    PDF完整版下载: PDF下载
    法律状态
    申请(专利)号:

    CN201410055711.9

    授权公告号:

    ||||||

    法律状态公告日:

    2017.12.22|||2014.07.02|||2014.06.04

    法律状态类型:

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

    摘要

    本发明的实施例提供一种数据处理方法及装置,涉及计算机领域,能够有效提高数据库系统的扩展能力。所述数据处理方法,包括:接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;将所述机器码存储到数据库。本发明实施例提供的数据处理方法及装置用于处理数据。

    权利要求书

    权利要求书
    1.  一种数据处理方法,其特征在于,包括:
    接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;
    编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;
    根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;
    将所述机器码存储到数据库。

    2.  根据权利要求1所述的数据处理方法,其特征在于,在所述接收外部例行程序的源代码之前,所述方法还包括:
    接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求;
    根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限;
    若所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。

    3.  根据权利要求1或2所述的数据处理方法,其特征在于,所述编译所述源代码得到中间码之前,进一步包括:
    检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内;
    若所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。

    4.  根据权利要求1或2所述的数据处理方法,其特征在于,所述编译所述源代码得到所述中间码之前,进一步包括:
    检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除;
    若所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。

    5.  根据权利要求1至4任一项权利要求所述的数据处理方法,其特征在于,在所述编译所述源代码得到中间码之后,所述方法还包括:
    将所述中间码存储到所述数据库。

    6.  根据权利要求5所述的数据处理方法,其特征在于,在所述将所述中间码存储到所述数据库之后,所述方法还包括:
    生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码;
    生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。

    7.  根据权利要求1至6任一项权利要求所述的数据处理方法,其特征在于,在所述将所述机器码存储到数据库之后,所述方法还包括:
    接收第二用户设备发送的调用所述外部例行程序的请求;
    根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限;
    若所述第二用户设备拥有调用所述外部例行程序的权限,则运行所述机器码,以实现从所述数据库内调用所述外部例行程序。

    8.  一种数据处理装置,其特征在于,包括:
    第一接收单元,用于接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;
    编译单元,用于编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;
    转化单元,用于根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;
    存储单元,用于将所述机器码存储到数据库。

    9.  根据权利要求8所述的数据处理装置,其特征在于,所述数据处理装置还包括:
    第二接收单元,用于接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求;
    第一判断单元,用于根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限;
    所述第一接收单元具体用于在所述第一判断单元判断出所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。

    10.  根据权利要求8或9所述的数据处理装置,其特征在于,所述数据处理装置还包括:
    第一检查单元,用于检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内;
    所述编译单元具体用于在所述第一检查单元检查出所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。

    11.  根据权利要求8或9所述的数据处理装置,其特征在于,所述数据处理装置还包括:
    第二检查单元,用于检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除;
    所述编译单元具体用于在所述第二检查单元检查出所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。

    12.  根据权利要求8至11任一项权利要求所述的数据处理装置,其特征在于:
    所述存储单元还用于将所述中间码存储到所述数据库。

    13.  根据权利要求12所述的数据处理装置,其特征在于,所述数据处理装置还包括:
    第一生成单元,用于生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码;
    第二生成单元,用于生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。

    14.  根据权利要求8至13任一项权利要求所述的数据处理装置,其特征在于,还包括调用单元:
    所述第二接收单元还用于接收第二用户设备发送的调用所述外部例行程序的请求;
    所述第一判断单元还用于根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限;
    所述调用单元用于在所述第一判断单元判断出所述第二用户设备拥有调用所述外部例行程序的权限时,运行所述机器码,以实现从所述数据库内调用所述外部例行程序。

    说明书

    说明书一种数据处理方法及装置
    技术领域
    本发明涉及计算机领域,尤其涉及一种数据处理方法及装置。
    背景技术
    外部例行程序(External Routine)通常指使用高级编程语言编写,并可以嵌入SQL(Structured Query Language,结构化查询语言)语句的程序。外部例行程序的源代码经过编译后可以供数据库管理系统调用,以便于扩展数据库功能。数据库系统包括数据库和数据库管理系统,数据库用于存储数据,数据库管理系统用于对数据库的运行管理、维护等。通常情况下,数据库管理系统可以是结构化查询语言数据库管理系统(MySQL)等,数据库可以是结构化查询语言数据库(Sql Server)、甲骨文数据库(Oracle)等,数据库对高级编程语言提供广泛支持,所述高级编程语言可以是C语言、C++语言、JAVA语言、COBOL(Common Business Oriented Language,面向商业的通用语言)等。
    现有技术中,数据库系统可以通过内嵌数据库管理系统、内嵌扩展语言编译???,对使用高级编程语言编写的外部例行程序的源代码进行编译得到外部例行程序的目标代码,所述数据库管理系统可以是MySQL、Teradata等,所述扩展语言编译??榭梢允荄B2、Postgresql等。然后,根据用户设置的目标名称和目标地址将外部例行程序的目标代码存储到数据库,该目标名称用于唯一标识外部例行程序的目标代码,该目标地址用于标识外部例行程序的目标代码存储在数据库中的地址,以便于根据该目标名称和该目标地址调用所述外部例行程序的目标代码。也可以先通过高级编程语言的编程工具编写、编译外部例行程序的源代码后,然后根据用户设置的目标名称和目标地址将外部例行程序的目标代码复制到数据库,且需要将该目标名称和该目标地址等信息在数据库中注册,以便于数据库管理系统识别和调用外部例行程序的目标代码。
    但是,不同的运行平台的中央处理器不同,不同中央处理器的指令集也不同,所以高级编程语言编写的外部例行程序在不同的运行平 台上运行时需要不同的编译器来编译,得到适合在当前运行平台运行的外部例行程序的目标代码,所述运行平台为外部例行程序的目标代码运行时所需要的硬件和/或软件。所述指令集用于将外部例行程序转化为适合在运行平台上运行外部例行程序的目标代码。例如,当一外部例行程序编译成x86版本的目标代码时,所述目标代码只能在x86指令集的中央处理器上运行。因此,数据库系统中需要内嵌不同的编译器来编译外部例行程序的源代码,对数据库系统的扩展能力受到限制,且在编译外部例行程序时存在安全问题。
    发明内容
    本发明的实施例提供一种数据处理方法及装置,能够有效提高数据库系统的扩展能力。
    为达到上述目的,本发明的实施例采用如下技术方案:
    第一方面,提供一种数据处理方法,包括:
    接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;
    编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;
    根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;
    将所述机器码存储到数据库。
    结合第一方面,在第一种可实现方式中,在所述接收外部例行程序的源代码之前,所述方法还包括:
    接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求;
    根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限;
    若所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。
    结合第一方面或第一方面的第一种可实现方式,在第二种可实现方式中,所述编译所述源代码得到中间码之前,进一步包括:
    检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内;
    若所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。
    结合第一方面或第一方面的第一种可实现方式,在第三种可实现方式中,所述编译所述源代码得到所述中间码之前,进一步包括:
    检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除;
    若所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。
    结合第一方面或者第一方面的第一种可实现方式至第三种可实现方式中的任意一种,在第四种可实现方式中,在所述编译所述源代码得到中间码之后,所述方法还包括:
    将所述中间码存储到所述数据库。
    结合第一方面的第四种可实现方式,在第五种可实现方式中,在所述将所述中间码存储到所述数据库之后,所述方法还包括:
    生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码;
    生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。
    结合第一方面或者第一方面的第一种可实现方式至第五种可实现方式中任意一种,在第六种可实现方式中,在所述将所述机器码存储到数据库之后,所述方法还包括:
    接收第二用户设备发送的调用所述外部例行程序的请求;
    根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限;
    若所述第二用户设备拥有调用所述外部例行程序的权限,则运行所述机器码,以实现从所述数据库内调用所述外部例行程序。
    第二方面,提供一种数据处理装置,包括:
    第一接收单元,用于接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;
    编译单元,用于编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;
    转化单元,用于根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;
    存储单元,用于将所述机器码存储到数据库。
    结合第二方面,在第一种可实现方式中,所述数据处理装置还包括:
    第二接收单元,用于接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求;
    第一判断单元,用于根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限;
    所述第一接收单元具体用于在所述第一判断单元判断出所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。
    结合第二方面或第二方面的第一种可实现方式,在第二种可实现方式中,所述数据处理装置还包括:
    第一检查单元,用于检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内;
    所述编译单元具体用于在所述第一检查单元检查出所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。
    结合第二方面或第二方面的第一实现方式,在第三种可实现方式中,所述数据处理装置还包括:
    第二检查单元,用于检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除;
    所述编译单元具体用于在所述第二检查单元检查出所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。
    结合第二方面或者第二方面的第一种可实现方式至第三种可实现方式中的任意一种,在第四种可实现方式中,所述存储单元还用于将所述中间码存储到所述数据库。
    结合第二方面的第四种可实现方式,在第五种可实现方式中,所述数据处理装置还包括:
    第一生成单元,用于生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码;
    第二生成单元,用于生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。
    结合第二方面或者第二方面的第一种可实现方式至第五种可实现方式中的任意一种,在第六种可实现方式中,所述数据处理装置还包括调用单元:
    所述第二接收单元还用于接收第二用户设备发送的调用所述外部例行程序的请求;
    所述第一判断单元还用于根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限;
    所述调用单元用于在所述第一判断单元判断出所述第二用户设备拥有调用所述外部例行程序的权限时,运行所述机器码,以实现从所述数据库内调用所述外部例行程序。
    本发明的实施例提供一种数据处理方法及装置,所述数据处理方法,包括:接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写;编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流;根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码;将所述机器 码存储到数据库。这样一来,将接收到的外部例行程序的源代码编译得到中间码,相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力。
    附图说明
    为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
    图1为本发明实施例提供一种数据处理方法流程图;
    图1a为本发明实施例提供另一种数据处理方法流程图;
    图2为本发明实施例提供又一种数据处理方法流程图;
    图3为本发明实施例提供再一种数据处理方法流程图;
    图4为本发明实施例提供另再一种数据处理方法流程图;
    图5为本发明实施例提供一种数据处理装置结构示意图;
    图6a为本发明实施例提供另一种数据处理装置结构示意图;
    图6b为本发明实施例提供又一种数据处理装置结构示意图;
    图7为本发明实施例提供再一种数据处理装置结构示意图。
    具体实施方式
    下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例?;诒痉⒚髦械氖凳├?,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明?;さ姆段?。
    本发明实施例提供一种数据处理方法,如图1所示,包括:
    步骤104、接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写。
    步骤105、编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流。
    在编译外部例行程序的源代码时,首先,检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内,若所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码?;蛘?,编译所述源代码得到中间码还可以包括检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除,若所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码,使得任意的运行平台的虚拟机能够识别所述中间码。成功编译该源代码得到所述中间码之后,将该中间码存储到所述数据库,生成所述中间码的目标名称和目标地址,所述目标名称用于唯一标识所述中间码,所述目标地址用于标识该中间码在所述数据库中的地址。
    步骤106、根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码。
    指令集是存储在中央处理器内部,对中央处理器运算进行指导和优化的硬程序,指令集可以使中央处理器更高效地运行。
    步骤107、将所述机器码存储到数据库。
    生成所述机器码的目标名称和目标地址,所述目标名称用于唯一标识所述机器码,所述目标地址用于标识该机器码在所述数据库中的地址。
    这样一来,首先,接收外部例行程序的源代码,然后,编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流,相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该 运行平台上运行的机器码,有效地提高了数据库系统的扩展能力。
    本发明实施例提供一种数据处理方法,如图1a所示,包括:
    步骤111、接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求。
    步骤112、根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限。
    步骤113、若所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。
    若该第一用户设备拥有访问所述数据库的权限,才接收所述第一用户设备发送的外部例行程序的源代码,包括:解析所述外部例行程序的源代码的数据包,获得所述数据包的第一标识,所述第一标识用于标示所述数据包的源地址;判断所述数据包的第一标识是否是预先设置的标识,所述预先设置的标识用于标示所述第一用户设备的地址;若所述数据包的第一标识是预先设置的标识,才接收所述第一用户设备发送的数据包,所述数据包包括外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写,所述高级编程语言可以是C语言、C++语言、JAVA语言等。
    步骤114、接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写。
    步骤115、编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流。
    步骤116、根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码。
    步骤117、将所述机器码存储到数据库。
    这样一来,在接收外部例行程序的源代码之前,首先,接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求,然后,判断该第一用户设备拥有访问所述数据库的权限后,接收该第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库,有效地增强了数据 库的安全性,避免用户设备非法访问该数据库。
    本发明实施例提供一种数据处理方法,假设外部例行程序的源代码由C语言编写,如图2所示,包括:
    步骤201、接收第一用户设备发送的数据库访问请求。
    若第一用户为本地用户,第一用户可以通过第一用户设备向数据库发送数据库访问请求,所述第一用户设备发送的数据库访问请求包括用户名、登录密码和权限级别,该用户名为第一用户登录所述数据库时所使用的登录名称,该登录密码为第一用户登录所述数据库时所使用的登录密码,该权限级别为第一用户登录所述数据库时该第一用户能够对该数据库进行操作的等级,例如管理员、高级用户、中级用户或初级用户等权限级别对该数据库存在不同的操作权限。示例的,管理员可以在数据库中添加或删除用户,对该数据库中的源程序或对象等进行任何删除、增加或修改等编译操作,高级用户可以调用数据库中的源程序对数据库中的对象进行任何删除、增加或修改等编译操作,初级用户可以只能访问该数据库中的对象。
    若第一用户非本地用户,需要远程访问该数据库时,第一用户可以先通过第一用户设备向数据库所在的服务器发送访问请求,该访问请求包括数据库所在的服务器的IP(Internet Protocol,互联网协议)地址和端口号,成功访问数据库所在的服务器后,第一用户可以再通过第一用户设备向数据库发送数据库访问请求,此时该数据库访问请求包括用户名、登录密码和权限级别。
    需要说明的是,用户可以在磁盘操作系统DOS环境下通过命令输入的形式访问数据库,并可以通过命令输入的形式增加、删除或修改该数据库中的源程序或者数据;用户还可以在可视化的窗口界面下访问数据库。
    步骤202、根据数据库访问请求判断第一用户设备是否拥有访问数据库的权限。
    若第一用户设备没有访问数据库的权限,执行步骤2021,禁止第一用户设备访问数据库。
    若第一用户设备拥有访问数据库的权限,则执行步骤203。
    若第一用户没有在数据库注册,当第一用户通过第一用户设备访问该数据库时,数据库判断第一用户是该数据库的非法用户,则禁止第一用户通过第一用户设备访问所述数据库。
    若第一用户设备拥有访问数据库的权限,即第一用户通过第一用户设备在数据库中已经注册,当第一用户通过第一用户设备访问该数据库时,数据库判断第一用户是该数据库中的合法用户,则允许第一用户通过第一用户设备访问该数据库。
    具体的,若该第一用户设备拥有访问所述数据库的权限,才接收所述第一用户设备发送的外部例行程序的源代码,包括:解析所述外部例行程序的源代码的数据包,获得所述数据包的第一标识,所述第一标识用于标示所述数据包的源地址,即发送该数据包的用户设备的地址。判断所述数据包的第一标识是否是预先设置的标识,所述预先设置的标识用于标示所述第一用户设备的地址;若所述数据包的第一标识是预先设置的标识,才接收所述第一用户设备发送的数据包,所述数据包包括外部例行程序的源代码。
    步骤2021,禁止第一用户设备访问数据库。
    本发明实施例假设第一用户设备拥有访问数据库的权限,则执行步骤203。
    步骤203、接收所述第一用户设备发送的外部例行程序的源代码。
    步骤204、检查所述源代码访问数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内。
    若所述源代码访问数据库中对象的范围不在预先设置的访问数据库中对象的范围内,则执行步骤2041、终止编译所述源代码。
    例如,可能存在该源代码访问该数据库中对象包括禁止访问的对象,造成对该数据库对象的非法访问。假如所述源代码访问的对象为商业上的重要数据,则可能会导致重大商业机密泄露,造成严重的经济损失。若所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。
    具体的,首先,预先设置数据库中对象的权限级别,不同权限级别的对象的重要程度不同,即可以将所述对象的权限级别设置为机密、高级或低级等,例如,机密对象不可随意访问,只有具有机密权限的程序或用户才能访问。所述对象可以是数据库中的数据,也可以是将数据库中所存储的数据进行分类,划分成不同类型的对象,所述每类数据为一类对象,例如数据类型,信息类型等。然后,当数据库接收到外部例行程序的源代码后,对所述源代码进行编译时,检查该源程序访问数据库中的对象是否是预先设置的允许访问的数据库对象,若该源程序访问数据库中的对象是预先设置的允许访问的数据库对象,编译所述源代码得到所述中间码。若该源程序访问数据库中的对象是数据库预先设置的不允许访问的数据库对象,终止编译所述源代码。
    进一步的,若所述源代码访问数据库中对象的范围在预先设置的访问数据库中对象的范围内,则执行步骤205、检查所述源代码对数据库中对象的操作是否是预先设置的对数据库中对象的操作。
    步骤2041、终止编译所述源代码。
    本发明实施例假设所述源代码访问数据库中对象的范围在预先设置的访问数据库中对象的范围内,则执行步骤205。
    步骤205、检查所述源代码对数据库中对象的操作是否是预先设置的对数据库中对象的操作。
    若检查所述源代码对数据库中对象的操作不是预先设置的对数据库中对象的操作,则执行步骤2041、终止编译所述源代码。
    若检查所述源代码对数据库中对象的操作是预先设置的对数据库中对象的操作,则执行步骤206。
    具体的,首先,预先设置的对数据库中对象的操作的权限,所述操作包括对所述对象的修改、增加或删除等。即数据库中有的重要对象可以访问但不能对所述对象进行任何修改等操作,所述重要对象为机密或高级权限级别的对象,有的普通对象可以访问也可以对所述对象进行任何修改、删除或增加等操作,所述普通对象为低级权限级别的对象。然后,当所述源代码访问所述数据库中的对象是预先设置的允许访问的数据库对象的情况下,检查所述源代码对数据库中对象的 操作是否是预先设置的对数据库对象的操作,若所述源代码对数据库中对象的操作是预先设置的对数据库对象的操作,编译所述源代码得到中间码,若所述源代码对数据库中对象的操作不是预先设置的对数据库对象的操作,终止编译所述源代码。
    示例的,假设所述外部例行程序的源代码用于计算公司员工的基本工资在3500以上的税后实际发放的工资。具体的,假设所述源代码能够访问数据库中所有员工的基本工资,所述员工的基本工资包括1000至5000,但是,只对所述所有员工的基本工资中员工的基本工资在3500以上的数据进行计算,得到税后实际发放的工资。若所述源代码对所述所有员工的基本工资都进行计算,得到税后实际发放的工资,则会导致员工的基本工资在3500以下的员工实际拿到的工资为税后实际发放的工资,不符合国家的规定,造成员工工资发放失误。
    现有技术中,在编译外部例行程序的源代码时,不需要检查外部例行程序的源代码访问数据库中对象的范围,也没有对外部例行程序的源代码访问数据库中对象的操作的检查,这样可能影响数据库中对象的稳定性或当数据库中其他源程序引用该源程序时造成数据不一致。
    本发明实施例所述的数据处理方法,首先,对数据库中的对象进行权限级别的设置和对所述对象操作的设置,在编译外部例行程序的源代码时,通过对外部例行程序的源代码访问数据库中对象的范围的检查和对外部例行程序的源代码访问数据库中对象的操作的检查,判断是否符合预先设置的数据库对象的访问权限和对所述数据库对象的操作,有效地增强了数据库运行安全和数据库中的数据的安全。
    本发明实施例假设所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,执行步骤206、编译所述源代码得到中间码。
    步骤206、编译所述源代码得到中间码。
    具体的,可以通过语言前端??楸嘁胨鲈创氲玫街屑渎?,所述语言前端??榭梢允荂语言、Python语言或Fortran语言等语言前端???。
    本发明实施例假设外部例行程序的源代码由C语言编写,则采 用C子语言前端??槎愿迷创虢薪馕龅玫浇馕鍪?,然后再将解析树经过编译得到中间码,以便于任意的运行平台的虚拟机能够识别所述中间码。所述解析树包括根节点、根元素节点、节点等,即对该源代码进行分析,所述生成解析树的过程为现有技术,本发明实施例在此不作赘述。
    特别的,在编译所述源代码得到中间码后,执行步骤209,将所述中间码存储到数据库,还可以将所述中间码转换成机器码,执行步骤207。
    步骤207、获取所述中间码的机器码。
    运行平台包括以中央处理器为核心的集成电路芯片组,所述运行平台的虚拟机屏蔽任意运行平台的指令集。指令集是存储在中央处理器内部,对中央处理器运算进行指导和优化的硬程序,指令集可以使中央处理器更高效地运行??梢酝ü诵衅教ɑ袢∷鲋屑渎氲幕髀?。所述运行平台可以是x86运行平台、PwoerPC运行平台或ARM运行平台等。具体的,可以将语言前端??樯傻耐獠坷谐绦虻闹屑渎胧淙敫诵衅教?,运行平台可以将外部例行程序的中间码转换成适合x86运行平台、PwoerPC运行平台或ARM运行平台等运行平台运行的机器码,即每个运行平台所运行的机器码不同。
    步骤208、将所述机器码存储到数据库。
    在获取所述中间码的机器码后,同理,数据库可以生成所述机器码的目标名称,所述目标名称用于唯一标识所述机器码,生成所述机器码的目标地址,所述目标地址用于标识所述机器码在所述数据库中的地址。所述目标名称和目标地址是用户不可见的,存储在数据库内部,当调用该外部例行程序的机器码时,根据该目标名称和目标地址调用该外部例行程序的机器码。
    步骤209、将所述中间码存储到数据库。
    步骤2091、生成所述中间码的目标名称。
    所述目标名称用于唯一标识所述中间码。
    步骤2092、生成所述中间码的目标地址。
    所述目标地址用于标识所述中间码在所述数据库中的地址。
    需要说明的是,在执行步骤2091与步骤2092时,可以不区分先后顺序,即可以先生成所述中间码的目标地址,再生成所述中间码的目标名称。
    特别的,在数据库生成所述中间码的目标名称和目标地址时,为了外部例行程序的中间码的安全更有保障编写外部例行程序的创始者还可以设置调用密码,则既应该具有调用外部例行程序的中间码权限和调用密码的用户才可以调用外部例行程序的中间码。
    现有技术中,编译外部例行程序的源代码后,得到外部例行程序的目标代码,将外部例行程序的目标代码存储到数据库中时,需要接收用户设置的目标名称和目标地址,根据所述目标名称和目标地址将外部例行程序的目标代码存储到数据库,这样在管理外部例行程序的目标代码时可能存在被删除、替换或篡改等风险。
    本发明实施例所述的数据处理方法,将外部例行程序的中间码存储到数据库时,数据库生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码,生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。所述目标名称和目标地址是用户不可见的,存储在数据库内部,当调用该外部例行程序的中间码时,根据该目标名称和目标地址调用该外部例行程序的中间码。因此,通过数据库控制的方法存储和管理外部例行程序的中间码,有效地避免了在管理外部例行程序的中间码时存在外部例行程序被删除、替换或篡改等风险,既提高了管理的严谨性又提高了数据库中数据的安全性。
    本发明实施例所述的外部例行程序的源代码只是示意性说明,实际应用中还可以由其他高级编程语言编写,将其他高级编程语言编写的外部例行程序的源代码进行编译得到中间码,再将所述中间码转换成机器码的过程与本发明实施例所述的方法相同,在此不再赘述。
    本发明实施例所述的数据处理方法,首先,接收第一用户设备发送的数据库访问请求,根据该数据库访问请求判断第一用户设备是否拥有访问数据库的权限,若第一用户设备拥有访问数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,然后,在编译所述源代码时,检查所述源代码访问数据库中对象的范围是否在预先设 置的访问数据库中对象的范围内,若所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到中间码,同时还可以检查所述源代码对数据库中对象的操作是否是预先设置的对数据库中对象的操作,若所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到中间码,获取所述中间码的机器码,将所述机器码存储到数据库,同时将所述中间码存储到数据库。相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力,同时在编译该源代码时检查该源代码访问数据库对象的范围和检查该源代码访问数据库对象的操作有效地增强了数据库运行安全和数据库中的数据的安全,以及通过数据库控制的方法存储和管理外部例行程序的中间码和机器码,有效地避免了在管理外部例行程序的中间码和机器码时存在外部例行程序被删除、替换或篡改等风险,既提高了管理的严谨性又提高了数据库中数据的安全性。
    本发明实施例提供一种数据处理方法,假设数据库中存储有外部例行程序的中间码,假设外部例行程序由C语言编写,如图3所示,包括:
    步骤301、接收第二用户设备发送的调用外部例行程序的请求。
    假设第二用户可以通过第二用户设备在数据库中已经注册,当第二用户通过第二用户设备访问该数据库时,数据库判断第二用户是该数据库中的合法用户,则允许第二用户通过第二用户设备访问所述数据库。然后,当第二用户需要调用外部例行程序时,第二用户可以通过第二用户设备向数据库发送调用外部例行程序的请求,接收第二用户设备发送的外部例行程序调用请求。
    步骤302、根据所述调用所述外部例行程序的请求判断第二用户设备是否拥有调用所述外部例行程序的权限。
    该数据库的管理员可以对第二用户在数据库中的权限进行设置, 若所述第二用户设备没有调用所述外部例行程序的权限,即对于调用该源程序的第二用户为非法用户,执行步骤3021。
    若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序。需要说明的是,数据库中存储有该外部例行程序的函数名,可以根据所述外部例行程序的函数名调用该外部例行程序,然后,在数据库内部根据存储外部例行程序的中间码或机器码的目标名称和目标地址来调用外部例行程序的中间码或机器码来运行该外部例行程序,以便于给用户返回调用结果。
    步骤3021、禁止第二用户设备调用所述外部例行程序。
    数据库系统可以向第二用户设备提示操作错误,禁止第二用户设备调用所述外部例行程序。
    示例的,假设所述外部例行程序为公司的财务部门的财务工作人员制作工资时所需要使用的程序。每个月公司的财务部门的财务工作人员为公司员工制作当月的员工工资时,可以调用该外部例行程序对员工的工资进行计算修改,然后将员工工资表存储到数据库中,所述员工工资表包括公司内每个员工当月的工资。数据库的管理员设置只有制作所述员工工资表的财务工作人员和公司的董事长可以通过用户设备访问数据库中的员工工资表,且可以调用该外部例行程序对该员工工资表进行修改等操作,而公司的部门领导可以通过用户设备访问数据库查看员工工资表中该部门员工的工资和自己的工资,但是,公司的部门领导不能调用该外部例行程序对所访问的该部门员工的工资和自己的工资进行修改等操作,公司普通员工通过用户设备访问数据库只能查看员工工资表中自己的工资,也不能调用该外部例行程序对自己的工资进行修改等操作。
    本发明实施例假设第二用户设备拥有调用所述外部例行程序的权限,执行步骤303。
    步骤303、获取所述调用请求的结果。
    步骤304、调用虚拟机执行所述外部例行程序的中间码。
    当调用请求的结果是该外部例行程序的中间码,调用运行平台的虚拟机执行所述外部例行程序的中间码。
    现有技术中,在用户通过用户设备调用外部例行程序时,不需要判断调用外部例行程序的用户权限,直接调用所述外部例行程序,这样可能影响数据库对象的安全性或稳定性。
    本发明实施例所述的数据处理方法,在用户通过用户设备调用外部例行程序时,首先需要判断调用外部例行程序的用户权限,只有拥有调用外部例行程序权限的用户,才能通过用户设备调用该外部例行程序。相对于现有技术,在用户设备调用外部例行程序之前,增加了判断用户调用权限环节,有效地提高了数据库对象的安全性或稳定性。
    示例的,假设数据库为结构化查询语言数据库(Sql Server)。
    当用户设备A需要访问Sql Server数据库时,首先,安装有Sql Server数据库的服务器检查用户设备A是否有连接该Sql Server数据库服务器的权限,若用户设备A有连接Sql Server数据库服务器的权限。当用户设备A成功访问Sql Server数据库服务器后,Sql Server数据库再检查用户是否有登录Sql Server数据库的权限,若用户有登录Sql Server数据库的权限,用户可以对Sql Server数据库中的对象进行操作,然后,Sql Server数据库判断用户是否有对该对象的操作的权限。例如,需要更新或查询某个表,Sql Server数据库判断用户对该表的权限,或者用户需要运行某个存储过程,Sql Server数据库判断用户对存储过程是否有执行权限等。例如,Sql Server数据库的权限如表1所示。
    表1Sql Server数据库的权限


    本发明实施例所述的数据处理方法,首先,接收第二用户设备发送的外部例行程序调用请求,然后,根据所述外部例行程序调用请求判断第二用户设备是否拥有调用所述外部例行程序的权限,若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序,获取所述调用请求的结果,调用虚拟机执行所述外部例 行程序的中间码。相对于现有技术,在用户设备调用外部例行程序时,增加了判断用户调用权限环节,有效地提高了数据库对象的安全性或稳定性。
    本发明实施例提供一种数据处理方法,假设数据库中存储有外部例行程序的机器码,假设外部例行程序由C语言编写,如图4所示,包括:
    步骤401、接收第二用户设备发送的调用外部例行程序的请求。
    假设第二用户可以通过第二用户设备在数据库中已经注册,当第二用户通过第二用户设备访问该数据库时,数据库判断第二用户是该数据库中的合法用户,则允许第二用户通过第二用户设备访问所述数据库。然后,当第二用户需要调用外部例行程序时,第二用户可以通过第二用户设备向数据库发送调用外部例行程序的请求,接收第二用户设备发送的外部例行程序调用请求。
    步骤402、根据所述调用所述外部例行程序的请求判断第二用户设备是否拥有调用所述外部例行程序的权限。
    该数据库的管理员可以对第二用户在数据库中的权限进行设置,若所述第二用户设备没有调用所述外部例行程序的权限,即对于调用该源程序的第二用户为非法用户,执行步骤4021。
    若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序。需要说明的是,数据库中存储有该外部例行程序的函数名,可以根据所述外部例行程序的函数名调用该外部例行程序,然后,在数据库内部根据存储外部例行程序的中间码或机器码的目标名称和目标地址来调用外部例行程序的中间码或机器码来运行该外部例行程序,以便于给用户返回调用结果。
    步骤4021、禁止第二用户设备调用所述外部例行程序。
    数据库系统可以向第二用户设备提示操作错误,禁止第二用户设备调用所述外部例行程序。
    本发明实施例假设第二用户设备拥有调用所述外部例行程序的权限,执行步骤403。
    步骤403、获取所述调用请求的结果。
    步骤404、直接执行所述外部例行程序的机器码。
    当调用请求的结果是该外部例行程序的机器码,利用该机器码所述对应的运行平台运行该外部例行程序的机器码。
    现有技术中,在用户通过用户设备调用外部例行程序时,不需要判断调用外部例行程序的用户权限,直接调用所述外部例行程序,这样可能影响数据库对象的安全性或稳定性。
    本发明实施例所述的数据处理方法,在用户通过用户设备调用外部例行程序时,首先需要判断调用外部例行程序的用户权限,只有拥有调用外部例行程序权限的用户,才能通过用户设备调用该外部例行程序。相对于现有技术,在用户设备调用外部例行程序之前,增加了判断用户调用权限环节,有效地提高了数据库对象的安全性或稳定性。
    本发明实施例所述的数据处理方法,首先,接收第二用户设备发送的外部例行程序调用请求,然后,根据所述外部例行程序调用请求判断第二用户设备是否拥有调用所述外部例行程序的权限,若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序,获取所述调用请求的结果,直接执行所述外部例行程序的机器码。相对于现有技术,在用户设备调用外部例行程序时,增加了判断用户调用权限环节,有效地提高了数据库对象的安全性或稳定性。
    示例的,如图5所示,通过外部例行程序的逻辑框架图对外部例行程序的源代码进行编译得到中间码或机器码,并运行该中间码或机器码的过程进行描述。首先,将外部例行程序的源代码输入给语言前端???01,语言前端???01对该源代码进行解析编译得到解析树,将解析树进行编译,同时,通过鉴权???02判断该源代码对数据库对象进行访问或操作等是否安全,若该源代码对数据库对象进行访问或操作等安全,得到该源代码的中间码,然后,将该中间码输入给中间码???03,该中间码???03通过存储管理???04将该源代码的中间码存储到数据库中,最后,中间码???03将该源代码的中间码输入给运行平台505,运行平台505将该源代码的中间码转换成机器码,以便于在运行平台上执行该外部例行程序得到预期的结果?;?者,若没有将源代码的中间码转换成机器码时,当需要调用该外部例行程序时,将该源代码的中间码输入给虚拟机执行???06,虚拟机执行???06将该源代码的中间码转换成机器码的同时执行该机器码。
    需要说明的是,语言前端???01可以是C语言、Python语言或Fortran语言等语言前端???。运行平台405可以是x86运行平台、PwoerPC运行平台或ARM运行平台等,每个运行平台所运行的机器码不同。
    本发明实施例提供一种数据处理装置60,如图6a所示,包括:
    第一接收单元63,用于接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写。
    编译单元66,用于编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流。
    转化单元67,用于根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码。
    存储单元68,用于将所述机器码存储到数据库。
    这样一来,首先,接收外部例行程序的源代码,然后,编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流,相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力。
    如图6b所示,所述数据处理装置600还包括:
    第二接收单元601,用于接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求。
    第一判断单元602,用于根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限。
    所述第一接收单元603具体用于在所述第一判断单元602判断出所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现转化单元607将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。
    所述数据处理装置600还包括:
    第一检查单元604,用于检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内。
    所述编译单元606具体用于:
    在所述第一检查单元604检查出所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码
    所述数据处理装置600还包括:
    第二检查单元605,用于检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除。
    所述编译单元606具体用于:
    在所述第二检查单元605检查出所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。
    所述存储单元608还用于将所述中间码存储到所述数据库。
    所述数据处理装置600还包括:
    第一生成单元609,用于生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码。
    第二生成单元6010,用于生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。
    需要说明的是,在存储单元608执行将所述中间码存储到所述数据库后,第一生成单元609生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码,与第二生成单元6010生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地 址可以同时进行,无需区分生成目标名称与生成目标地址的先后顺序。
    所述数据处理装置600还包括:调用单元6011,
    所述第二接收单元601还用于接收第二用户设备发送的调用所述外部例行程序的请求。
    所述第一判断单元602还用于根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限。
    所述调用单元6011用于在所述第一判断单元602判断出所述第二用户设备拥有调用所述外部例行程序的权限时,运行所述机器码,以实现从所述数据库内调用所述外部例行程序。
    本发明实施例所述的数据处理装置,首先,接收第一用户设备发送的数据库访问请求,根据该数据库访问请求判断第一用户设备拥有访问数据库的权限,接收外部例行程序的源代码,然后,在编译所述源代码时,检查所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到中间码,同时还可以检查所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到中间码,获取所述中间码的机器码,将所述机器码存储到数据库,同时将所述中间码存储到数据库,同时在存储外部例行程序的中间码或机器码之后,判断出第二用户设备拥有调用该外部例行程序的权限时,运行机器码或中间码,以实现从所述数据库内调用所述外部例行程序。相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力,同时在编译该源代码时检查该源代码访问数据库对象的范围和检查该源代码访问数据库对象的操作有效地增强了数据库运行安全和数据库中的数据的安全,以及通过数据库控制的方法存储和管理外部例行程序的中间码和机器码,有效地避免了在管理外部例行程序的中间码和机器码时存在外 部例行程序被删除、替换或篡改等风险,既提高了管理的严谨性又提高了数据库中数据的安全性。
    本发明实施例提供一种数据处理装置70,如图7所示,包括:
    接收器701,用于接收外部例行程序的源代码,所述外部例行程序的源代码由高级编程语言编写。
    处理器702,用于编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流。
    所述处理器702还用于根据运行平台的指令集将所述中间码转化为便于在所述运行平台上运行的机器码。
    所述处理器702还用于将所述机器码存储到数据库。
    这样一来,首先,接收外部例行程序的源代码,然后,编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟机都能够识别的字节流,相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力。
    所述接收器701还用于:
    接收发送所述外部例行程序的源代码的第一用户设备发送的数据库访问请求。
    所述处理器702还用于:
    根据所述数据库访问请求判断所述第一用户设备是否拥有访问所述数据库的权限。
    所述处理器702还用于:
    在所述处理器702判断出所述第一用户设备拥有访问所述数据库的权限,接收所述第一用户设备发送的外部例行程序的源代码,以实现将所述源代码转化为所述机器码并将所述机器码存储到所述数据库。
    具体的,所述处理器702解析所述外部例行程序的源代码的数据 包,获得所述数据包的第一标识,所述第一标识用于标示所述数据包的源地址。然后判断所述数据包的第一标识是否是预先设置的标识,所述预先设置的标识用于标示所述第一用户设备的地址。
    所述处理器702还用于:
    检查所述源代码访问所述数据库中对象的范围是否在预先设置的访问所述数据库中对象的范围内。
    所述处理器702具体用于:
    在所述处理器702检查出所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到所述中间码。
    所述处理器702还用于:
    检查所述源代码对所述数据库中对象的操作是否是预先设置的对所述数据库中对象的操作,所述操作包括对所述对象的修改、增加或删除。
    所述处理器702具体用于:
    在所述处理器702检查出所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到所述中间码。
    所述处理器702还用于:
    将所述中间码存储到所述数据库。
    所述处理器702还用于:
    生成所述中间码的目标名称,所述目标名称用于唯一标识所述中间码。
    所述处理器702还用于:
    生成所述中间码的目标地址,所述目标地址用于标识所述中间码在所述数据库中的地址。
    所述接收器701还用于:
    接收第二用户设备发送的调用所述外部例行程序的请求。
    所述处理器702还用于:
    根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限。
    所述处理器702还用于:
    在所述处理器702判断出所述第二用户设备拥有调用所述外部例行程序的权限时,运行所述机器码,以实现从所述数据库内调用所述外部例行程序。
    本发明实施例所述的数据处理装置,首先,接收第一用户设备发送的数据库访问请求,根据该数据库访问请求判断第一用户设备拥有访问数据库的权限,接收外部例行程序的源代码,然后,在编译所述源代码时,检查所述源代码访问所述数据库中对象的范围在所述预先设置的访问所述数据库中对象的范围内,编译所述源代码得到中间码,同时还可以检查所述源代码对所述数据库中对象的操作是预先设置的对所述数据库中对象的操作,编译所述源代码得到中间码,获取所述中间码的机器码,将所述机器码存储到数据库,同时将所述中间码存储到数据库,同时在存储外部例行程序的中间码或机器码之后,判断出第二用户设备拥有调用该外部例行程序的权限时,运行机器码或中间码,以实现从所述数据库内调用所述外部例行程序。相对于现有技术,所述中间码与运行平台无关,对于运行平台是一种统一的编码,即任意的运行平台的虚拟机能够识别该中间码,使得数据库系统中不需要内嵌不同的编译器来编译外部例行程序的源代码,根据所述运行平台的指令集将所述中间码转化为便于在该运行平台上运行的机器码,有效地提高了数据库系统的扩展能力,同时在编译该源代码时检查该源代码访问数据库对象的范围和检查该源代码访问数据库对象的操作有效地增强了数据库运行安全和数据库中的数据的安全,以及通过数据库控制的方法存储和管理外部例行程序的中间码和机器码,有效地避免了在管理外部例行程序的中间码和机器码时存在外部例行程序被删除、替换或篡改等风险,既提高了管理的严谨性又提高了数据库中数据的安全性。
    所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中 的对应过程,在此不再赘述。
    在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
    所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上??梢愿菔导实男枰≡衿渲械牟糠只蛘呷康ピ词迪直臼凳├桨傅哪康?。
    另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
    本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
    以上所述,仅为本发明的具体实施方式,但本发明的?;し段Р⒉痪窒抻诖?,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的?;し段е?。因此,本发明的?;し段вσ运鋈ɡ蟮谋;し段?。

    关于本文
    本文标题:一种数据处理方法及装置.pdf
    链接地址://www.4mum.com.cn/p-6147583.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
  • 电子沙盘怎么玩 分分赛车计划软件 幸运飞艇六码如何倍投 pk10技巧规律 四川时时开奖结果走势图 时时彩怎样稳赚不赔 PK拾人工计划 吉林时时87开奖号码 49码高手心水资料大全 拉人玩时时彩的套路 幸运28预测上pc28点gd 快三计划软件app免费下载 一般双色球一等奖是不是机选出来 七星彩500期基本走势图 公开我的必胜法 北京pk10高手计划群