Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
DATA PROCESSING METHOD AND DEVICE
Document Type and Number:
WIPO Patent Application WO/2015/123956
Kind Code:
A1
Abstract:
Provided are a data processing method and device, which relate to the field of computers and can effectively improve the expansion capability of a database system. The data processing method comprises: receiving a source code of an external routine program, the source code of the external routine program being compiled by a high-level programming language; compiling the source code to obtain an intermediate code, the intermediate code being a byte stream capable of being recognized by a virtual machine of any operation platform; according to an instruction set of the operation platform, converting the intermediate code into a machine code easy to operate on the operation platform; and storing the machine code in a database. The provided data processing method and device are used for processing data.

Inventors:
SUN DONGWANG (CN)
WEN JIJUN (CN)
WANG CHUANTING (CN)
Application Number:
PCT/CN2014/081141
Publication Date:
August 27, 2015
Filing Date:
June 30, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HUAWEI TECH CO LTD (CN)
International Classes:
G06F9/45
Foreign References:
CN103838614A2014-06-04
CN101504613A2009-08-12
CN102419714A2012-04-18
CN101836188A2010-09-15
US20120284696A12012-11-08
Other References:
See also references of EP 2937782A4
Attorney, Agent or Firm:
BEIJING ZBSD PATENT&TRADEMARK AGENT LTD. (CN)
北京中博世达专利商标代理有限公司 (CN)
Download PDF:
Claims:
权 利 要 求 书

1、 一种数据处理方法, 其特征在于, 包括:

接收外部例行程序的源代码,所述外部例行程序的源代码由高级 编程语言编写;

编译所述源代码得到中间码,所述中间码是任意运行平台的虚拟 机都能够识别的字节流;

根据运行平台的指令集将所述中间码转化为便于在所述运行平 台上运行的机器码;

将所述机器码存储到数据库。

2、 根据权利要求 1 所述的数据处理方法, 其特征在于, 在所述 接收外部例行程序的源代码之前, 所述方法还包括:

接收发送所述外部例行程序的源代码的第一用户设备发送的数 据库访问请求;

根据所述数据库访问请求判断所述第一用户设备是否拥有访问 所述数据库的权限;

若所述第一用户设备拥有访问所述数据库的权限,接收所述第一 用户设备发送的外部例行程序的源代码, 以实现将所述源代码转化为 所述机器码并将所述机器码存储到所述数据库。

3、 根据权利要求 1或 2所述的数据处理方法, 其特征在于, 所 述编译所述源代码得到中间码之前, 进一步包括:

检查所述源代码访问所述数据库中对象的范围是否在预先设置 的访问所述数据库中对象的范围内;

若所述源代码访问所述数据库中对象的范围在所述预先设置的 访问所述数据库中对象的范围内, 编译所述源代码得到所述中间码。

4、 根据权利要求 1或 2所述的数据处理方法, 其特征在于, 所 述编译所述源代码得到所述中间码之前, 进一步包括:

检查所述源代码对所述数据库中对象的操作是否是预先设置的 对所述数据库中对象的操作, 所述操作包括对所述对象的修改、 增加 或删除; 若所述源代码对所述数据库中对象的操作是预先设置的对所述 数据库中对象的操作, 编译所述源代码得到所述中间码。

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

将所述中间码存储到所述数据库。

6、 根据权利要求 5所述的数据处理方法, 其特征在于, 在所述 将所述中间码存储到所述数据库之后, 所述方法还包括:

生成所述中间码的目标名称,所述目标名称用于唯一标识所述中 间码;

生成所述中间码的目标地址,所述目标地址用于标识所述中间码 在所述数据库中的地址。

7、 根据权利要求 1 至 6任一项权利要求所述的数据处理方法, 其特征在于, 在所述将所述机器码存储到数据库之后, 所述方法还包 括:

接收第二用户设备发送的调用所述外部例行程序的请求; 根据所述调用所述外部例行程序的请求判断所述第二用户设备 是否拥有调用所述外部例行程序的权限;

若所述第二用户设备拥有调用所述外部例行程序的权限,则运行 所述机器码, 以实现从所述数据库内调用所述外部例行程序。

8、 一种数据处理装置, 其特征在于, 包括:

第一接收单元, 用于接收外部例行程序的源代码, 所述外部例行 程序的源代码由高级编程语言编写;

编译单元, 用于编译所述源代码得到中间码, 所述中间码是任意 运行平台的虚拟机都能够识别的字节流;

转化单元,用于根据运行平台的指令集将所述中间码转化为便于 在所述运行平台上运行的机器码;

存储单元, 用于将所述机器码存储到数据库。

9、 根据权利要求 8所述的数据处理装置, 其特征在于, 所述数 据处理装置还包括:

第二接收单元,用于接收发送所述外部例行程序的源代码的第一 用户设备发送的数据库访问请求;

第一判断单元,用于根据所述数据库访问请求判断所述第一用户 设备是否拥有访问所述数据库的权限;

所述第一接收单元具体用于在所述第一判断单元判断出所述第 一用户设备拥有访问所述数据库的权限, 接收所述第一用户设备发送 的外部例行程序的源代码, 以实现将所述源代码转化为所述机器码并 将所述机器码存储到所述数据库。

10、 根据权利要求 8或 9所述的数据处理装置, 其特征在于, 所 述数据处理装置还包括:

第一检查单元,用于检查所述源代码访问所述数据库中对象的范 围是否在预先设置的访问所述数据库中对象的范围内;

所述编译单元具体用于在所述第一检查单元检查出所述源代码 访问所述数据库中对象的范围在所述预先设置的访问所述数据库中 对象的范围内, 编译所述源代码得到所述中间码。

1 1、 根据权利要求 8或 9所述的数据处理装置, 其特征在于, 所 述数据处理装置还包括:

第二检查单元,用于检查所述源代码对所述数据库中对象的操作 是否是预先设置的对所述数据库中对象的操作, 所述操作包括对所述 对象的修改、 增加或删除;

所述编译单元具体用于在所述第二检查单元检查出所述源代码 对所述数据库中对象的操作是预先设置的对所述数据库中对象的操 作, 编译所述源代码得到所述中间码。

