一种为数据库增加多语言动态编译执行引擎的方法和系统技术方案

技术编号:14299178 阅读:99 留言:0更新日期:2016-12-26 04:28
本发明专利技术公开了一种为数据库增加多语言动态编译执行引擎的方法和系统,该方法在数据库数据操作过程中、自定义函数执行时或存储过程执行时,当执行扩展逻辑函数时,判断脚本仓库中是否有扩展逻辑函数对应的扩展脚本代码,若有,根据扩展脚本代码对应的参数标识值,检测内存是否已经编译存在扩展脚本代码对应的脚本扩展实例;若存在,从内存读取定位已编译的脚本扩展实例,将调用所述脚本扩展实例的上下文参数传入所述脚本扩展实例,判断脚本扩展实例是同步运行还是异步运行;若是同步运行,则由多语言动态脚本执行引擎驱动运行脚本扩展实例,若是异步运行,则由后台新的线程运行,或将运行脚本扩展实例的任务放入到任务队列。

【技术实现步骤摘要】

本专利技术属于计算机
,具体涉及一种为数据库增加多语言动态编译执行引擎的方法和系统
技术介绍
在SQL Server或Oracle中如果需要编程实现一定的逻辑处理,则需要使用T-SQL(或PL-SQL)来实现,这些语言属于过程化语言,只具有最基本的变量定义、执行流控制、系统功能函数,另外T-SQL本身不适合做复杂的逻辑判断和逻辑运算,无法实现复杂的数据结构、编写效率较低,缺乏面向对象的灵活性,在开发工具中也没有代码自动提示、补全,也没有配色和强大的人性化的调试功能。现有数据库的功能作用只是对于数据的增删改查,无法对数据进行数据逻辑方面的处理,如对数据的分析、转换、过滤、清洗、挖掘、路由、预测等复杂的高级逻辑分析处理,而系统自带的函数较少且功能有限、使用T-SQL编写效率低,容易出错,无法满足更为复杂的数据逻辑分析处理。
技术实现思路
本专利技术所要解决的技术问题是如何使得数据库实现更为复杂的业务逻辑判断和逻辑运算,提高数据库的扩展性和灵活性。。针对以上技术问题,本专利技术提供了一种为数据库增加多语言动态编译执行引擎的方法,包括:S1:数据库数据操作过程中、自定义函数执行时或存储过程执行时,当执行扩展逻辑函数时,判断脚本仓库中是否有所述扩展逻辑函数对应的扩展脚本代码;S2:若所述脚本仓库中有所述扩展逻辑函数对应的扩展脚本代码,根据所述扩展脚本代码对应的参数标识值,检测内存是否已经编译存在所述扩展脚本代码对应的脚本扩展实例;S3:若已经编译存在所述脚本扩展实例,从内存读取定位已编译的脚本扩展实例,将调用所述脚本扩展实例的上下文参数传入所述脚本扩展实例,判断所述脚本扩展实例是同步运行还是异步运行;S4:若所述脚本扩展实例是同步运行,则由多语言动态脚本执行引擎驱动运行所述脚本扩展实例,若所述脚本扩展实例是异步运行,则由后台新的线程运行,或将运行所述脚本扩展实例的任务放入到任务队列等待运行;其中,所述扩展逻辑函数对应的扩展脚本代码是根据需要扩展的业务编写并存储至脚本仓库中的扩展脚本代码。优选地,所述步骤S3还包括:若不存在编译的所述脚本扩展实例,则将所述扩展脚本代码载入多语言动态脚本编译引擎,加载扩展拦截语言所需要的外部关联模块和资源进行编译,将编译后的内存字节存储于内存并实例化,以得到所述脚本扩展实例;其中,所述扩展脚本代码根据需要采用预设语言进行编写,所述多语言动态脚本编译引擎用于对采用所述预设语言编写的扩展脚本代码进行编译。优选地,所述步骤S2还包括:若所述脚本仓库中没有所述扩展逻辑函数对应的扩展脚本代码,则结束所述扩展逻辑函数执行过程。优选地,所述步骤S4还包括:检测所述脚本扩展实例的运行过程是否出现异常或运行过程超时,若所述脚本扩展实例的运行过程没有出现异常和运行过程超时,则返回正常运行结果,若出现异常,异步记录运行的异常信息并返回,若运行过程超时,异步记录运行过程超时的时长并返回。优选地,将所述扩展逻辑函数对应的扩展脚本代码存储至脚本仓库中的过程包括:根据需要扩展的业务,编写扩展脚本代码;检验所述扩展脚本代码是否能正常编译,若是,将所述扩展脚本代码存储至所述脚本仓库,否则,对所述扩展脚本代码进行修改,以使所述扩展脚本代码能正常编译,并将能正常编译的扩展脚本代码存储至所述脚本仓库。另一方面,本专利技术还提供了一种为数据库增加多语言动态编译执行引擎的系统,,包括:第一判断模块,用于在数据库数据操作过程中、自定义函数执行时或存储过程执行时,当执行扩展逻辑函数时,判断脚本仓库中是否有所述扩展逻辑函数对应的扩展脚本代码;检测模块,用于在所述脚本仓库中有所述扩展逻辑函数对应的扩展脚本代码时,根据所述扩展脚本代码对应的参数标识值,检测内存是否已经编译存在所述扩展脚本代码对应的脚本扩展实例;第二判断模块,用于在已经编译存在所述脚本扩展实例时,从内存读取定位已编译的脚本扩展实例,将调用所述脚本扩展实例的上下文参数传入所述脚本扩展实例,判断所述脚本扩展实例是同步运行还是异步运行;运行模块,用于在所述脚本扩展实例是同步运行时,由多语言动态脚本执行引擎驱动运行所述脚本扩展实例,在所述脚本扩展实例是异步运行时,则由后台新的线程运行,或将运行所述脚本扩展实例的任务放入到任务队列等待运行;其中,所述扩展逻辑函数对应的扩展脚本代码是根据需要扩展的业务编写并存储至脚本仓库中的扩展脚本代码。优选地,所述第二判断模块还用于在不存在编译的所述脚本扩展实例时,将所述扩展脚本代码载入多语言动态脚本编译引擎,加载扩展拦截语言所需要的外部关联模块和资源进行编译,将编译后的内存字节存储于内存并实例化,以得到所述脚本扩展实例;其中,所述扩展脚本代码根据需要采用预设语言进行编写,所述多语言动态脚本编译引擎用于对采用所述预设语言编写的扩展脚本代码进行编译。优选地,所述检测模块还用于在所述脚本仓库中没有所述扩展逻辑函数对应的扩展脚本代码时,结束所述扩展逻辑函数执行过程。优选地,所述运行模块还用于检测所述脚本扩展实例的运行过程是否出现异常或运行过程超时,若所述脚本扩展实例的运行过程没有出现异常和运行过程超时,则返回正常运行结果,若出现异常,异步记录运行的异常信息并返回,若运行过程超时,异步记录运行过程超时的时长并返回。优选地,还包括:将所述扩展逻辑函数对应的扩展脚本代码存储至脚本仓库中的存储模块;所述存储模块用于根据需要扩展的业务,编写扩展脚本代码;检验所述扩展脚本代码是否能正常编译,若是,将所述扩展脚本代码存储至所述脚本仓库,否则,对所述扩展脚本代码进行修改,以使所述扩展脚本代码能正常编译,并将能正常编译的扩展脚本代码存储至所述脚本仓库。本专利技术提供的为数据库增加多语言动态编译执行引擎的方法和系统,在数据库数据操作过程中,通过对在线添加的扩展逻辑函数的执行,使得数据库能够实现数据逻辑的处理,如数据的实时清洗、同步、复制、分析、压缩、合并、拆分、转换、报警、加密、解密、正则表达式、xml数据操作等等自定义更为高级的分析函数和逻辑处理函数。同时,由于数据与逻辑在同一台服务器,使算法逻辑与数据紧密结合,可以进行多线程同步并行数据处理,对数据的变化进行实时监测处理,充分改善数据库的性能和可扩展性能。其次,多语言动态编译和执行引擎还增加了异步编程执行队列模型,可以减少网络交互节约大量IO网络流量,以此缩短响应时间,提高吞吐量。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例提供的为数据库增加多语言动态编译执行引擎的方法的流程示意图;图2是本专利技术实施例提供的为数据库增加多语言动态编译执行引擎的系统的结构框图;图3是本专利技术实施例提供的数据库调用扩展逻辑函数的过程示意图;图4是本专利技术实施例提供的扩展逻辑函数存储过程示例图;图5是本专利技术实施例提供的为数据库增加多语言动态编译执行引擎的具体运行过程流程示意图;图6是本专利技术实施例提供的在线开发逻辑示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本本文档来自技高网...
一种为数据库增加多语言动态编译执行引擎的方法和系统

