PL/Proxy
概述
PL/Proxy 是一个采用PL Language语言的数据库分区系统。
它的理念是代理远程函数调用同样标签创建的函数,所以,代理的目标信息需要在代理函数体内指定。
特性
1)PL/Proxy 函数从自己的标签中检测远程函数调用
2)函数可以是一个,也可以是集群中的某一个
3)如果查询被分割, 它将并发执行
4)查询在远程服务器上运行在自动提交模式下
5)查询参数与查询体分开传送,因此避免了在两端的quoting/unquoting 开销
6)不包含代码连接池,如果需要,可采用外部池程序。
示例
简单示例
链接本地数据库"users" 调用SQL function : SELECT * FROM get_user_email($1);
CREATE FUNCTION get_user_email(username text) RETURNS text AS $$ CONNECT ''dbname=users'';$$ LANGUAGE plproxy;
复杂示例
Users被放在了不同的数据库中,通过 hashtext(username) .分配不同的编号
CREATE FUNCTION get_user_email(username text) RETURNS text AS $$
CLUSTER ''userdb'';
RUN ON hashtext(username);
$$ LANGUAGE plproxy;