CN101814077B - 一种基于oci 9的数据库访问中间件 - Google Patents
一种基于oci 9的数据库访问中间件 Download PDFInfo
- Publication number
- CN101814077B CN101814077B CN200910216546XA CN200910216546A CN101814077B CN 101814077 B CN101814077 B CN 101814077B CN 200910216546X A CN200910216546X A CN 200910216546XA CN 200910216546 A CN200910216546 A CN 200910216546A CN 101814077 B CN101814077 B CN 101814077B
- Authority
- CN
- China
- Prior art keywords
- client
- database
- operation end
- dbc
- oci
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于OCI 9的数据库访问中间件,涉及计算机应用领域尤其可应用于分布式系统中访问数据库的实现。通过开发一个基于OCI技术,结合网络技术和多线程技术的运行于数据库服务器上的中间件,包括中间件运行端、客户端和一个使用客户端的剩余记录收集端构成;运行端部署于数据库服务器上,客户端以动态库或静态库的形式提供给需要访问数据库的进程使用,剩余记录收集端以进程的形式运行于每个需要访问数据库的主机中。可以使系统中除服务器外的主机访问数据库不基于OCI接口,不会出现无法控制的超长时间阻塞;克服了访问ORACLE数据库时发生异常,客户端长时间阻塞以及数据丢失或解决无OCI实现的操作系统平台访问数据库的问题。
Description
技术领域
本发明属计算机应用领域,尤其涉及分布式系统、可以用于分布式系统中访问数据库实现的一种基于OCI 9的数据库访问中间件。
背景技术
在大型分布式系统中,通常配有数据库服务器,服务器之外的主机在安装了Oracle客户端以后就可以访问数据库,以主机为UNIX系统为例,通常使用的是Oracle提供的OCI(Oracle Call Interface)作为访问的编程接口,目前OCI的最新版本是以OCI 9为基础延续发展而来的,OCI接口函数有两种工作方式:blocking(阻塞)和non_blocking(非阻塞),在非阻塞方式下,通过循环调用同一个接口函数直至得到最后的运行结果,这样的函数如OCIStmtFetch,如果一个函数运行一次就可以获得结果,如OCIServerDetach函数,那么这个函数在OCI函数工作于阻塞和非阻塞方式下运行都一样,我们把这种函数称为非阻塞函数。如果使用OCI访问数据库的进程并不和Oracle数据库服务器位于同一台主机上,当服务器突然宕机或网线故障时,OCI的非阻塞函数就会发生长达十多分钟的阻塞,可见,OCI接口这种应用软件接口级的非阻塞和网络编程中的某些Socket函数那样操作系统级的非阻塞是无法比拟的,一个函数长时间的阻塞对要求长期连续运行的系统通常是不允许的,而且如果后续代码对这种阻塞结束后的处理的难度估计不足,那么即便是故障得以解除,也会使重新连接数据库失败,从而出现灾难性的后果。
目前一些嵌入式系统如VxWorks中Oracle不提供OCI的实现,如果要访问Oracle数据库只有通过其他方法。本方法通过开发一个基于OCI技术,结合网络技术和多线程技术的运行于数据库服务器上的中间件,可以使系统中除服务器外的主机访问数据库不基于OCI接口,这样在上述情况出现时不再出现无法控制的超长时间阻塞,同时为不能运行OCI的平台提供了访问数据库的可能性。
发明内容
本发明的目的是提供一种基于OCI 9的数据库访问中间件,以期克服访问ORACLE数据库时发生异常,客户端长时间阻塞以及数据丢失或解决无OCI实现的操作系统平台访问数据库的问题。
实现本发明目的的技术解决方案是这样的:
一种基于OCI 9的数据库访问中间件,运行于空管系统(ATC)的UNIX系统中,包括中间件运行端(MDB)、客户端(DBC)和一个使用客户端的剩余记录收集端(DUMP)构成。运行端(MDB)部署于数据库服务器上,客户端(DBC)以动态库或静态库的形式提供给需要访问数据库的进程使用,剩余记录收集端(DUMP)以进程的形式运行于每个需要访问数据库的主机中。其特征在于:
(1)所述中间件运行端(MDB)运行于数据库服务器上,使用OCI 9访问数据库,其运行时的侦听端口作为命令行参数传入,随侦听端口不同可以运行为几个不同的实例。运行端(MDB)设计为每一个客户端(DBC)的连接创建一个线程,该线程在接受一个客户端连接时产生一个新的文件描述符时被创建,每个创建的线程里完成使用这个文件描述符对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)执行。
所述的基于OCI 9的数据库访问中间件,其特征在于:当与运行端(MDB)不能正常通信时,(网线忽然被拔掉、运行端主机突然宕机),客户端返回错误,查询失败;对于非查询语句,如插入、更新的语句,接口提供两种运行方式的选择:1.与运行端通信正常时写入,不正常时返回错误;2.与运行端通信不正常时,写入本地数据库,待通信恢复正常时由收集端读出写入数据库。客户端中使用了1支持并发读写的嵌入式数据库SQLite,当运行方式为后一种方式时,非查询语句写入SQLite的本地文件中。
根据权利上述的基于OCI 9的数据库访问中间件,其特征在于:所述的客户端(DBC)使用TCP协议与运行端(MDB)通信,即使用非阻塞TCP通信,其步骤如下:在非阻塞连接执行后,停顿数秒钟(通过配置文件可配置),然后使用对客户端fd(文件描述符)送入select函数,该函数执行时使用一个很小的超时值,然后检查该fd对读写集是否置位,只要有一个置位,对这个fd调用getsockopt函数使用参数SO_ERROR,如果检查无错误发生,则认为连接成功。4、根据权利要求1所述的基于OCI 9的数据库访问中间件,其特征在于:所述的客户端(DBC)接口执行SQL语句时,客户端(DBC)在执行SQL语句或继续查询语句时,都需要发送报文至运行端,发送使用非阻塞send函数,当报文在指定时间不能发出时或返回错误值E_PIPE,认为运行端与客户端主机通信故障;运行端在探测到本地ORACLE数据库异常时,会设置一个进程中全局的加锁变量db_status,将该变量置为0,表示数据库异常,反之置为1;运行端中与各个客户端关联的线程中定时器驱动的回调函数检查到该变量发生变化时,向相应客户端发出报文通告数据库状态。客户端收到报文时,同步修改内部的数据库状态,当下一个指令执行时可以直接执行相应操作:如在数据库故障时,查询语句返回错误,非查询语句写入本地数据库中。
与现有技术相比本发明有着显著的有益效果:
1、实现了没有安装Oracle客户端的主机访问ORACLE数据库的功能,同时接口提供在操作数据库时对本地与数据库服务通信的即时检查;
2、实现了在客户端无操作时提供本机与服务端通信的检查并使用异步方式在通信故障、恢复状态转换时通知客户端使用者的有益功能;
3、实施本发明后客户端不会像传统OCI接口一样在网线突然拔掉或服务器突然宕机时处于长时间的阻塞等待,最坏在2-3秒内即可以检查出客户端与服务器间的通信故障;
4、可以在客户机与服务器间通信故障期间对非查询SQL语句进行本地保存,在通讯恢复时送入运行端执行。
5、本发明在空管系统(ATC)中的试验运行获得了显著的效果。
附图说明
图1是本发明所述的数据库访问中间件的基本结构示意图。
图2是本发明所述的运行端为每位客户端连接创建的线程类框图示意图。
图3是本发明所述的运行端运行流程框图示意图。
图4是本发明所述的客户端运行流程框图示意图。
图5是本发明所述的客户端实施例工作流程示意图。
图6是本发明所述的运行端实施例工作流程示意图。
图7是所述的数据库访问中间件工作部署示意图。
图8是所述的数据库访问中间件实施例工作流程示意图。
具体实施方式
通过图1可知,所述的中间件,运行于空管系统(ATC)的UNIX系统中,由中间件运行端(MDB)、客户端(DBC)和一个使用客户端的剩余记录收集端(DUMP)组成。运行端(MDB)部署于数据库服务器上,客户端(DBC)以动态库或静态库的形式提供给需要访问数据库的进程使用,剩余记录收集端(DUMP)以进程的形式运行于每个需要访问数据库的主机中。中间件运行端(MDB)运行于数据库服务器上,使用OCI 9访问数据库,其运行时的侦听端口作为命令行参数传入,随侦听端口不同可以运行为几个不同的实例。从2、图3可知,运行端设计为每一个客户端的连接创建一个线程,该线程在接受一个客户端连接时产生一个新的文件描述符时被创建,每个创建的线程里完成使用这个文件描述符对SQL请求进行远端请求的接收和结果回发。线程具体步骤如下:线程开始,进入Select函数,某客户端连接的FD请求是否到达?如果No,回到Select函数阶段,如果Yes,调用OCI接口执行请求,使用该FD结果回发,结束或者获取下一个读集触发的FD,重新回到客户端连接的FD请求是否到达阶段。
这些线程彼此之间联系较少,并不需要一个可管理的线程池机制;这些线程工作机制和完成的任务都一样,通过编写一个线程类即可满足要求,该线程类内部使用Select多路复用机制,提供文件描述符的处理回调和定义时间间隔的定时器回调函数,数据的收发和命令执行均在回调中完成。运行端(MDB)选用OCI9作为Oracle数据库的接口,运行端(MDB)在主线程中注册一个在公用端口实施侦听的ListenSocket等待客户端(DBC)接入,每当有客户端(DBC)connect请求,accept产生一个新的acceptFd以后,立即使用图2中的线程类创建一个新的线程,该线程先与本地数据库建立连接,再注册acceptFd的回调函数,在这个函数里接收来自客户端的(DBC)数据,对收到的数据解析出SQL请求,然后调用OCI接口立即执行;如果是非查询SQL语句,立即执行并实施提交;如果是查询SQL语句,则提取一定数量不超过网络报文最大容量的多个记录组成报文发送给客户端(DBC),报文里同时包含记录的起始数和记录数,在客户端(DBC)同时提供继续查询的接口供后续查询之用。
在运行端(MDB)主线程注册了一个用”select 1 from dual”语句检查数据库是否运行正常的定时器回调函数,当发现数据库异常时立即修改一个配有读写锁的数据库状态值。每个与客户端(DBC)对应的线程注册了一个定时器读取该状态,一旦检查到该状态变化,立即发送给客户端(DBC),保证只有在数据库运行正常时才能将SQL请求送出。运行端(MDB)是一个有多个线程同时运行的进程,为保证每个线程能够及时运行,需要在线程调度上设置为SCHED_RR方式。
所述客户端(DBC)使用TCP协议与运行端(MDB)通信,作为TCP的客户端。客户端(DBC)使用了支持并发读写的嵌入式数据库SQLite,客户端(DBC)由系统中除数据库以外的主机的进程使用,每个客户端(DBC)连接处于不同的侦听端口的运行端(MDB);客户端(DBC)提供接口进行SQL语句执行,对于查询语句提供查询信息的返回和再一次提取,直到查询完毕接口返回错误码;当一个新的查询开始时,前一个查询自动被终止。图4所示具体步骤如下:函数开始,语句分析,数据库是否正常?如果是Yes,开始执行,执行成功,返回结果;如果回答No则进入Slecte语句判定,如果Yes,执行失败;如果No,写入本地SQLite,执行失败未来执行,则返回结果。
所述的剩余记录收集端(DUMP)是一个使用客户端(DBC)的进程,其内部使用SQLite数据库,DUMP间隔较长时间(可配置)定时检查SQLite数据库中是否有需要写入数据库的数据,同时检查与运行端(MDB)的通信是否正常;当两个条件都满足时,收集端将(DUMP)SQLite中的记录取出,送入运行端(MDB)执行。剩余记录收集端(DUMP)是一个独立进程,使用客户端(DBC)同时使用SQLite嵌入式数据库的API,DUMP进程每隔一分钟检查sql_table表中有无记录,如果有读出一条SQL语句的记录送往运行端执行,执行成功后删除本地该记录;如果执行不成功,则不进行删除操作。
选用TCP作为运行端(MDB)和客户端(DBC)之间通信的网络协议,显然运行端(MDB)是TCP的服务端,而使用客户端(DBC)的远端进程作为客户端;
当与运行端(MDB)不能正常通信时,如网线忽然被拔掉、运行端(MDB)主机突然宕机时,客户端(DBC)返回错误,查询失败;对于非查询语句,如插入、更新的语句,接口提供两种运行方式的选择:1.与运行端(MDB)通信正常时写入,不正常时返回错误;2.与运行端(MDB)通信不正常时,写入本地数据库,待通信恢复正常时由收集端(DUMP)读出写入数据库。由于客户端(DBC)中使用了支持并发读写的嵌入式数据库SQLite,当运行方式为后一种方式时,非查询语句写入SQLite的本地文件中。
所述的客户端(DBC)使用TCP协议与运行端(MDB)通信,即使用非阻塞TCP通信,其步骤如下:在非阻塞连接执行后,停顿数秒钟(通过配置文件可配置),然后使用对客户端fd(文件描述符)送入select函数,该函数执行时使用一个很小的超时值,然后检查该fd对读写集是否置位,只要有一个置位,对这个fd调用getsockopt函数使用参数SO_ERROR,如果检查无错误发生,则认为连接成功。在使用Socket缺省的阻塞工作方式时,如果出现上述宕机和网线故障,同样会出现长时间的阻塞,因此只有使用非阻塞TCP通信才能完全避免这个问题。
所述的客户端(DBC)接口执行SQL语句时,客户端(DBC)在执行SQL语句或继续查询语句时,都需要发送报文至运行端,发送使用非阻塞send函数,当报文在指定时间不能发出时或返回错误值E_PIPE,认为运行端与客户端主机通信故障;
运行端在探测到本地ORACLE数据库异常时,会设置一个进程中全局的加锁变量db_status,将该变量置为0,表示数据库异常,反之置为1;运行端中与各个客户端关联的线程中定时器驱动的回调函数检查到该变量发生变化时,向相应客户端发出报文通告数据库状态。客户端收到报文时,同步修改内部的数据库状态,当下一个指令执行时可以直接执行相应操作:如在数据库故障时,查询语句返回错误,非查询语句写入本地数据库中。
当客户端不能正常执行SQL语句时,客户端将非查询语句存入SQLite产生的本地数据库文件,同时DUMP进程在适合的时间读取这些内容并执行相应的删除。整个中间件对SQLite的操作如下:
①首先,打开SQLite数据库文件,如果不存在则创建;
②其次,测试要创建的表是否存在,如果不存在则创建表,中间件使用的表名为sql_table;
③插入非查询sql语句;
④需要操作时取出记录;
解释sql语句
按行返回结果
取出每行的每列,执行想要的操作;
⑤删除对应记录;
⑥关闭数据库。
图7是所述的数据库访问中间件工作部署示意图,图8是所述的数据库访问中间件实施例工作流程示意图,具体操作如下:
本发明所描述的中间件已在多个实际ATC项目中得以实施,在实施过程中随系统主机规模、进程规模大小不同,运行端可能运行为端口不同的多个实例,这些实例通过在命令行参数指定读取的配置文件不同而运行为不同的实例,配置文件的区别在于侦听端口的不同;各主机中使用客户端的不同进程需要配置连接数据库服务器中运行的运行端的不同实例,也需要在各自的客户端配置文件中指定不同的连接端口。图5,6说明了配置客户端运行段的工作流程,图7说明了数据库中间件运行端为两个实例,其他主机节点分别按这两组访问数据的示意图。
Claims (4)
1.一种基于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,运行端中与各个客户端关联的线程检查到该变量发生变化时,向相应客户端发出报文通告数据库状态;客户端收到报文时,同步修改内部的数据库状态,当下一个指令执行时可以直接执行如下操作:在数据库故障时,查询语句返回错误,非查询语句写入本地数据库中。
2.根据权利要求1所述的基于OCI 9的数据库访问中间件系统,其特征在于:当与运行端MDB不能正常通信时,客户端返回错误,查询失败;对于非查询语句,接口提供两种运行方式的选择:1.与运行端通信正常时写入,不正常时返回错误;2.与运行端通信不正常时,写入本地数据库,待通信恢复正常时由收集端读出写入数据库;客户端中使用了支持并发读写的嵌入式数据库SQLite,当运行方式为后一种方式时,非查询语句写入SQLite的本地文件中。
3.根据权利要求2所述的基于OCI 9的数据库访问中间件系统,其特征在于:所述的客户端DBC使用TCP协议与运行端MDB通信,即使用非阻塞TCP通信,其步骤如下:在非阻塞连接执行后,停顿数秒钟,然后使用对客户端FD送入select函数,该函数执行时使用一个很小的超时值,然后检查该FD对读写集是否置位,只要有一个置位,对这个FD调用getsockopt函数使用参数SO_ERROR,如果检查无错误发生,则认为连接成功。
4.根据权利要求2所述的基于OCI 9的数据库访问中间件系统,其特征在于:所述的客户端DBC接口执行SQL语句时,客户端DBC在执行SQL语句或继续查询语句时,都需要发送报文至运行端,发送使用非阻塞send函数,当报文在指定时间不能发出时或返回错误值E_PIPE,认为运行端与客户端主机通信故障。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910216546XA CN101814077B (zh) | 2009-12-04 | 2009-12-04 | 一种基于oci 9的数据库访问中间件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910216546XA CN101814077B (zh) | 2009-12-04 | 2009-12-04 | 一种基于oci 9的数据库访问中间件 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101814077A CN101814077A (zh) | 2010-08-25 |
CN101814077B true CN101814077B (zh) | 2012-04-11 |
Family
ID=42621334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910216546XA Active CN101814077B (zh) | 2009-12-04 | 2009-12-04 | 一种基于oci 9的数据库访问中间件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101814077B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467510A (zh) * | 2010-11-05 | 2012-05-23 | 中兴通讯股份有限公司 | 数据获取方法、系统和通信设备 |
CN102012944B (zh) * | 2010-12-16 | 2012-08-22 | 四川川大智胜软件股份有限公司 | 一种提供复制特性的分布式nosql数据库的实现方法 |
CN102111419B (zh) * | 2011-03-07 | 2014-06-25 | 浙江大学 | 一种基于消息中间件的客户端自动重连方法 |
CN105373420B (zh) * | 2014-08-28 | 2019-12-06 | 北京奇虎科技有限公司 | 数据传输方法及装置 |
CN107589915B (zh) * | 2017-09-25 | 2020-05-29 | 郑州云海信息技术有限公司 | 一种分布式存储系统的容量信息监控方法、装置及设备 |
CN107577815A (zh) * | 2017-09-29 | 2018-01-12 | 北京酷我科技有限公司 | 一种数据库查询数据优化算法 |
CN107622128A (zh) * | 2017-09-29 | 2018-01-23 | 北京酷我科技有限公司 | 一种数据库删除数据优化算法 |
CN109710668B (zh) * | 2018-11-29 | 2021-05-04 | 中国电子科技集团公司第二十八研究所 | 一种多源异构数据访问中间件构建方法 |
CN110109807B (zh) * | 2019-05-13 | 2023-05-26 | 中国民航大学 | 一种空管重要设备的预警维护系统 |
CN111736907B (zh) * | 2020-06-16 | 2022-08-02 | 湖南省星岳天璇科技有限公司 | 一种自适应低延迟内存计算引擎的数据分析方法 |
CN112433875B (zh) * | 2020-11-23 | 2024-07-16 | 京东科技控股股份有限公司 | 基于中间件的数据库运行方法、装置及终端设备 |
CN112527906A (zh) * | 2020-12-17 | 2021-03-19 | 武汉武钢绿色城市技术发展有限公司 | 一种基于SpringBoot分布式数据库数据访问方法 |
CN113450600A (zh) * | 2021-06-18 | 2021-09-28 | 成都民航空管科技发展有限公司 | 用于ATC系统和iTWR系统联合运行的系统 |
CN117200301B (zh) * | 2023-11-08 | 2024-01-26 | 深圳海辰储能科技有限公司 | 基于储能系统的端口调用方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448867A (zh) * | 2002-03-30 | 2003-10-15 | 深圳市中兴通讯股份有限公司 | 一种统一访问数据库系统的方法 |
CN101119392A (zh) * | 2007-08-21 | 2008-02-06 | 南京联创科技股份有限公司 | Socket统一接入的方法 |
CN101329625A (zh) * | 2007-06-22 | 2008-12-24 | 上海宝信软件股份有限公司 | 专家系统开发平台 |
CN101359324A (zh) * | 2007-08-02 | 2009-02-04 | 上海宝信软件股份有限公司 | 基于程序调用接口的Oracle关系数据库的数据访问方法 |
-
2009
- 2009-12-04 CN CN200910216546XA patent/CN101814077B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1448867A (zh) * | 2002-03-30 | 2003-10-15 | 深圳市中兴通讯股份有限公司 | 一种统一访问数据库系统的方法 |
CN101329625A (zh) * | 2007-06-22 | 2008-12-24 | 上海宝信软件股份有限公司 | 专家系统开发平台 |
CN101359324A (zh) * | 2007-08-02 | 2009-02-04 | 上海宝信软件股份有限公司 | 基于程序调用接口的Oracle关系数据库的数据访问方法 |
CN101119392A (zh) * | 2007-08-21 | 2008-02-06 | 南京联创科技股份有限公司 | Socket统一接入的方法 |
Non-Patent Citations (2)
Title |
---|
莫晶等.基于OCI的数据库访问接口的改进与实现.《福建电脑》.2009,(第1期),第1-2页. * |
谢宇宝等.基于OCI的Oracle9i数据库访问中间件设计与实现.《中国电子科学研究院学报》.2007,第2卷(第4期),第375-380页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101814077A (zh) | 2010-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101814077B (zh) | 一种基于oci 9的数据库访问中间件 | |
US7085822B1 (en) | Managing pervasive devices | |
CN101290587B (zh) | 一种实现进程启动和监控的方法 | |
CN104317843A (zh) | 一种数据同步etl系统 | |
CN104219327B (zh) | 一种分布式缓存系统 | |
US20050210081A1 (en) | Data synchronization method | |
CN102254031A (zh) | 基于批处理请求的Microsoft SQL Server数据库集群 | |
CN107688611B (zh) | 一种基于saltstack的Redis键值管理系统及方法 | |
JP2009545039A (ja) | 能力マネジメントオブジェクトを保守し、能力を管理するための方法、システム、および端末 | |
MXPA01003970A (es) | Metodo y aparato para desplegar modulos de servicio entre nodos de servicio distribuidos en una red inteligente. | |
AU2011227121A1 (en) | Database management system | |
CN101095089A (zh) | 监督处理控制数据获取系统中活动冗余引擎的透明重定位 | |
CN103995868A (zh) | 面向分布式系统的全局事务管理器及事务处理方法 | |
CN101572724A (zh) | 一种软件版本管理系统 | |
WO2011072716A1 (en) | A method of updating versioned software using a shared cache | |
US10091066B2 (en) | Integration method and system | |
CN113268472A (zh) | 一种分布式数据存储系统及方法 | |
CN111641516B (zh) | 进程控制系统中节点的在线重新配置 | |
CN111917588B (zh) | 边缘设备管理方法、装置、边缘网关设备和存储介质 | |
CN113672240A (zh) | 一种基于容器的多机房批量自动化部署应用的方法及系统 | |
CN103024058A (zh) | Web服务调用方法及系统 | |
CN109002478A (zh) | 分布式文件系统的故障处理方法及相关设备 | |
WO2016197688A1 (zh) | 一种数据采集方法及装置 | |
US11281448B2 (en) | Online firmware upgrade of a node in a process control system | |
CN111209125A (zh) | 一种多进程的命令行实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |