系统管理 维护监控 简单生活
技术实践
skype_plproxy
九 4th
转:https://developer.skype.com/SkypeGarage/DbProjects/PlProxy
1.introduction
PL/Proxy is a proxy language used for remote database procedure calls and data partitioning between databases based on hashing field values.
Main idea is that proxy function will be created with same signature as remote function to be called, so only destination info needs to be specified inside proxy function body.
PL/Proxy 是一种代理语言,主要用于是数据库远程过程调用和通过hash一个字段把数据分布到几个数据库上.
主要原理是代理服务器通过创建和远程(被代理的那个功能)节点相同调用指纹,所以,在代理的功能主体中只需要目的地信息
2. Features
- PL/Proxy functions detect remote functions to be called from their own signature.
- Function can be run on one, some or all members of the cluster.
- If query is executed on several partitions, it will happen in parallel.
- Queries are run in auto-commit mode on the remote server.
- Query parameters are sent separately from query body, thus avoiding quoting/unquoting overhead on both sides.
- If proxy and partition backend versions match, PL/Proxy tries to use binary I/O if possible.
1. PL/Proxy函数从它们自己的指纹里判断需要调用的远端函数 2. 函数可以运行在一个或是几个或是所有集群节点上 3. 如果一个请求需要几个分区来执行,他们将是并行的 4. 查询在远程服务器上是运行在自动提交模式的 5. 查询的参数和查询主体是分开的,从而可以减少引用/反调用双方的开销 6. 如果查询和分区后端的版本匹配,PL/Proxy尽可能的尝试使用二进制I / O
3. Restrictions
- PL/Proxy launches connections into each part from each backend, so in heavy-duty environment is necessary to put pooler between PL/Proxy and partitions. We have specially for that developed ../PgBouncer which is a pooler that can do statement-based pooling - release server after each SQL statement.
PL/Proxy 查询到每一个分区都会在后端建产一个连接,如果在重要的的环境里,有必要在PL 和千分区之间放一个连接沲
pgsql入门
九 4th
原文:http://docs.unixmap.net/app/postgresql/auth-pg-hba-conf.html
pg_hba.conf 是基于主机的认证配置文件(host-based authentication)
pg_hba.conf 文件的常用格式:
每行一条记录,空白行和井号 # 开头的注释被忽略。一条记录是由若干用空格和/或制表符分隔的字段组成。如果字段用引号包围,那么它可以包含空白。记录不能跨行存
每条记录可以是下面七种格式之一:
local database user auth-method [auth-option]
host database user CIDR-address auth-method [auth-option]
hostssl database user CIDR-address auth-method [auth-option]
hostnossl database user CIDR-address auth-method [auth-option]
host database user IP-address IP-mask auth-method [auth-option]
hostssl database user IP-address IP-mask auth-method [auth-option]
hostnossl database user IP-address IP-mask auth-method [auth-option]
pg_hba.conf 记录的一些例子
# Allow any user on the local system to connect to any database under # 允许在本机上的任何用户使用 Unix 域套接字(本地连接的缺省)以任何数据库用户身份连接任何数据库 # TYPE DATABASE USER CIDR-ADDRESS METHOD local all all trust # 和上面相同,但是使用的是回环的(loopback)TCP/IP 连接 # TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 127.0.0.1/32 trust # 和上面一行相同,但是用的是独立的掩码字段 # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD host all all 127.0.0.1 255.255.255.255 trust # 允许 IP 地址为 192.168.93.x 的任何主机与 "postgres" 数据库相连, # 用与他们在自己的主机上相同 ident 的用户名标识他自己(通常是他的 Unix 用户名) # TYPE DATABASE USER CIDR-ADDRESS METHOD host postgres all 192.168.93.0/24 ident sameuser # 允许来自主机 192.168.12.10 的用户提供了正确的口令之后与 "postgres" 数据库连接。 # TYPE DATABASE USER CIDR-ADDRESS METHOD host postgres all 192.168.12.10/32 md5 # 如果前面没有其它 "host" 行,那么下面两行将拒绝所有来自 192.168.54.1 的连接请求(因为前面的记录先匹配)。 # 但是允许来自互联网上其它任何地方的有效的 Kerberos 5 认证的连接。 # 零掩码表示不考虑主机 IP 的任何位。因此它匹配任何主机。 # TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 192.168.54.1/32 reject host all all 0.0.0.0/0 krb5 # 允许来自 192.168.x.x 的任何用户与任意数据库连接,只要他们通过 ident 检查。 # 但如果 ident 说该用户是 "bryanh" 且他要求以 PostgreSQL 用户 "guest1" 连接, # 那么只有在 pg_ident.conf 里有 "omicron" 的映射说 "bryanh" 允许以 "guest1" 进行连接时才真正可以进行连接。 # TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 192.168.0.0/16 ident omicron # 如果下面是用于本地连接的仅有的三行,那么它们将允许本地用户只和同名数据库连接。 # 只有管理员和 "support" 角色里的成员例外,他们可以连接到任何数据库。 # $PGDATA/admins 文件列出了那些允许与所有数据库连接的用户名。 # 在所有情况下都需要口令。 # TYPE DATABASE USER CIDR-ADDRESS METHOD local sameuser all md5 local all @admins md5 local all +support md5 # 上面最后两行可以合起来写成一行 local all @admins,+support md5 # 数据库字段也可以使用列表和文件名: local db1,db2,@demodbs all md5

最新评论