12、根据权利要求 8至 1 1任一项权利要求所述的数据处理装置, 其特征在于:

所述存储单元还用于将所述中间码存储到所述数据库。

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

第二生成单元, 用于生成所述中间码的目标地址, 所述目标地址 用于标识所述中间码在所述数据库中的地址。

14、根据权利要求 8至 13任一项权利要求所述的数据处理装置, 其特征在于, 还包括调用单元:

所述第二接收单元还用于接收第二用户设备发送的调用所述外 部例行程序的请求;

所述第一判断单元还用于根据所述调用所述外部例行程序的请 求判断所述第二用户设备是否拥有调用所述外部例行程序的权限; 所述调用单元用于在所述第一判断单元判断出所述第二用户设 备拥有调用所述外部例行程序的权限时, 运行所述机器码, 以实现从 所述数据库内调用所述外部例行程序。

Description:
一种数据处理方法及装置 本申请要求于 2014 年 2 月 19 日提交中国专利局、 申请号为 20141005571 1 .9、 发明名称为 "一种数据处理方法及装置" 的中国专 利申请的优先权, 其全部内容通过引用结合在本申请中。

技术领域

本发明涉及计算机领域, 尤其涉及一种数据处理方法及装置。 背景技术

夕卜部例行程序 ( External Routine ) 通常指使用高级编程语言编 写, 并可以嵌入 SQL ( Structured Query Language , 结构化查询语言) 语句的程序。 外部例行程序的源代码经过编译后可以供数据 库管理 系统调用, 以便于扩展数据库功能。 数据库系统包括数据库和数据 库管理系统, 数据库用于存储数据, 数据库管理系统用于对数据库 的运行管理、 维护等。 通常情况下, 数据库管理系统可以是结构化 查询语言数据库管理系统 ( MySQL ) 等, 数据库可以是结构化查询 语言数据库 ( Sql Server )、 曱骨文数据库 ( Oracle ) 等, 数据库对高 级编程语言提供广泛支持, 所述高级编程语言可以是 C 语言、 C++ 语言、 JAVA语言、 COBOL ( Common Business Oriented Language , 面向商业的通用语言) 等。

现有技术中, 数据库系统可以通过内嵌数据库管理系统、 内嵌 扩展语言编译模块, 对使用高级编程语言编写的外部例行程序的源 代码进行编译得到外部例行程序的目标代码, 所述数据库管理系统 可以是 MySQL、 Teradata等, 所述扩展语言编译模块可以是 DB2、 Postgresql等。 然后, 根据用户设置的目标名称和目标地址将外部例 行程序的目标代码存储到数据库, 该目标名称用于唯一标识外部例 行程序的目标代码, 该目标地址用于标识外部例行程序的目标代码 存储在数据库中的地址, 以便于根据该目标名称和该目标地址调用 所述外部例行程序的目标代码。 也可以先通过高级编程语言的编程 工具编写、 编译外部例行程序的源代码后, 然后根据用户设置的目 标名称和目标地址将外部例行程序的目标代码 复制到数据库, 且需 要将该目标名称和该目标地址等信息在数据库 中注册, 以便于数据 库管理系统识别和调用外部例行程序的目标代 码。

但是, 不同的运行平台的中央处理器不同, 不同中央处理器的 指令集也不同, 所以高级编程语言编写的外部例行程序在不同 的运 行平台上运行时需要不同的编译器来编译, 得到适合在当前运行平 台运行的外部例行程序的目标代码, 所述运行平台为外部例行程序 的目标代码运行时所需要的硬件和 /或软件。 所述指令集用于将外部 例行程序转化为适合在运行平台上运行外部例 行程序的目标代码。 例如, 当一外部例行程序编译成 x86 版本的目标代码时, 所述目标 代码只能在 x86 指令集的中央处理器上运行。 因此, 数据库系统中 需要内嵌不同的编译器来编译外部例行程序的 源代码, 对数据库系 统的扩展能力受到限制, 且在编译外部例行程序时存在安全问题。 发明内容

本发明的实施例提供一种数据处理方法及装置 , 能够有效提高 数据库系统的扩展能力。

为达到上述目 的, 本发明的实施例采用如下技术方案: 第一方面, 提供一种数据处理方法, 包括:

接收外部例行程序的源代码, 所述外部例行程序的源代码由高 级编程语言编写;

编译所述源代码得到中间码, 所述中间码是任意运行平台的虚 拟机都能够识别的字节流;

根据运行平台的指令集将所述中间码转化为便 于在所述运行平 台上运行的机器码; 将所述机器码存储到数据库。

结合第一方面, 在第一种可实现方式中, 在所述接收外部例行 程序的源代码之前, 所述方法还包括:

接收发送所述外部例行程序的源代码的第一用 户设备发送的数 据库访问请求;

根据所述数据库访问请求判断所述第一用户设 备是否拥有访问 所述数据库的权限;

若所述第一用户设备拥有访问所述数据库的权 限, 接收所述第 一用户设备发送的外部例行程序的源代码, 以实现将所述源代码转 化为所述机器码并将所述机器码存储到所述数 据库。

结合第一方面或第一方面的第一种可实现方式 , 在第二种可实 现方式中, 所述编译所述源代码得到中间码之前, 进一步包括: 检查所述源代码访问所述数据库中对象的范围 是否在预先设置 的访问所述数据库中对象的范围内;

若所述源代码访问所述数据库中对象的范围在 所述预先设置的 访问所述数据库中对象的范围内, 编译所述源代码得到所述中间码。

结合第一方面或第一方面的第一种可实现方式 , 在第三种可实 现方式中, 所述编译所述源代码得到所述中间码之前, 进一步包括: 检查所述源代码对所述数据库中对象的操作是 否是预先设置的 对所述数据库中对象的操作, 所述操作包括对所述对象的修改、 增 加或删除;

若所述源代码对所述数据库中对象的操作是预 先设置的对所述 数据库中对象的操作, 编译所述源代码得到所述中间码。

