应用和数据库的连接分为本地连接和远程连接,当应用程序和数据库在同一台服务器上为本地连接,不在一台服务器上为远程连接
1. 本地连接
本地连接三种方式:
- 通过共享内存消息系统:应用和数据库在同一台服务器上,应用程序和数据库服务器将挂接在相同的内存段中,应用程序发送消息给数据库服务器,服务器捡起消息进行处理
- 流管道:进程内部通过unix stream进行通信的一种方式
- TCP/IP进行连接:可用于本地连接,也可用于远程连接,应用陈故乡和数据库服务器在同一台计算机上时,informix使用local loopback
可通过设置环境变量和配置参数来设置连接的方式,同一个数据库服务器同时配置tcp/ip和共享内存连接
2. 远程连接
数据库提供了两种tcp/ip的接口:
- sockets:AIX、HP、Linux上
- TLI(Transport Layer Interface):SUN上使用此形式
3. 客户端和服务器连接
- 程序获取连接信息
-
- 通过gbasedbtserver的值和sqlhosts文件的第一列做匹配
- 应用程序通过sqlhosts文件获得连接的服务器名称和连接方式
- sqlhosts文件包含了连接方式、服务器所在的网络地址、端口信息,也包含了配置文件DBSERVERNAME所包含的服务器名称
- 共享内存连接:应用程序吧信息放在一块地址中,数据库VP从这个地址检索信息,通过这种方式和数据库进行通信
- 网络方式连接:应用程序发送信息到端口,数据库从监听端口获得应用段的信息
数据库会在每次检查段之后,会在日志中记录一条信息,记录数据库在线之后的最大用户连接数
4. 应用发送连接的一些步骤设计
- 上述是应用发送连接请求时,处理连接请求的各个线索的主要行为如下
-
- poll线索负责处理接受来自客户端的所有信息,当收到一条信息之后,poll线索会唤醒其他线索去处理信息
- 如果接受的是数据库连接信息,poll线索会唤醒listen线索,并把连接请求传给listen线索,listen线索处理所有的连接请求
-
-
- listen线索会给用户创建一个会话控制块session control block(SCB),这个结构中包含了一个唯一标识,称作session id
- 同时也会创作一个线索控制块thread contol block(TCB),TCB用来和用户做交易的,在TCB中存放线索的上下文
-
-
- 最后会为用户创建一个sqlexec线索,sqlexec线索负责发送所有的信息给应用,poll线索负责从应用接受所有发送的信息