关于PostgreSQL数据库中的表空间,user,role,权限,模式(schema)的概念.

关于PostgreSQL数据库中的表空间,user,role,权限,模式(schema)的概念.
转自:<<数据架构师的PostgreSQL修炼--高效设计开发与维护数据库应用>>


表空间:

在PG中,表空间是文件系统中位置的一个链接,也就是一个目录.
表空间是一个可以保存所有其他对象的容器,如表,索引等.

在很多情况下,这样的功能是很有用的.也就是说:在一个指定的位置保存数据,而不是在默认的位置.

存在如下一个场景:当我们用完初始化数据库集群所使用的分区上的空间时,就可以使用表空间.
另外一个适用的场景是:处于性能考虑,移动具体对象到速度不同的磁盘上.
可以在一个比较快磁盘的表空间上创建一组频繁访问的对象.
或者是,在比较快的磁盘上使用OLTP业务,在比较慢的磁盘上运行OLAP业务.

当我们初始化一个集群的时候,可以得到两个默认表空间,
一个表空间成为pg_default,所有用户创建的并且未指定一个表空间的对象讲在pg_default表空间内被创建.
pg_default表空间的位置PGDATA下的基础目录.

另一个表空间是pg_global,它持有集群(cluster)中所有数据库共享的系统表.

模式:

模式(schema):我们在pg数据库中创建的任何对象(表,索引,视图等)都会在一个模式下被创建.

当创建对象时,如果未指定模式,这些对象将会在默认的模式下被创建.这个模式叫做public.
一个例外情况是另一个模式首先出现在search_path中.


角色和权限
在pg中,一个角色几乎与一个用户相同.因为一个角色可以是用户,也可以是一个用户组.
create user命令等同于create role,除了一点:create user有隐含的login权限.而create role不会有该权限.

每个角色是整个cluster所共享的,角色不是某个数据库特有的.

为了在数据库实现有效操作,用户必须获得相关权限.
在pg中,权限可以针对数据库级别设定,也可以针对单个对象级别(表,视图,函数等)进行设定.
权限有select,delete,update,insert,execute
还有创建对象的权限,删除对象的权限

在pg中,可以把一个特定权限给一个user
也可以把一个特定权限给一个role

role的一个重要特点就是可以被继承.

举例:
我们可以创建一个report_user角色,然后在一组table中将select权限授予这个角色.
然后,为从事报告工作的每个人各自创建user,并将report_user 角色授权给这些user.
当其中一个user离开部门时,我们只要删除该用户所创建的登录即可.


注意:本文是写博客以来的第1001篇文章.文章的计算口径包括所有文章---原创,转载,翻译等等.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值