结合第一方面或者第一方面的第一种可实现方 式至第三种可实 现方式中的任意一种, 在第四种可实现方式中, 在所述编译所述源 代码得到中间码之后, 所述方法还包括:

将所述中间码存储到所述数据库。 结合第一方面的第四种可实现方式, 在第五种可实现方式中, 在所述将所述中间码存储到所述数据库之后, 所述方法还包括: 生成所述中间码的目标名称, 所述目标名称用于唯一标识所述 中间码;

生成所述中间码的目标地址, 所述目标地址用于标识所述中间 码在所述数据库中的地址。

结合第一方面或者第一方面的第一种可实现方 式至第五种可实 现方式中任意一种, 在第六种可实现方式中, 在所述将所述机器码 存储到数据库之后, 所述方法还包括:

接收第二用户设备发送的调用所述外部例行程 序的请求; 根据所述调用所述外部例行程序的请求判断所 述第二用户设备 是否拥有调用所述外部例行程序的权限;

若所述第二用户设备拥有调用所述外部例行程 序的权限, 则运 行所述机器码, 以实现从所述数据库内调用所述外部例行程序 。

第二方面, 提供一种数据处理装置, 包括:

第一接收单元, 用于接收外部例行程序的源代码, 所述外部例 行程序的源代码由高级编程语言编写;

编译单元, 用于编译所述源代码得到中间码, 所述中间码是任 意运行平台的虚拟机都能够识别的字节流;

转化单元, 用于根据运行平台的指令集将所述中间码转化 为便 于在所述运行平台上运行的机器码;

存储单元, 用于将所述机器码存储到数据库。

结合第二方面, 在第一种可实现方式中, 所述数据处理装置还 包括:

第二接收单元, 用于接收发送所述外部例行程序的源代码的第 一用户设备发送的数据库访问请求;

第一判断单元, 用于根据所述数据库访问请求判断所述第一用 户设备是否拥有访问所述数据库的权限;

所述第一接收单元具体用于在所述第一判断单 元判断出所述第 一用户设备拥有访问所述数据库的权限, 接收所述第一用户设备发 送的外部例行程序的源代码, 以实现将所述源代码转化为所述机器 码并将所述机器码存储到所述数据库。

结合第二方面或第二方面的第一种可实现方式 , 在第二种可实 现方式中, 所述数据处理装置还包括:

第一检查单元, 用于检查所述源代码访问所述数据库中对象的 范围是否在预先设置的访问所述数据库中对象 的范围内;

所述编译单元具体用于在所述第一检查单元检 查出所述源代码 访问所述数据库中对象的范围在所述预先设置 的访问所述数据库中 对象的范围内, 编译所述源代码得到所述中间码。

结合第二方面或第二方面的第一实现方式, 在第三种可实现方 式中, 所述数据处理装置还包括:

第二检查单元, 用于检查所述源代码对所述数据库中对象的操 作是否是预先设置的对所述数据库中对象的操 作, 所述操作包括对 所述对象的修改、 增加或删除;

所述编译单元具体用于在所述第二检查单元检 查出所述源代码 对所述数据库中对象的操作是预先设置的对所 述数据库中对象的操 作, 编译所述源代码得到所述中间码。

结合第二方面或者第二方面的第一种可实现方 式至第三种可实 现方式中的任意一种, 在第四种可实现方式中, 所述存储单元还用 于将所述中间码存储到所述数据库。

结合第二方面的第四种可实现方式, 在第五种可实现方式中, 所述数据处理装置还包括:

第一生成单元, 用于生成所述中间码的目标名称, 所述目标名 称用于唯一标识所述中间码; 第二生成单元, 用于生成所述中间码的目标地址, 所述目标地 址用于标识所述中间码在所述数据库中的地址 。

结合第二方面或者第二方面的第一种可实现方 式至第五种可实 现方式中的任意一种, 在第六种可实现方式中, 所述数据处理装置 还包括调用单元:

所述第二接收单元还用于接收第二用户设备发 送的调用所述外 部例行程序的请求;

所述第一判断单元还用于根据所述调用所述外 部例行程序的请 求判断所述第二用户设备是否拥有调用所述外 部例行程序的权限; 所述调用单元用于在所述第一判断单元判断出 所述第二用户设 备拥有调用所述外部例行程序的权限时, 运行所述机器码, 以实现 从所述数据库内调用所述外部例行程序。

本发明的实施例提供一种数据处理方法及装置 , 所述数据处理 方法, 包括: 接收外部例行程序的源代码, 所述外部例行程序的源 代码由高级编程语言编写; 编译所述源代码得到中间码, 所述中间 码是任意运行平台的虚拟机都能够识别的字节 流; 根据运行平台的 指令集将所述中间码转化为便于在所述运行平 台上运行的机器码; 将所述机器码存储到数据库。 这样一来, 将接收到的外部例行程序 的源代码编译得到中间码, 相对于现有技术, 所述中间码与运行平 台无关, 对于运行平台是一种统一的编码, 即任意的运行平台的虚 拟机能够识别该中间码, 使得数据库系统中不需要内嵌不同的编译 器来编译外部例行程序的源代码, 根据所述运行平台的指令集将所 述中间码转化为便于在该运行平台上运行的机 器码, 有效地提高了 数据库系统的扩展能力。

附图说明

为了更清楚地说明本发明实施例或现有技术中 的技术方案, 下 面将对实施例或现有技术描述中所需要使用的 附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例 , 对于 本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。

图 1为本发明实施例提供一种数据处理方法流程 ;

图 l a为本发明实施例提供另一种数据处理方法流 图; 图 2为本发明实施例提供又一种数据处理方法流 图; 图 3为本发明实施例提供再一种数据处理方法流 图; 图 4为本发明实施例提供另再一种数据处理方法 程图; 图 5为本发明实施例提供一种数据处理装置结构 意图; 图 6a为本发明实施例提供另一种数据处理装置结 示意图; 图 6b为本发明实施例提供又一种数据处理装置结 示意图; 图 7为本发明实施例提供再一种数据处理装置结 示意图。 具体实施方式

