DWS的SCHEMA介绍
1 数据库主要对象的理解
1.1 数据库对象
TABLESPACE:操作系统文件结构中的具体文件空间在集群内的定义。说白点就是集群要占用哪些操作系统文件系统空间。
DATABASE:数据库物理隔离单位,一个集群内可以有多个DATABASE,多个DATABASE在数据库概念上是物理隔离的。用户一次只能登陆一个DATABASE,防问其中的数据。定义DATABASE时,即创建了从数据库逻辑到操作系统文件空间的对应关系。
SCHEMA:DATABASE内进行逻辑隔离的作用。这样不同用户和应用可以重用表名空间。数据库管理时使用schemaname.tablename则可以唯一操作具体的表。
TABLE:这个就是用户具本存数据的最小单元了,大家都理解。
2 ORACLE/PG/DWS的SCHEMA设计比较
2.1 差异总结
PG和DWS的模式(SCHEMA)是DATABASE内的概念,为了提供用户在DATABASE内再进行逻辑划分用的。
ORACLE的DATABASE是用户层面的概念,即一个用户在新DATABASE内创建对象时,固定要创建一个同名SCHEMA,并将对像创建在SCHEMA下。
2.2 实现差异
自动创建同名SCHEMA |
可独立创建SCHEMA |
不同DATABASE处理 |
|
Oracle |
是 |
否 |
一致 |
PG |
否 |
是 |
一致 |
DWS |
是 |
是 |
不一致,创建用户的库有同名SCHEMA,其它库需手动创建 |
2.3 优缺点
自动创建同名SCHEMA:
优点:不同用户默认创建表时,不会发生表名冲突的情况。因为默认都创建在各自的同名SCHEMA下。
缺点:用户名与SCHEMA间存在了约束关系。例如user1,如创建了user2的schema,刚无法创建名为user2的用户,因为schema名冲突。
可新增普通SCHEMA:
优点:用户内可对数据库对象分组,按组赋权给其它用户
缺点:USER和SCHEMA共用名空间,一个是管理员行为一个是一般用户行为,会出现行为冲突。
3 DWS与PG对比测试情况
3.1 PG不会因为其它用户存在A 模式而不能创建A用户
3.2 DWS因为其它用户存在A模式,而不能创建A用户
dws=# create user u1 password 'Gauss_234';
CREATE ROLE
dws=# create schema schema2 authorization u1;
CREATE SCHEMA
dws=# create user schema2 password 'Gauss_234';
ERROR: schema "schema2" already exists
3.2.1 DWS不同库可以有同名模式
- 点赞
- 收藏
- 关注作者
评论(0)