【技术保护点】
一种为数据库增加多语言动态编译执行引擎的方法,其特征在于,包括:S1:数据库数据操作过程中、自定义函数执行时或存储过程执行时,当执行扩展逻辑函数时,判断脚本仓库中是否有所述扩展逻辑函数对应的扩展脚本代码;S2:若所述脚本仓库中有所述扩展逻辑函数对应的扩展脚本代码,根据所述扩展脚本代码对应的参数标识值,检测内存是否已经编译存在所述扩展脚本代码对应的脚本扩展实例;S3:若已经编译存在所述脚本扩展实例,从内存读取定位已编译的脚本扩展实例,将调用所述脚本扩展实例的上下文参数传入所述脚本扩展实例,判断所述脚本扩展实例是同步运行还是异步运行;S4:若所述脚本扩展实例是同步运行,则由多语言动态脚本执行引擎驱动运行所述脚本扩展实例,若所述脚本扩展实例是异步运行,则由后台新的线程运行,或将运行所述脚本扩展实例的任务放入到任务队列等待运行;其中,所述扩展逻辑函数对应的扩展脚本代码是根据需要扩展的业务编写并存储至脚本仓库中的扩展脚本代码。

【技术特征摘要】
1.一种为数据库增加多语言动态编译执行引擎的方法,其特征在于,包括:S1:数据库数据操作过程中、自定义函数执行时或存储过程执行时,当执行扩展逻辑函数时,判断脚本仓库中是否有所述扩展逻辑函数对应的扩展脚本代码;S2:若所述脚本仓库中有所述扩展逻辑函数对应的扩展脚本代码,根据所述扩展脚本代码对应的参数标识值,检测内存是否已经编译存在所述扩展脚本代码对应的脚本扩展实例;S3:若已经编译存在所述脚本扩展实例,从内存读取定位已编译的脚本扩展实例,将调用所述脚本扩展实例的上下文参数传入所述脚本扩展实例,判断所述脚本扩展实例是同步运行还是异步运行;S4:若所述脚本扩展实例是同步运行,则由多语言动态脚本执行引擎驱动运行所述脚本扩展实例,若所述脚本扩展实例是异步运行,则由后台新的线程运行,或将运行所述脚本扩展实例的任务放入到任务队列等待运行;其中,所述扩展逻辑函数对应的扩展脚本代码是根据需要扩展的业务编写并存储至脚本仓库中的扩展脚本代码。2.根据权利要求1中的方法,其特征在于,所述步骤S3还包括:若不存在编译的所述脚本扩展实例,则将所述扩展脚本代码载入多语言动态脚本编译引擎,加载扩展拦截语言所需要的外部关联模块和资源进行编译,将编译后的内存字节存储于内存并实例化,以得到所述脚本扩展实例;其中,所述扩展脚本代码根据需要采用预设语言进行编写,所述多语言动态脚本编译引擎用于对采用所述预设语言编写的扩展脚本代码进行编译。3.根据权利要求1中的方法,其特征在于,所述步骤S2还包括:若所述脚本仓库中没有所述扩展逻辑函数对应的扩展脚本代码,则结束所述扩展逻辑函数执行过程。4.根据权利要求1中的方法,其特征在于,所述步骤S4还包括:检测所述脚本扩展实例的运行过程是否出现异常或运行过程超时,若所述脚本扩展实例的运行过程没有出现异常和运行过程超时,则返回正常运行结果,若出现异常,异步记录运行的异常信息并返回,若运行过程超时,异步记录运行过程超时的时长并返回。5.根据权利要求1中的方法,其特征在于,将所述扩展逻辑函数对应的扩展脚本代码存储至脚本仓库中的过程包括:根据需要扩展的业务,编写扩展脚本代码;检验所述扩展脚本代码是否能正常编译,若是,将所述扩展脚本代码存储至所述脚本仓库,否则,对所述扩展脚本代码进行修改,以使所述扩展脚本代码能正常编译,并将能正常编译的扩展脚本代码存储至所述脚本仓库。6.一种为数据库增加多语言动态编译执...

【专利技术属性】
技术研发人员:闫观涛刘生权张庆化梅宝强熊品卿薛腾腾
申请(专利权)人:北京北森云计算股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1