下面将结合本发明实施例中的附图, 对本发明实施例中的技术 方案进行清楚、 完整地描述, 显然, 所描述的实施例仅仅是本发明 一部分实施例, 而不是全部的实施例。 基于本发明中的实施例, 本 领域普通技术人员在没有做出创造性劳动前提 下所获得的所有其他 实施例, 都属于本发明保护的范围。

本发明实施例提供一种数据处理方法, 如图 1所示, 包括: 步骤 104、 接收外部例行程序的源代码, 所述外部例行程序的 源代码由高级编程语言编写。

步骤 105、 编译所述源代码得到中间码, 所述中间码是任意运 行平台的虚拟机都能够识别的字节流。

在编译外部例行程序的源代码时, 首先, 检查所述源代码访问 所述数据库中对象的范围是否在预先设置的访 问所述数据库中对象 的范围内, 若所述源代码访问所述数据库中对象的范围在 所述预先 设置的访问所述数据库中对象的范围内, 编译所述源代码得到所述 中间码。 或者, 编译所述源代码得到中间码还可以包括检查所 述源 代码对所述数据库中对象的操作是否是预先设 置的对所述数据库中 对象的操作, 所述操作包括对所述对象的修改、 增加或删除, 若所 述源代码对所述数据库中对象的操作是预先设 置的对所述数据库中 对象的操作, 编译所述源代码得到所述中间码, 使得任意的运行平 台的虚拟机能够识别所述中间码。 成功编译该源代码得到所述中间 码之后, 将该中间码存储到所述数据库, 生成所述中间码的目标名 称和目标地址, 所述目标名称用于唯一标识所述中间码, 所述目标 地址用于标识该中间码在所述数据库中的地址 。

步骤 106、 根据运行平台的指令集将所述中间码转化为便 于在 所述运行平台上运行的机器码。

指令集是存储在中央处理器内部, 对中央处理器运算进行指导 和优化的硬程序, 指令集可以使中央处理器更高效地运行。

步骤 107、 将所述机器码存储到数据库。

生成所述机器码的目标名称和目标地址, 所述目标名称用于唯 一标识所述机器码, 所述目标地址用于标识该机器码在所述数据库 中的地址。

这样一来, 首先, 接收外部例行程序的源代码, 然后, 编译所 述源代码得到中间码, 所述中间码是任意运行平台的虚拟机都能够 识别的字节流, 相对于现有技术, 所述中间码与运行平台无关, 对 于运行平台是一种统一的编码, 即任意的运行平台的虚拟机能够识 别该中间码, 使得数据库系统中不需要内嵌不同的编译器来 编译外 部例行程序的源代码, 根据所述运行平台的指令集将所述中间码转 化为便于在该运行平台上运行的机器码, 有效地提高了数据库系统 的扩展能力。

本发明实施例提供一种数据处理方法, 如图 l a所示, 包括: 步骤 1 1 1、 接收发送所述外部例行程序的源代码的第一用 户设 备发送的数据库访问请求。

步骤 1 12、 根据所述数据库访问请求判断所述第一用户设 备是 否拥有访问所述数据库的权限。

步骤 1 13、 若所述第一用户设备拥有访问所述数据库的权 限, 接收所述第一用户设备发送的外部例行程序的 源代码, 以实现将所 述源代码转化为所述机器码并将所述机器码存 储到所述数据库。

若该第一用户设备拥有访问所述数据库的权限 , 才接收所述第 一用户设备发送的外部例行程序的源代码, 包括: 解析所述外部例 行程序的源代码的数据包, 获得所述数据包的第一标识, 所述第一 标识用于标示所述数据包的源地址; 判断所述数据包的第一标识是 否是预先设置的标识, 所述预先设置的标识用于标示所述第一用户 设备的地址; 若所述数据包的第一标识是预先设置的标识, 才接收 所述第一用户设备发送的数据包, 所述数据包包括外部例行程序的 源代码, 所述外部例行程序的源代码由高级编程语言编 写, 所述高 级编程语言可以是 C语言、 C++语言、 JAVA语言等。

步骤 1 14、 接收外部例行程序的源代码, 所述外部例行程序的 源代码由高级编程语言编写。

步骤 1 1 5、 编译所述源代码得到中间码, 所述中间码是任意运 行平台的虚拟机都能够识别的字节流。

步骤 1 1 6、 根据运行平台的指令集将所述中间码转化为便 于在 所述运行平台上运行的机器码。

步骤 1 17、 将所述机器码存储到数据库。

这样一来, 在接收外部例行程序的源代码之前, 首先, 接收发 送所述外部例行程序的源代码的第一用户设备 发送的数据库访问请 求, 然后, 判断该第一用户设备拥有访问所述数据库的权 限后, 接 收该第一用户设备发送的外部例行程序的源代 码, 以实现将所述源 代码转化为所述机器码并将所述机器码存储到 所述数据库, 有效地 增强了数据库的安全性, 避免用户设备非法访问该数据库。

本发明实施例提供一种数据处理方法, 假设外部例行程序的源 代码由 C语言编写, 如图 2所示, 包括:

步骤 201、 接收第一用户设备发送的数据库访问请求。

若第一用户为本地用户, 第一用户可以通过第一用户设备向数 据库发送数据库访问请求, 所述第一用户设备发送的数据库访问请 求包括用户名、 登录密码和权限级别, 该用户名为第一用户登录所 述数据库时所使用的登录名称, 该登录密码为第一用户登录所述数 据库时所使用的登录密码, 该权限级别为第一用户登录所述数据库 时该第一用户能够对该数据库进行操作的等级 , 例如管理员、 高级 用户、 中级用户或初级用户等权限级别对该数据库存 在不同的操作 权限。 示例的, 管理员可以在数据库中添加或删除用户, 对该数据 库中的源程序或对象等进行任何删除、 增加或修改等编译操作, 高 级用户可以调用数据库中的源程序对数据库中 的对象进行任何删 除、 增加或修改等编译操作, 初级用户可以只能访问该数据库中的 对象。

