greenplum数据库、模式、表空间、role的含义与关系(基于4.3.30版本)
- role
- 在GP中是通过role来控制数据库的访问权限,role包含两个概念一个是user一个是group。两者的创建方式没有明显的区别,主要是看创建者的使用方式以及赋予权限。一个role可以成为其他role的父类使其子类拥有本身的权限,也可以成为任意role的子类拥有其父类的权限。
- 模式(schema)
- 什么是模式?
- greenplum中的模式指的是schema,可以在数据库中创建多个模式来管理同名表,通过"模式名.表名"的方式。数据库中默认有一个public模式,如果在创建对象时不指定模式名,这个对象的默认模式就是public。比如建表的完整语句create table public.t1。查询表也是一样如select * from public.t1,如果不加模式名将会以当前登录的用户名做隐含访问。一个集群中有会有多个数据库,如果做一个关系的总结应该是“gp集群” > databases > schema > object。
- 为什么需要模式
- 方便用户的管理用户可以在集群中创建不同模式名同表名的对象。
- 把需要使用的多个对象变为一个模式,方便使用。
- 什么是模式?
- 表空间
- 什么是表空间?
- 表空间是实际的数据存储的地方。用来存放数据库对象物理文件的位置
- 表空间的作用:
- 通过表空间dba可以优化集群磁盘的使用,提高业务效率,比如,可以在读写效率比较高的磁盘上建立表空间将常用的数据放在上面。将不常用的数据放在读写效率低的磁盘上。
- 什么是表空间?
- 表空间与数据库的关系
- 与模式相同的是,greenplum数据库同样有默认的表空间pg_default。在gp中数据库的创建通过克隆默认的数据库模板template1来创建,template1数据库的默认模板就是pg_default。
- 在物理环境中表空间的表达方式就是一个目录,里面存储的是它所包含的数据库的各种物理文件。
- 表空间、数据库、角色、模式及表之间的关系
- 简单的说表空间就是目录,是databases中对象在物理存储上的位置,databases就是object的集合,而schema就是用来管理object的方式
- role则是用来管理数据库object的权限的系统,role可以登录任意的databases只需要拥有其权限。一般role会有一个默认登陆的databases在pg_hba文件中配置。