相关概念
数据库
数据库用于管理各类数据对象,与其他数据库隔离。创建数据库时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。
实例
实例在GaussDB(DWS)中是运行在内存中的一组数据库进程,一个实例可以管理一个或多个数据库,这些数据库组成一个集簇。集簇是存储磁盘上的一个区域,这个区域在安装时初始化并由一个目录组成,所有数据都存储在这个目录中,这个目录被称为数据目录,使用initdb创建。理论上来说一个服务器上可以在不同的端口启动多个实例,但是GaussDB(DWS)一次只能管理一个实例,启动和停止都是依赖于具体的数据目录。以后由于兼容的需要不排除引入实例名这个概念的可能。
表空间
在GaussDB(DWS)中,表空间是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。
模式
GaussDB(DWS)的模式是对数据库做一个逻辑分割。所有的数据库对象都建立在模式下面。GaussDB(DWS)的模式和用户是弱绑定的,所谓的弱绑定是指虽然创建用户的同时会自动创建一个同名模式,但用户也可以单独创建模式,并且为用户指定其他的模式。
用户和角色
GaussDB(DWS)使用用户和角色来控制对数据库的访问。根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。在GaussDB(DWS)中角色和用户之间的区别只在于角色默认是没有LOGIN权限的。在GaussDB(DWS)中一个用户唯一对应一个角色,不过可以使用角色叠加来更灵活地进行管理。
事务管理
在事务管理上,GaussDB(DWS)采取了MVCC(多版本并发控制)结合两阶段锁的方式,其特点是读写之间不阻塞。GaussDB(DWS)的MVCC没有将历史版本数据统一存放,而是和当前元组的版本放在了一起。GaussDB(DWS)没有回滚段的概念,但是为了定期清除历史版本数据GaussDB(DWS)引入了一个VACUUM进程。一般情况下用户不用关注它,除非要做性能调优。此外,GaussDB(DWS)是自动提交事务。