设为首页 收藏本站
查看: 791|回复: 0

[经验分享] PostgreSQL学习笔记YY(4)--客户端连接的总体架构(翻译)

[复制链接]

尚未签到

发表于 2016-11-21 11:09:14 | 显示全部楼层 |阅读模式
  说明:这是来自(Sams) PostgreSQL,The comprehensive guide to building, programming, and administering PostgreSQL databases, Second Edition一书中第5章第二、三节的内容,从整体框架上解释了客户端是如何与服务器端建立连接的。
  译文:

  当你想要建立应用程序来连接一个PostgreSQL数据库时,你会用到一个或者多个客户端应用程序接口(APIs)。PostgreSQL有多种多样的API来支持不同的编程语言。libpg--C/C plus plus; libpgeasy--C/C plus plus;ODBC--C/C plus plus;JDBC--Java;Perl--Perl;pgtcl--TCL等等。
  

  客户端应用程序如何与一个PostgreSQL数据库通信呢?所有的客户端API都有一个通用的结构,但是由于客户端语言的不同,细节会有很大差别。下图是一个基本的流程图:





因为PostgreSQL是一个C/S结构的数据库,一些特定种类的连接必须存在与客户端应用程序和数据库服务器之间。在PostgreSQL中,客户端和服务器端以网络连接的方式来进行交流,如果客户端和服务器端是在不同的系统中,网络连接就是通过TCP/IP套接字的形式。如果客户端和服务器段是在同样的系统中,网络连接则还可能是Unix的域连接。
不考虑客户端是连接到本地的服务器还是连接到远程服务器,API都运用一组连接属性来建立连接。连接属性是用于确定服务器(一个网络端口号和主机地址),指定你想要连接的特定数据库,你的用户ID,密码和各种调试,登录选项。每一个API都允许你来设置连接属性,但你也可以在一些属性使用默认值。大部分客户端API让你以键值对的形式来设置连接属性。例如,去连接一个主机名为jersey的accounting数据库,你可以使用如下属性字符串:
“dbname=accounting host=jersey”
每一个键值对定义了一个简单的连接属性。如果你去除了一个连接属性,PostgreSQL会到环境变量中去查找对应的属性值,如果该环境变量不存在,PostgreSQL就使用硬编码值:
Keyword                Enviroment Variable                Description
dbname                 PGDATABASE                         说明你想要连接的数据库名字,如果不指定,客户端会尝试连接与你当前用户名相                            同的主机名。
user                      PGUSER                                说明你想要连接数据库的用户名,如果不指定,客户端使用你当前操作系统的身份。
host                      PGHOST                              说明你想要连接数据库的计算机的名字或IP地址。如果值是以"/"开头,客户端就认                          为你想要以Unix域连接的方式连接你想要连接的目录,如果不特别指定,客户端就会                          连接到Unix域下的/tmp地址。
hostaddr                PGHOSTADDR                      说明你想要连接数据库所在计算机的IP地址。如果你指定了hostaddr,你就可以避                             免以host的名字来寻找服务器地址,如果不指定,客户端就使用host值来寻找服务器。
port                        PGPORT                             说明你想要连接的TCP/IP端口号。如果不指定,PGPORT的默认值就是5432.

connect_timeout    PGCONNECT_TIMEOUT         设置最大等待时间(等待连接请求的完成时间),如果不指定,客户端就会一直等待。
sslmode                    PGSSLMODE                     说明客户端是否尝试一个SSL安全连接,可能的连接是disable, allow, prefer和                           require. disable和require的意思是很明显的,但是allow和prefer看上去有些神秘。                         如果sslmode的值是allow,客户端先尝试不安全连接,如果不能建立,也允许SSL连                         接。如果sslmode的值是prefer,客户端先尝试安全连接,在不成功的情况下再尝试不                         安全连接。如果不指定值,默认值为prefer.
service                    PGSERVICE                        说明在pg_service.conf文件中定义的服务名。
一个很方便的方法来设置连接参数是使用pg_service.conf文件。当你指定了一个服务名字,客户端会打开一个名为$PREFIX/etc/pg_service.conf的文件,然后查找符合你提供的service-name。如果lippg确定了你提供的名字,他就会去读取对应服务名字的连接属性。一个典型的pg_service.conf文件像这样:

[accounting]
dbname=accounting
host=jersey
sslmode=required
[development]
dbname=accounting
host=guernseysslmode=prefer  每一个服务名都包含在中括号之中,且分别对应接下来的连接属性。以上定义了两种简单的连接的服务名(accounting和development)。
  PS:在阅读上述代码后,应尝试使用编程的形式来连接PostgreSQL服务器。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-303413-1-1.html 上篇帖子: 如何删除windows服务zz 重新安装PostgreSQL时删除上次遗留service的方法 下篇帖子: 【转】使用免安装版本在windows上手动安装PostgreSQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表