发明名称 一种基于OCI 9的数据库访问中间件
摘要 本发明公开了一种基于OCI 9的数据库访问中间件,涉及计算机应用领域尤其可应用于分布式系统中访问数据库的实现。通过开发一个基于OCI技术,结合网络技术和多线程技术的运行于数据库服务器上的中间件,包括中间件运行端、客户端和一个使用客户端的剩余记录收集端构成;运行端部署于数据库服务器上,客户端以动态库或静态库的形式提供给需要访问数据库的进程使用,剩余记录收集端以进程的形式运行于每个需要访问数据库的主机中。可以使系统中除服务器外的主机访问数据库不基于OCI接口,不会出现无法控制的超长时间阻塞;克服了访问ORACLE数据库时发生异常,客户端长时间阻塞以及数据丢失或解决无OCI实现的操作系统平台访问数据库的问题。
申请公布号 CN101814077B 申请公布日期 2012.04.11
申请号 CN200910216546.X 申请日期 2009.12.04
申请人 四川川大智胜软件股份有限公司 发明人 胡术;刘建波;吴志红;季玉龙;刘舒
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 成都信博专利代理有限责任公司 51200 代理人 卓仲阳;舒启龙
主权项 一种基于OCI 9的数据库访问中间件系统,运行于空管系统ATC的UNIX系统中,包括中间件运行端MDB、客户端DBC和一个使用客户端的剩余记录收集端DUMP构成,运行端MDB部署于数据库服务器上,客户端DBC以动态库或静态库的形式提供给需要访问数据库的进程使用,剩余记录收集端DUMP以进程的形式运行于每个需要访问数据库的主机中,其特征在于:(1)所述中间件运行端MDB运行于数据库服务器上,使用OCI 9访问数据库,其运行时的侦听端口作为命令行参数传入,随侦听端口不同可以运行为几个不同的实例,运行端MDB设计为每一个客户端DBC的连接创建一个线程,该线程在接受一个客户端连接时产生一个新的文件描述符FD时被创建,每个创建的线程里完成使用这个文件描述符对SQL请求进行远端请求的接收和结果回发;具体步骤如下:线程开始,进入Select函数,判断某客户端连接的FD请求是否到达,如果No,回到Select函数阶段,如果Yes,调用OCI接口执行请求,使用该FD将结果回发,结束或者获取下一个读集触发的FD,重新回到客户端连接的FD请求是否到达阶段;(2)所述的客户端DBC使用TCP协议与运行端MDB通信,作为TCP的客户端,客户端DBC使用了支持并发读写的嵌入式数据库SQLite;客户端DBC,由系统中除数据库以外的主机的进程使用,每个客户端DBC连接处于不同的侦听端口的运行端MDB,客户端DBC提供接口进行SQL语句执行,对于查询语句提供查询信息的返回和再一次提取,直到查询完毕接口返回错误码;当一个新的查询开始时,前一个查询自动被终止;具体步骤如下:函数开始,语句分析,判断数据库是否正常,如果是Yes,开始执行,执行成功,返回结果;如果回答No则进入Select语句判定,如果Yes,执行失败;如果No,写入本地SQLite,执行失败未来执行,则返回结果;(3)所述的剩余记录收集端DUMP是一个使用客户端DBC的进程,其内部使用SQLite数据库,DUMP间隔较长时间,定时检查SQLite数据库中是否有需要写入数据库的数据,同时检查与运行端MDB的通信是否正常;当两个条件都满足时,收集端DUMP将SQLite中的记录取出,送入运行端MDB执行。(4)运行端在探测到本地ORACLE数据库异常时,会设置一个进程中全局的加锁变量db_status,运行端中与各个客户端关联的线程检查到该变量发生变化时,向相应客户端发出报文通告数据库状态;客户端收到报文时,同步修改内部的数据库状态,当下一个指令执行时可以直接执行如下操作:在数据库故障时,查询语句返回错误,非查询语句写入本地数据库中。
地址 610045 四川省成都市武侯科技园武科东一路7号