若第一用户非本地用户, 需要远程访问该数据库时, 第一用户 可以先通过第一用户设备向数据库所在的服务 器发送访问请求, 该 访问请求包括数据库所在的服务器的 IP ( Internet Protocol , 互联网 协议) 地址和端口号, 成功访问数据库所在的服务器后, 第一用户 可以再通过第一用户设备向数据库发送数据库 访问请求, 此时该数 据库访问请求包括用户名、 登录密码和权限级别。

需要说明的是,用户可以在磁盘操作系统 DOS环境下通过命令 输入的形式访问数据库, 并可以通过命令输入的形式增加、 删除或 修改该数据库中的源程序或者数据; 用户还可以在可视化的窗口界 面下访问数据库。

步骤 202、 根据数据库访问请求判断第一用户设备是否拥 有访 问数据库的权限。

若第一用户设备没有访问数据库的权限, 执行步骤 2021 , 禁止 第一用户设备访问数据库。

若第一用户设备拥有访问数据库的权限, 则执行步骤 203。

若第一用户没有在数据库注册, 当第一用户通过第一用户设备 访问该数据库时, 数据库判断第一用户是该数据库的非法用户, 则 禁止第一用户通过第一用户设备访问所述数据 库。

若第一用户设备拥有访问数据库的权限, 即第一用户通过第一 用户设备在数据库中已经注册, 当第一用户通过第一用户设备访问 该数据库时, 数据库判断第一用户是该数据库中的合法用户 , 则允 许第一用户通过第一用户设备访问该数据库。

具体的, 若该第一用户设备拥有访问所述数据库的权限 , 才接 收所述第一用户设备发送的外部例行程序的源 代码, 包括: 解析所 述外部例行程序的源代码的数据包, 获得所述数据包的第一标识, 所述第一标识用于标示所述数据包的源地址, 即发送该数据包的用 户设备的地址。 判断所述数据包的第一标识是否是预先设置的 标识, 所述预先设置的标识用于标示所述第一用户设 备的地址; 若所述数 据包的第一标识是预先设置的标识, 才接收所述第一用户设备发送 的数据包, 所述数据包包括外部例行程序的源代码。

步骤 202 1 , 禁止第一用户设备访问数据库。

本发明实施例假设第一用户设备拥有访问数据 库的权限, 则执 行步骤 203。

步骤 203、 接收所述第一用户设备发送的外部例行程序的 源代 码。

步骤 204、 检查所述源代码访问数据库中对象的范围是否 在预 先设置的访问所述数据库中对象的范围内。

若所述源代码访问数据库中对象的范围不在预 先设置的访问数 据库中对象的范围内, 则执行步骤 2041、 终止编译所述源代码。 例如, 可能存在该源代码访问该数据库中对象包括禁 止访问的 对象, 造成对该数据库对象的非法访问。 假如所述源代码访问的对 象为商业上的重要数据, 则可能会导致重大商业机密泄露, 造成严 重的经济损失。 若所述源代码访问所述数据库中对象的范围在 所述 预先设置的访问所述数据库中对象的范围内, 编译所述源代码得到 所述中间码。

具体的, 首先, 预先设置数据库中对象的权限级别, 不同权限 级别的对象的重要程度不同, 即可以将所述对象的权限级别设置为 机密、 高级或低级等, 例如, 机密对象不可随意访问, 只有具有机 密权限的程序或用户才能访问。 所述对象可以是数据库中的数据, 也可以是将数据库中所存储的数据进行分类, 划分成不同类型的对 象, 所述每类数据为一类对象, 例如数据类型, 信息类型等。 然后, 当数据库接收到外部例行程序的源代码后, 对所述源代码进行编译 时, 检查该源程序访问数据库中的对象是否是预先 设置的允许访问 的数据库对象, 若该源程序访问数据库中的对象是预先设置的 允许 访问的数据库对象, 编译所述源代码得到所述中间码。 若该源程序 访问数据库中的对象是数据库预先设置的不允 许访问的数据库对 象, 终止编译所述源代码。

进一步的, 若所述源代码访问数据库中对象的范围在预先 设置 的访问数据库中对象的范围内, 则执行步骤 205、 检查所述源代码 对数据库中对象的操作是否是预先设置的对数 据库中对象的操作。

步骤 2041、 终止编译所述源代码。

本发明实施例假设所述源代码访问数据库中对 象的范围在预先 设置的访问数据库中对象的范围内, 则执行步骤 205。

步骤 205、 检查所述源代码对数据库中对象的操作是否是 预先 设置的对数据库中对象的操作。 若检查所述源代码对数据库中对象的操作不是 预先设置的对数 据库中对象的操作, 则执行步骤 2041、 终止编译所述源代码。

若检查所述源代码对数据库中对象的操作是预 先设置的对数据 库中对象的操作, 则执行步骤 206。

具体的, 首先, 预先设置的对数据库中对象的操作的权限, 所 述操作包括对所述对象的修改、 增加或删除等。 即数据库中有的重 要对象可以访问但不能对所述对象进行任何修 改等操作, 所述重要 对象为机密或高级权限级别的对象, 有的普通对象可以访问也可以 对所述对象进行任何修改、 删除或增加等操作, 所述普通对象为低 级权限级别的对象。 然后, 当所述源代码访问所述数据库中的对象 是预先设置的允许访问的数据库对象的情况下 , 检查所述源代码对 数据库中对象的操作是否是预先设置的对数据 库对象的操作, 若所 述源代码对数据库中对象的操作是预先设置的 对数据库对象的操 作, 编译所述源代码得到中间码, 若所述源代码对数据库中对象的 操作不是预先设置的对数据库对象的操作, 终止编译所述源代码。

示例的, 假设所述外部例行程序的源代码用于计算公司 员工的 基本工资在 3500以上的税后实际发放的工资。 具体的, 假设所述源 代码能够访问数据库中所有员工的基本工资, 所述员工的基本工资 包括 1000 至 5000 , 但是, 只对所述所有员工的基本工资中员工的 基本工资在 3500以上的数据进行计算, 得到税后实际发放的工资。 若所述源代码对所述所有员工的基本工资都进 行计算, 得到税后实 际发放的工资, 则会导致员工的基本工资在 3500以下的员工实际拿 到的工资为税后实际发放的工资, 不符合国家的规定, 造成员工工 资发放失误。

