CN103838614A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN103838614A
CN103838614A CN201410055711.9A CN201410055711A CN103838614A CN 103838614 A CN103838614 A CN 103838614A CN 201410055711 A CN201410055711 A CN 201410055711A CN 103838614 A CN103838614 A CN 103838614A
Authority
CN
China
Prior art keywords
database
code
source code
external routine
intermediate code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201410055711.9A
Other languages
English (en)
Other versions
CN103838614B (zh
Inventor
孙东旺
文继军
王传廷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201410055711.9A priority Critical patent/CN103838614B/zh
Publication of CN103838614A publication Critical patent/CN103838614A/zh
Priority to PCT/CN2014/081141 priority patent/WO2015123956A1/zh
Priority to EP14856790.2A priority patent/EP2937782B1/en
Priority to US14/753,232 priority patent/US9430198B2/en
Application granted granted Critical
Publication of CN103838614B publication Critical patent/CN103838614B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

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

Description

一种数据处理方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种数据处理方法及装置。
背景技术
外部例行程序(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为本发明实施例提供一种数据处理方法流程图;
图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、编译所述源代码得到中间码。
具体的,可以通过语言前端模块编译所述源代码得到中间码,所述语言前端模块可以是C语言、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数据库的权限
Figure BDA0000467206300000171
本发明实施例所述的数据处理方法,首先,接收第二用户设备发送的外部例行程序调用请求,然后,根据所述外部例行程序调用请求判断第二用户设备是否拥有调用所述外部例行程序的权限,若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序,获取所述调用请求的结果,调用虚拟机执行所述外部例行程序的中间码。相对于现有技术,在用户设备调用外部例行程序时,增加了判断用户调用权限环节,有效地提高了数据库对象的安全性或稳定性。
本发明实施例提供一种数据处理方法,假设数据库中存储有外部例行程序的机器码,假设外部例行程序由C语言编写,如图4所示,包括:
步骤401、接收第二用户设备发送的调用外部例行程序的请求。
假设第二用户可以通过第二用户设备在数据库中已经注册,当第二用户通过第二用户设备访问该数据库时,数据库判断第二用户是该数据库中的合法用户,则允许第二用户通过第二用户设备访问所述数据库。然后,当第二用户需要调用外部例行程序时,第二用户可以通过第二用户设备向数据库发送调用外部例行程序的请求,接收第二用户设备发送的外部例行程序调用请求。
步骤402、根据所述调用所述外部例行程序的请求判断第二用户设备是否拥有调用所述外部例行程序的权限。
该数据库的管理员可以对第二用户在数据库中的权限进行设置,若所述第二用户设备没有调用所述外部例行程序的权限,即对于调用该源程序的第二用户为非法用户,执行步骤4021。
若所述第二用户设备拥有调用所述外部例行程序的权限,从数据库调用所述外部例行程序。需要说明的是,数据库中存储有该外部例行程序的函数名,可以根据所述外部例行程序的函数名调用该外部例行程序,然后,在数据库内部根据存储外部例行程序的中间码或机器码的目标名称和目标地址来调用外部例行程序的中间码或机器码来运行该外部例行程序,以便于给用户返回调用结果。
步骤4021、禁止第二用户设备调用所述外部例行程序。
数据库系统可以向第二用户设备提示操作错误,禁止第二用户设备调用所述外部例行程序。
本发明实施例假设第二用户设备拥有调用所述外部例行程序的权限,执行步骤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还包括:调用单元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、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (14)

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任一项权利要求所述的数据处理装置,其特征在于,还包括调用单元:
所述第二接收单元还用于接收第二用户设备发送的调用所述外部例行程序的请求;
所述第一判断单元还用于根据所述调用所述外部例行程序的请求判断所述第二用户设备是否拥有调用所述外部例行程序的权限;
所述调用单元用于在所述第一判断单元判断出所述第二用户设备拥有调用所述外部例行程序的权限时,运行所述机器码,以实现从所述数据库内调用所述外部例行程序。
CN201410055711.9A 2014-02-19 2014-02-19 一种数据处理方法及装置 Active CN103838614B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201410055711.9A CN103838614B (zh) 2014-02-19 2014-02-19 一种数据处理方法及装置
PCT/CN2014/081141 WO2015123956A1 (zh) 2014-02-19 2014-06-30 一种数据处理方法及装置
EP14856790.2A EP2937782B1 (en) 2014-02-19 2014-06-30 Data processing method and device
US14/753,232 US9430198B2 (en) 2014-02-19 2015-06-29 Data processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410055711.9A CN103838614B (zh) 2014-02-19 2014-02-19 一种数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN103838614A true CN103838614A (zh) 2014-06-04
CN103838614B CN103838614B (zh) 2017-12-22

Family

ID=50802147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410055711.9A Active CN103838614B (zh) 2014-02-19 2014-02-19 一种数据处理方法及装置

Country Status (4)

Country Link
US (1) US9430198B2 (zh)
EP (1) EP2937782B1 (zh)
CN (1) CN103838614B (zh)
WO (1) WO2015123956A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015123956A1 (zh) * 2014-02-19 2015-08-27 华为技术有限公司 一种数据处理方法及装置
CN105700854A (zh) * 2014-11-25 2016-06-22 杭州海康威视数字技术股份有限公司 运行应用任务的方法及装置
CN107508783A (zh) * 2016-06-14 2017-12-22 阿里巴巴集团控股有限公司 一种数据的处理方法和装置
CN107710150A (zh) * 2015-06-15 2018-02-16 高通股份有限公司 从包含层次子例程信息的中间代码产生目标代码
CN108415719A (zh) * 2018-03-29 2018-08-17 网易(杭州)网络有限公司 代码热更新方法和装置、存储介质、处理器及终端
CN110287378A (zh) * 2019-05-24 2019-09-27 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN111625782A (zh) * 2020-05-25 2020-09-04 杭州安恒信息技术股份有限公司 源码的访问权限控制方法、装置、计算机设备和存储介质
CN112333482A (zh) * 2019-08-05 2021-02-05 广州虎牙科技有限公司 一种列表的处理方法、装置、设备和存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648681A (zh) * 2016-12-29 2017-05-10 南京科远自动化集团股份有限公司 一种可编程语言编译装载系统及方法
CN108763406B (zh) * 2018-05-23 2021-08-17 重庆第二师范学院 一种基于云服务器的计算机电子信息储存方法
CN110597891B (zh) * 2018-06-12 2022-06-21 武汉斗鱼网络科技有限公司 MySQL聚合为PostgreSQL数据库的设备、系统、方法、存储介质
US11385940B2 (en) 2018-10-26 2022-07-12 EMC IP Holding Company LLC Multi-cloud framework for microservice-based applications
US11533317B2 (en) * 2019-09-30 2022-12-20 EMC IP Holding Company LLC Serverless application center for multi-cloud deployment of serverless applications

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3527765B2 (ja) * 1993-11-29 2004-05-17 富士通株式会社 プログラムキャッシュ装置
US6574673B1 (en) * 1997-10-31 2003-06-03 Oracle Corporation Data type mapping for external callouts
US6243860B1 (en) * 1998-10-30 2001-06-05 Westinghouse Electric Company Llc Mechanism employing a memory area for exchanging information between a parent process and a child process compiled during execution of the parent process or between a run time compiler process and an application process
US6711579B2 (en) * 2001-04-20 2004-03-23 Sree Ayyanar Spinning And Weaving Mills Limited Data storage schema independent programming for data retrieval using semantic bridge
US20040225747A1 (en) * 2003-05-09 2004-11-11 Zafer Kadi Providing compiled bytecode applications to a wireless device
US7383255B2 (en) 2003-06-23 2008-06-03 Microsoft Corporation Common query runtime system and application programming interface
US20070038662A1 (en) * 2005-08-04 2007-02-15 Peter Bendel Method and system for managing external routines in a database management system
US8578339B2 (en) * 2007-09-26 2013-11-05 Symantec Corporation Automatically adding bytecode to a software application to determine database access information
US8365153B2 (en) * 2007-10-26 2013-01-29 Qualcomm Incorporated Server-based code compilation
US8856809B2 (en) * 2008-03-19 2014-10-07 International Business Machines Corporation Controlling navigation of application logic using annotated application code
DE112009001892T5 (de) 2008-07-31 2011-07-21 Dustin Kurt Calif. Adler Datensatz basierte Codestruktur
US8171045B2 (en) * 2008-07-31 2012-05-01 Xsevo Systems, Inc. Record based code structure
CN101499093A (zh) * 2009-03-05 2009-08-05 国电南瑞科技股份有限公司 一种监控系统内存数据库通用交互方法
CN101504613B (zh) * 2009-03-12 2011-09-28 上海交通大学 用于受限系统的分布式动态二进制翻译方法
CN102667717A (zh) * 2009-12-21 2012-09-12 诺基亚公司 用于编译的方法、装置和系统
US9104484B2 (en) * 2010-04-21 2015-08-11 Salesforce.Com, Inc. Methods and systems for evaluating bytecode in an on-demand service environment including translation of apex to bytecode
US20110296386A1 (en) * 2010-05-28 2011-12-01 Salesforce.Com, Inc. Methods and Systems for Validating Changes Submitted to a Source Control System
CN102419714B (zh) * 2010-09-28 2015-01-07 程碧波 程序编译方法、编译器及计算机
US20130124686A1 (en) * 2011-11-16 2013-05-16 Université d'Orléans System and a Method for Sharing Computing Resources Associated to Scientific Publications
CN103309779B (zh) * 2013-06-14 2016-07-06 广东电网公司电力科学研究院 智能变电站二次设备状态检测方法
CN103838614B (zh) * 2014-02-19 2017-12-22 华为技术有限公司 一种数据处理方法及装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015123956A1 (zh) * 2014-02-19 2015-08-27 华为技术有限公司 一种数据处理方法及装置
US9430198B2 (en) 2014-02-19 2016-08-30 Huawei Technologies Co., Ltd. Data processing method and apparatus
CN105700854A (zh) * 2014-11-25 2016-06-22 杭州海康威视数字技术股份有限公司 运行应用任务的方法及装置
CN105700854B (zh) * 2014-11-25 2019-05-28 杭州海康威视数字技术股份有限公司 运行应用任务的方法及装置
CN107710150A (zh) * 2015-06-15 2018-02-16 高通股份有限公司 从包含层次子例程信息的中间代码产生目标代码
CN107508783A (zh) * 2016-06-14 2017-12-22 阿里巴巴集团控股有限公司 一种数据的处理方法和装置
CN108415719B (zh) * 2018-03-29 2019-03-19 网易(杭州)网络有限公司 代码热更新方法和装置、存储介质、处理器及终端
CN108415719A (zh) * 2018-03-29 2018-08-17 网易(杭州)网络有限公司 代码热更新方法和装置、存储介质、处理器及终端
US11720344B2 (en) 2018-03-29 2023-08-08 Netease (Hangzhou) Network Co., Ltd. Code hot-update method and device, storage medium, processor, and terminal
CN110287378A (zh) * 2019-05-24 2019-09-27 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN110287378B (zh) * 2019-05-24 2021-10-19 中国科学院计算技术研究所 一种基于动态代码生成的图计算方法及系统
CN112333482A (zh) * 2019-08-05 2021-02-05 广州虎牙科技有限公司 一种列表的处理方法、装置、设备和存储介质
CN112333482B (zh) * 2019-08-05 2023-01-06 广州虎牙科技有限公司 一种列表的处理方法、装置、设备和存储介质
CN111625782A (zh) * 2020-05-25 2020-09-04 杭州安恒信息技术股份有限公司 源码的访问权限控制方法、装置、计算机设备和存储介质
CN111625782B (zh) * 2020-05-25 2023-09-19 杭州安恒信息技术股份有限公司 源码的访问权限控制方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN103838614B (zh) 2017-12-22
US9430198B2 (en) 2016-08-30
EP2937782A1 (en) 2015-10-28
EP2937782A4 (en) 2016-04-20
WO2015123956A1 (zh) 2015-08-27
US20150301810A1 (en) 2015-10-22
EP2937782B1 (en) 2022-10-19

Similar Documents

Publication Publication Date Title
CN103838614A (zh) 一种数据处理方法及装置
CN110297689B (zh) 智能合约执行方法、装置、设备及介质
US11789715B2 (en) Systems and methods for transformation of reporting schema
US9715593B2 (en) Software vulnerabilities detection system and methods
US11663110B2 (en) Analysis to check web API code usage and specification
US9824214B2 (en) High performance software vulnerabilities detection system and methods
US7877812B2 (en) Method, system and computer program product for enforcing privacy policies
Zeng et al. Managing risk in multi-node automation of endpoint management
US20240045850A1 (en) Systems and methods for database orientation transformation
CN102073490A (zh) 转译数据库语言的方法及装置
KR20090065183A (ko) 셀트 문법 형식의 셀이눅스 보안정책 자동 생성 장치 및방법
US20200167444A1 (en) Systems and methods for software license management
CN113760947A (zh) 一种数据中台、数据处理方法、装置、设备及存储介质
CN110162963B (zh) 一种识别过权应用程序的方法
CN106020923B (zh) SELinux策略的编译方法及系统
CN106598825A (zh) 电子设备、规范日志代码输出方法及装置
CN107944288B (zh) 一种数据访问控制方法和装置
Tsuru et al. Type-2 code clone detection for Dockerfiles
CN113238739A (zh) 一种插件开发和数据获取方法、装置、电子设备及介质
WO2018175607A1 (en) System and method for providing secure access to production files in a code deployment environment
Xie et al. Idea: interactive support for secure software development
CN114116471A (zh) 一种自动化代码扫描方法、系统、电子设备与存储介质
KR20140054913A (ko) 분산된 시스템을 위한 데이터 오류 처리 장치 및 방법
CN107766702A (zh) 代码混淆方法、装置及计算机可读存储介质
CN105809495A (zh) 依赖后台无自主界面的开票系统及提供该系统的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant