pgpool初步调研

来源:互联网 发布:上海家博会数据 编辑:程序博客网 时间:2024/06/08 14:43
pgpool是日本人基于postgresql弄的一个分布式数据库集群中间件,如下是一个初步调研结果:

主要调研pgpool对分片表的处理。

1. 在分片表模式下,pgpool对于数据的分布只有2中选择:
   要么作为分片表,被拆分到集群中的每一台机器上;
  要么作为复制表,在集群的每一台机器上保存一份完整的数据;
  集群中的所有业务表,只能上上面2种模式之一,否则会出错;

2. 被分片的表的分区规则通过写数据库函数来设定

  分区列只能1列,且该值不能修改,否则会出现数据不一致

3. 被分片的表本身在pgpool中不支持高可靠和在线恢复

4. 在分表模式下,无法在线一致性备份

5. 在分片表模式下,事务语句中的查询语句与修改语句实际运行中不在一个事务


   BEGIN;
   INSERT INTO t(a) VALUES(1);
   SELECT * FROM t ORDER BY a;<-- INSERT above is not visible from this SELECT statement
   END;


6. 在分表模式下,分布式事务故障的数据一致性应该是无法保证,即可能出现部
分提交
   手册原话如下:
A transaction cannot be rolled back if a query has caused an erroron
some backends due to a constraint violation.

7. 在分布模式下不支持在线动态添加节点,任何对分片规则的修改都要重启
pgpool

8. 另外,虽然没看到2张分区表join的例子,看手册描述,pgpool应该支持跨节点
的join。
  具体实现方法应该是(我看手册描述猜的)把其中一张表的涉及的数据扫出来
保存成系统表(以复制的形式存在于每个server上),然后再让剩下的表与该系统
表join。如涉及子查询,就递归迭代处理。

9. pgpool的复制表应该使用的是并行写,并且可能出现后端节点返回结果不一致
的情况。

参考:http://www.pgpool.net/docs/pgpool-II-3.3.3/doc/pgpool-en.html

转载请注明转自高孝鑫的博客


0 0
原创粉丝点击