现有技术中, 在编译外部例行程序的源代码时, 不需要检查外 部例行程序的源代码访问数据库中对象的范围 , 也没有对外部例行 程序的源代码访问数据库中对象的操作的检查 , 这样可能影响数据 库中对象的稳定性或当数据库中其他源程序引 用该源程序时造成数 据不一致。

本发明实施例所述的数据处理方法, 首先, 对数据库中的对象 进行权限级另 'J的设置和对所述对象操作的设置, 在编译外部例行程 序的源代码时, 通过对外部例行程序的源代码访问数据库中对 象的 范围的检查和对外部例行程序的源代码访问数 据库中对象的操作的 检查, 判断是否符合预先设置的数据库对象的访问权 限和对所述数 据库对象的操作, 有效地增强了数据库运行安全和数据库中的数 据 的安全。

本发明实施例假设所述源代码对所述数据库中 对象的操作是预 先设置的对所述数据库中对象的操作, 执行步骤 206、 编译所述源 代码得到中间码。

步骤 206、 编译所述源代码得到中间码。

具体的, 可以通过语言前端模块编译所述源代码得到中 间码, 所述语言前端模块可以是 C语言、 Python语言或 Fortran语言等语 言前端模块。

本发明实施例^^设外部例行程序的源代码由 C语言编写, 则采 用 C子语言前端模块对该源代码进行解析得到解 树, 然后再将解 析树经过编译得到中间码, 以便于任意的运行平台的虚拟机能够识 别所述中间码。 所述解析树包括根节点、 根元素节点、 节点等, 即 对该源代码进行分析, 所述生成解析树的过程为现有技术, 本发明 实施例在此不作赘述。

特别的, 在编译所述源代码得到中间码后, 执行步骤 209 , 将 所述中间码存储到数据库, 还可以将所述中间码转换成机器码, 执 行步骤 207。

步骤 207、 获取所述中间码的机器码。

运行平台包括以中央处理器为核心的集成电路 芯片组, 所述运 行平台的虚拟机屏蔽任意运行平台的指令集。 指令集是存储在中央 处理器内部, 对中央处理器运算进行指导和优化的硬程序, 指令集 可以使中央处理器更高效地运行。 可以通过运行平台获取所述中间 码的机器码。 所述运行平台可以是 x86运行平台、 PwoerPC运行平 台或 ARM运行平台等。 具体的, 可以将语言前端模块生成的外部例 行程序的中间码输入给运行平台, 运行平台可以将外部例行程序的 中间码转换成适合 x86运行平台、 PwoerPC运行平台或 ARM运行平 台等运行平台运行的机器码, 即每个运行平台所运行的机器码不同。

步骤 208、 将所述机器码存储到数据库。

在获取所述中间码的机器码后, 同理, 数据库可以生成所述机 器码的目标名称, 所述目标名称用于唯一标识所述机器码, 生成所 述机器码的目标地址, 所述目标地址用于标识所述机器码在所述数 据库中的地址。 所述目标名称和目标地址是用户不可见的, 存储在 数据库内部, 当调用该外部例行程序的机器码时, 根据该目标名称 和目标地址调用该外部例行程序的机器码。

步骤 209、 将所述中间码存储到数据库。

步骤 209 1、 生成所述中间码的目标名称。

所述目标名称用于唯一标识所述中间码。

步骤 2092、 生成所述中间码的目标地址。

所述目标地址用于标识所述中间码在所述数据 库中的地址。 需要说明的是, 在执行步骤 2091 与步骤 2092时, 可以不区分 先后顺序, 即可以先生成所述中间码的目标地址, 再生成所述中间 码的目标名称。

特别的, 在数据库生成所述中间码的目标名称和目标地 址时, 为了外部例行程序的中间码的安全更有保障编 写外部例行程序的创 始者还可以设置调用密码, 则既应该具有调用外部例行程序的中间 码权限和调用密码的用户才可以调用外部例行 程序的中间码。 现有技术中, 编译外部例行程序的源代码后, 得到外部例行程 序的目标代码, 将外部例行程序的目标代码存储到数据库中时 , 需 要接收用户设置的目标名称和目标地址, 根据所述目标名称和目标 地址将外部例行程序的目标代码存储到数据库 , 这样在管理外部例 行程序的目标代码时可能存在被删除、 替换或篡改等风险。

本发明实施例所述的数据处理方法, 将外部例行程序的中间码 存储到数据库时, 数据库生成所述中间码的目标名称, 所述目标名 称用于唯一标识所述中间码, 生成所述中间码的目标地址, 所述目 标地址用于标识所述中间码在所述数据库中的 地址。 所述目标名称 和目标地址是用户不可见的, 存储在数据库内部, 当调用该外部例 行程序的中间码时, 根据该目标名称和目标地址调用该外部例行程 序的中间码。 因此, 通过数据库控制的方法存储和管理外部例行程 序的中间码, 有效地避免了在管理外部例行程序的中间码时 存在外 部例行程序被删除、 替换或篡改等风险, 既提高了管理的严谨性又 提高了数据库中数据的安全性。

本发明实施例所述的外部例行程序的源代码只 是示意性说明, 实际应用中还可以由其他高级编程语言编写, 将其他高级编程语言 编写的外部例行程序的源代码进行编译得到中 间码, 再将所述中间 码转换成机器码的过程与本发明实施例所述的 方法相同, 在此不再 赘述。

