本地连接是同一台计算机上客户机和数据库服务器之间的连接。以下主题描述了不同的本
地连接类型。
共享内存连接 (UNIX™)
共享内存连接使用共享内存的一块区域作为客户机和数据库服务器相互通信所通过的通
道。客户机不能与数据库服务器建立多个共享内存连接。
下图说明了共享内存连接。
图: 通过共享内存连接进行的客户机应用程序和数据库服务器通信
共享内存提供对数据库服务器的快速访问,但是它会引起一些安全性方面的风险。错误或
恶意的应用程序可能删除或查看其自己的或其他本地用户的消息缓冲区。 如果客户机应
用程序执行显式内存寻址或过度索引数据数组,那么共享内存通信也容易受到编程错误的
影响。如果使用的是网络通信或流管道,那么这些错误不会影响数据库服务器。
共享内存连接的示例
下图显示名为 river 的计算机上的共享内存连接。
图: 客户机应用程序与名为 river_shm 的数据库服务器之间的共享内存连接。
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 30 -
此安装的 onconfig 文件包含以下行:
DBSERVERNAME river_shm
此安装的 sqlhosts 文件包含以下行:
#dbservername nettype hostname servicename options
river_shm onipcshm river rivershm
客户机应用程序将连接到使用以下语句的此数据库服务器:
CONNECT TO '@river_shm'
对于共享内存连接,无需网络配置文件中的任何条目。对 sqlhosts 文件的 hostname
和 servicename 字段使用任意值。
流管道连接(UNIX 和 Linux™)
流管道是 UNIX™ 进程间通信 (IPC) 设施,该设施允许同一计算机上的进程可以互相通
信。
流管道连接有下列优势:
•
与共享内存连接不同,流管道不会引起被其他显式地访问共享内存的相同部分的
程序覆盖或读取的安全性风险。
•
与共享内存连接不同,流管道连接允许同处一台计算机的数据库服务器之间有分
布式事务。
流管道连接有下列劣势:
•
在一些计算机上,流管道连接可能比共享内存连接慢。
•
流管道并不可用于所有平台。
•
当您将共享内存或流管道用于客户机/服务器通信时,hostname 条目被忽略。
本地回送连接
同一台计算机上客户机应用程序和数据库服务器之间的网络连接称为本地回送连接。 所
用的网络工具是相同的,就像客户机应用程序和数据库服务器位于不同的计算机上一样。
您可以进行本地回送连接,条件是已装备了您的计算机来处理网络事务。 本地回送连接
不如共享内存连接快,但它们不会引起共享内存的安全性风险。
GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 31 -
在本地回送连接中,数据看上去是从客户机应用程序传出到网络,然后再次传回数据库服
务器。内部连接进程将直接在客户机和数据库服务器之间发送信息,而不会在网络上向外
传输该信息。
本地回送连接的示例
下图显示了使用套接字和 TCP/IP 的本地回送连接。
图: 名为 river 的计算机上客户机与名为 river_soc 的数据库服务器之间的本地回送连接。
此安装的 sqlhosts 文件包含以下行:
#dbservername nettype hostname servicename options
river_soc onsoctcp river riverol
如果网络连接使用 TLI 来代替套接字,那么仅本例中的 nettype 条目将更改。在那种情况
下,nettype 条目是 ontlitcp 而不是 onsoctcp。
此安装的 onconfig 文件包含以下行:
DBSERVERNAME river_soc
此示例假定 river 的条目在 hosts 文件中,而 riverol 的条目在 services 文件中。