暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8c的前后端协议介绍

夏日晴空 2022-01-19
728


GBase 8c使用一种基于消息的协议用于前端和后端(服务器和客户机)之间通讯。该协议是在TCP/IP和Unix 域套接字上实现的。端口号 5432 已经在IANA 注册为支持这种协议的服务器的常用端口,但实际上任何非特权端口号都可以使用。

为了可以有效地为多个客户端提供服务,服务器为每个客户端派生一个新的“后端”进程。 在目前的实现里,在检测到新来的连接请求后,马上创建一个新的子进程。 不过,这些是对协议透明的。对于协议而言,术语“后端”和“服务器”是可以互换的; 类似的还有“前端”和“客户端”也是可以互换的。

协议在启动和正常操作过程中有不同的阶段。在启动阶段里,前端打开一个到服务器的连接并且认证自身以满足服务器(这可能涉及到一条或多条消息,取决于使用的认证方法)。 如果一切正常,服务器就发送状态信息给前端,并最后进入正常操作。除了最初的启动请求消息之外,协议的这个部分是服务器驱动的。

在正常操作中,前端发送查询和其它命令到后端,然后后端返回查询结果和其它响应。在少数几种情况(比如NOTIFY)中,后端会发送未被请求的消息,但这个会话中的绝大多部分都是由前端请求驱动的。

会话的终止通常是由前端来选择的,但是也可以在某些情况下由后端强制执行。不管在那种情况下,如果后端关闭连接,那么它将在退出之前回滚所有打开的(未完成的)事务。

在正常操作中,SQL命令可以通过两个子协议中的任何一个执行。 在“简单查询”协议中,前端只是发送一个文本查询串, 然后后端马上分析并执行它。在“扩展查询”协议中, 查询的处理被分割为多个步骤:分析、参数值绑定和执行。这样就可以提供灵活性和性能的改进,但代价是额外的复杂性。

正常操作还有用于类似COPY这样的额外的子协议。

最后修改时间:2022-04-22 10:55:08
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论