本发明实施例所述的数据处理方法, 首先, 接收第一用户设备 发送的数据库访问请求, 根据该数据库访问请求判断第一用户设备 是否拥有访问数据库的权限, 若第一用户设备拥有访问数据库的权 限, 接收所述第一用户设备发送的外部例行程序的 源代码, 然后, 在编译所述源代码时, 检查所述源代码访问数据库中对象的范围是 否在预先设置的访问数据库中对象的范围内, 若所述源代码访问所 述数据库中对象的范围在所述预先设置的访问 所述数据库中对象的 范围内, 编译所述源代码得到中间码, 同时还可以检查所述源代码 对数据库中对象的操作是否是预先设置的对数 据库中对象的操作, 若所述源代码对所述数据库中对象的操作是预 先设置的对所述数据 库中对象的操作, 编译所述源代码得到中间码, 获取所述中间码的 机器码, 将所述机器码存储到数据库, 同时将所述中间码存储到数 据库。 相对于现有技术, 所述中间码与运行平台无关, 对于运行平 台是一种统一的编码, 即任意的运行平台的虚拟机能够识别该中间 码, 使得数据库系统中不需要内嵌不同的编译器来 编译外部例行程 序的源代码, 根据所述运行平台的指令集将所述中间码转化 为便于 在该运行平台上运行的机器码, 有效地提高了数据库系统的扩展能 力, 同时在编译该源代码时检查该源代码访问数据 库对象的范围和 检查该源代码访问数据库对象的操作有效地增 强了数据库运行安全 和数据库中的数据的安全, 以及通过数据库控制的方法存储和管理 外部例行程序的中间码和机器码, 有效地避免了在管理外部例行程 序的中间码和机器码时存在外部例行程序被删 除、 替换或篡改等风 险, 既提高了管理的严谨性又提高了数据库中数据 的安全性。

本发明实施例提供一种数据处理方法, 假设数据库中存储有外 部例行程序的中间码, 4艮设外部例行程序由 C语言编写, 如图 3所 示, 包括:

步骤 301、 接收第二用户设备发送的调用外部例行程序的 请求。 假设第二用户可以通过第二用户设备在数据库 中已经注册, 当 第二用户通过第二用户设备访问该数据库时, 数据库判断第二用户 是该数据库中的合法用户, 则允许第二用户通过第二用户设备访问 所述数据库。 然后, 当第二用户需要调用外部例行程序时, 第二用 户可以通过第二用户设备向数据库发送调用外 部例行程序的请求, 接收第二用户设备发送的外部例行程序调用请 求。

步骤 302、 根据所述调用所述外部例行程序的请求判断第 二用 户设备是否拥有调用所述外部例行程序的权限 。

该数据库的管理员可以对第二用户在数据库中 的权限进行设 置, 若所述第二用户设备没有调用所述外部例行程 序的权限, 即对 于调用该源程序的第二用户为非法用户, 执行步骤 3021。

若所述第二用户设备拥有调用所述外部例行程 序的权限, 从数 据库调用所述外部例行程序。 需要说明的是, 数据库中存储有该外 部例行程序的函数名, 可以根据所述外部例行程序的函数名调用该 外部例行程序, 然后, 在数据库内部根据存储外部例行程序的中间 码或机器码的目标名称和目标地址来调用外部 例行程序的中间码或 机器码来运行该外部例行程序, 以便于给用户返回调用结果。

步骤 302 1、 禁止第二用户设备调用所述外部例行程序。

数据库系统可以向第二用户设备提示操作错误 , 禁止第二用户 设备调用所述外部例行程序。

示例的, 假设所述外部例行程序为公司的财务部门的财 务工作 人员制作工资时所需要使用的程序。 每个月公司的财务部门的财务 工作人员为公司员工制作当月的员工工资时, 可以调用该外部例行 程序对员工的工资进行计算修改, 然后将员工工资表存储到数据库 中, 所述员工工资表包括公司 内每个员工当月的工资。 数据库的管 理员设置只有制作所述员工工资表的财务工作 人员和公司的董事长 可以通过用户设备访问数据库中的员工工资表 , 且可以调用该外部 例行程序对该员工工资表进行修改等操作, 而公司的部门领导可以 通过用户设备访问数据库查看员工工资表中该 部门员工的工资和自 己的工资, 但是, 公司的部门领导不能调用该外部例行程序对所 访 问的该部门员工的工资和自 己的工资进行修改等操作, 公司普通员 工通过用户设备访问数据库只能查看员工工资 表中 自 己的工资, 也 不能调用该外部例行程序对自 己的工资进行修改等操作。

本发明实施例假设第二用户设备拥有调用所述 外部例行程序的 权限, 执行步骤 303。

步骤 303、 获取所述调用请求的结果。

步骤 304、 调用虚拟机执行所述外部例行程序的中间码。

当调用请求的结果是该外部例行程序的中间码 , 调用运行平台 的虚拟机执行所述外部例行程序的中间码。

现有技术中, 在用户通过用户设备调用外部例行程序时, 不需 要判断调用外部例行程序的用户权限, 直接调用所述外部例行程序, 这样可能影响数据库对象的安全性或稳定性。

本发明实施例所述的数据处理方法, 在用户通过用户设备调用 外部例行程序时, 首先需要判断调用外部例行程序的用户权限, 只 有拥有调用外部例行程序权限的用户, 才能通过用户设备调用该外 部例行程序。 相对于现有技术, 在用户设备调用外部例行程序之前, 增加了判断用户调用权限环节, 有效地提高了数据库对象的安全性 或稳定性。

