2007-04-23

About pgpool-II(簡體)

更新:2007-04-23

题外话:pgpool以及pgpool-II又是日本人对pgsql的贡献,他们真的做了大量工作。

pgpool的相关网站请在延伸阅读里边查找,这篇文章是基于pgpool-II文档所写,来自源代码包,完整版本请自行下载观看,时间所限我只能简单提及部分内容。

什么是pgpool-II
pgpool-II是一个工作于PostgreSQL服务器和PostgreSQL客户端之间的中间件(middleware),具有如下特性:

pgpool-II使用PostgreSQL的前端(frontend)和后端(backend)协议进行会话,在它们之间维持一个连接。这样,数据库应用程序(前端)会认为pgpool-II是一个真实的PostgreSQL服务器,而服务器(后端)会认为pgpool-II是一个客户端。因为pgpool-II对于服务器和客户端是透明的,一个现存的数据库复制系统几乎不用作任何改动就可以同pgpool-II协同工作。

支持平台
pgpool-II可以在Linux、Solaris、FreeBSD以及大多数类UNIX架构上正常运行,目前还不能支持Windows平台。此外需要PostgreSQL 6.4或者更高版本,如果想使用并发查询,则必须使用7.4或者更高版本。

pgpool-II功能与工作模式支持矩阵
这是很重要的部分,因为涉及到pgpool-II的运行设置,我只简单放个对应矩阵,其它请自行查阅文档。此外值得注意:这里的O和X并不是能不能够支持,比如复制模式也能支持“故障恢复”。
功能/模式 raw 模式 连接池模式 复制模式 主从模式 并发查询模式
连接池 X O O O O
复制 X X O X X
负载平衡 X X O O X
Degeneration X X O O X
故障恢复 O O X X X
并发查询 X X X X O
需要服务器数目 1 or higher 1 or higher 2 or higher 2 or higher 2 or higher
是否需要系统DB? no no no no yes

制约
验证与访问控制
复制模式下的函数等对象
不能保证那些每次查询会返回不同值的数据(比如:随机数、事务ID、OID、
SERIAL、序列号、CURRENT_TIMESTAMP)能够正确地在多个后端节点中被复制。
CREATE TEMP TABLE
创建的临时表不会在会话(session)结束后删除,这是因为连接池的原因,从后端服务器看起来会话仍然在活动。为避免这一点,必需显式使用DROP TABLE删除临时表,或者在事务块中使用CREATE TEMP TABLE ... ON COMMIT DROP创建临时表。
语句
部分语句不能被
pgpool-II处理。(比较多,准备另开篇写)

Over.

写在最后,大家如果有什么好的心得或者翻译文章,请发mail给阿益或者给我,分享知识才能得到更多知识
我的文章一般都写得很匆忙,难免有些错误和不适当的表达,如果发现请一定指出好让我校正,在blog留言即可。又或者看完以后有些什么建议也请写下来,无论是批评还是建议,都是对我的鼓励。翻译过程也是学习过程,您如果发现有什么关于pgsql比较有趣的东西,也请来信告诉我。
英文技术文档阅读对程序员来讲我认为是基本技能,而我也没有时间去翻译全部细节,所以只写一点我知道的肤浅内容,更多内容请大家自行阅读相关英文,一般我都会给出连接地址。

延伸閱讀(Link):
pgpool官方英文网站
pgpool-II官方英文网站

網誌存檔

PostgreSQL & Google-Analytics Running...

::Planet PostgreSQL::

PostgreSQL Information Page

PostgreSQL日記(日本 石井達夫先生Blog)

PostgreSQL News

黑喵的家 - 資料庫相關

Google 網上論壇
PostgreSQL 8 DBA 專業指南中文版
書籍內容討論與更多下載區(造訪此群組)
目錄下載: PostgreSQL_8 _DBA_Index_zh_TW.pdf (更新:2007-05-18)

全球訪客分佈圖(Google)

全球訪客分佈圖(Google)