示例的, 4艮设数据库为结构化查询语言数据库 ( 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 所示。

表 1 Sql Server数据库的权限 权限级别 权限 数据库、 表或索引 CREATE创建数据库、 表或索引 数据库或表 DROP删除数据库或表 数据库、 表或保存的程序 GRANT OPTION赋予权限选项 表 ALTER更改表, 如添力口字段、 索引 等 表 DELETE删除数据 表 INDEX索引 表 INSERT插入 表 SELECT查询 表 UPDATE更新 视图 CREATE VIEW创建视图 视图 SHOW VIEW查看视图 存储过程 ALTER ROUTINE更改存储过程 存储过程 CREATE ROUTINE创建存储过程 存储过程 EXECUTE执行存储过程 服务器主机上的文件访 FILE文件访问

问 服务器管理 CREATE TEMPORARY TABLES 创建临时表 服务器管理 LOCK TABLES锁表 服务器管理 CREATE USER创建用户 服务器管理 PROCESS查看进程 服务器管理 RELOAD执行重新安装命令 服务器管理 REPLICATION CLIENT复制 服务器管理 REPLICATION SLAVE复制 服务器管理 SHOW DATABASES查看数据库 服务器管理 SHUTDOWN关闭数据库 服务器管理 SUPER执行线程

本发明实施例所述的数据处理方法, 首先, 接收第二用户设备 发送的外部例行程序调用请求, 然后, 根据所述外部例行程序调用 请求判断第二用户设备是否拥有调用所述外部 例行程序的权限, 若 所述第二用户设备拥有调用所述外部例行程序 的权限, 从数据库调 用所述外部例行程序, 获取所述调用请求的结果, 调用虚拟机执行 所述外部例行程序的中间码。 相对于现有技术, 在用户设备调用外 部例行程序时, 增加了判断用户调用权限环节, 有效地提高了数据 库对象的安全性或稳定性。

本发明实施例提供一种数据处理方法, 假设数据库中存储有外 部例行程序的机器码, 假设外部例行程序由 C语言编写, 如图 4所 示, 包括:

步骤 401、 接收第二用户设备发送的调用外部例行程序的 请求。 假设第二用户可以通过第二用户设备在数据库 中已经注册, 当 第二用户通过第二用户设备访问该数据库时, 数据库判断第二用户 是该数据库中的合法用户, 则允许第二用户通过第二用户设备访问 所述数据库。 然后, 当第二用户需要调用外部例行程序时, 第二用 户可以通过第二用户设备向数据库发送调用外 部例行程序的请求, 接收第二用户设备发送的外部例行程序调用请 求。

步骤 402、 根据所述调用所述外部例行程序的请求判断第 二用 户设备是否拥有调用所述外部例行程序的权限 。

该数据库的管理员可以对第二用户在数据库中 的权限进行设 置, 若所述第二用户设备没有调用所述外部例行程 序的权限, 即对 于调用该源程序的第二用户为非法用户, 执行步骤 4021。

若所述第二用户设备拥有调用所述外部例行程 序的权限, 从数 据库调用所述外部例行程序。 需要说明的是, 数据库中存储有该外 部例行程序的函数名, 可以根据所述外部例行程序的函数名调用该 外部例行程序, 然后, 在数据库内部根据存储外部例行程序的中间 码或机器码的目标名称和目标地址来调用外部 例行程序的中间码或 机器码来运行该外部例行程序, 以便于给用户返回调用结果。

步骤 402 1、 禁止第二用户设备调用所述外部例行程序。

数据库系统可以向第二用户设备提示操作错误 , 禁止第二用户 设备调用所述外部例行程序。

本发明实施例假设第二用户设备拥有调用所述 外部例行程序的 权限, 执行步骤 403。

步骤 403、 获取所述调用请求的结果。

步骤 404、 直接执行所述外部例行程序的机器码。

当调用请求的结果是该外部例行程序的机器码 , 利用该机器码 所述对应的运行平台运行该外部例行程序的机 器码。

现有技术中, 在用户通过用户设备调用外部例行程序时, 不需 要判断调用外部例行程序的用户权限, 直接调用所述外部例行程序, 这样可能影响数据库对象的安全性或稳定性。

本发明实施例所述的数据处理方法, 在用户通过用户设备调用 外部例行程序时, 首先需要判断调用外部例行程序的用户权限, 只 有拥有调用外部例行程序权限的用户, 才能通过用户设备调用该外 部例行程序。 相对于现有技术, 在用户设备调用外部例行程序之前, 增加了判断用户调用权限环节, 有效地提高了数据库对象的安全性 或稳定性。

本发明实施例所述的数据处理方法, 首先, 接收第二用户设备 发送的外部例行程序调用请求, 然后, 根据所述外部例行程序调用 请求判断第二用户设备是否拥有调用所述外部 例行程序的权限, 若 所述第二用户设备拥有调用所述外部例行程序 的权限, 从数据库调 用所述外部例行程序, 获取所述调用请求的结果, 直接执行所述外 部例行程序的机器码。 相对于现有技术, 在用户设备调用外部例行 程序时, 增加了判断用户调用权限环节, 有效地提高了数据库对象 的安全性或稳定性。

示例的, 如图 5所示, 通过外部例行程序的逻辑框架图对外部 例行程序的源代码进行编译得到中间码或机器 码, 并运行该中间码 或机器码的过程进行描述。 首先, 将外部例行程序的源代码输入给 语言前端模块 501 , 语言前端模块 501 对该源代码进行解析编译得 到解析树, 将解析树进行编译, 同时, 通过鉴权模块 502 判断该源 代码对数据库对象进行访问或操作等是否安全 , 若该源代码对数据 库对象进行访问或操作等安全, 得到该源代码的中间码, 然后, 将 该中间码输入给中间码模块 503 , 该中间码模块 503 通过存储管理 模块 504 将该源代码的中间码存储到数据库中, 最后, 中间码模块 503将该源代码的中间码输入给运行平台 505 , 运行平台 505将该源 代码的中间码转换成机器码, 以便于在运行平台上执行该外部例行 程序得到预期的结果。 或者, 若没有将源代码的中间码转换成机器 码时, 当需要调用该外部例行程序时, 将该源代码的中间码输入给 虚拟机执行模块 506 , 虚拟机执行模块 506 将该源代码的中间码转 换成机器码的同时执行该机器码。

需要说明的是, 语言前端模块 501可以是 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还包括: 调用单元 601 1 ,

所述第二接收单元 601还用于接收第二用户设备发送的调用所 述外部例行程序的请求。 所述第一判断单元 602还用于根据所述调用所述外部例行程序 的请求判断所述第二用户设备是否拥有调用所 述外部例行程序的权 限。

所述调用单元 601 1用于在所述第一判断单元 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 , 磁碟或 者光盘等各种可以存储程序代码的介质。

以上所述, 仅为本发明的具体实施方式, 但本发明的保护范围 并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露 的技 术范围内, 可轻易想到变化或替换, 都应涵盖在本发明的保护范围 之内。 因此, 本发明的保护范围应以所述权利要求的保护范 围为准。