赵渝强老师,openGauss的逻辑存储结构是怎样的?
摘要:openGauss的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都
openGauss的逻辑存储结构主要是指数据库中的各种数据库对象,包括:数据库集群、数据库、表、索引、视图等等。所有数据库对象都有各自的对象标识符oid(object identifiers),它是一个无符号的四字节整数,相关对象的oid都存放在相关的系统目录表中,比如数据库的oid和表的oid分别存放在pg_database,pg_class表中。
点击这里查看视频讲解:【赵渝强老师】高斯数据库(openGauss)的逻辑存储结构
下面对openGauss数据库中的各种逻辑存储结构进行说明。
一、 数据库集群-Database Cluster
它也叫数据库集簇,是指由单个OpenGauss数据库服务器实例管理的所有数据库集合。组成数据库集群的这些数据库使用相同的全局配置文件和监听端口、共用数据库的后台线程和内存结构。一个数据库集群可以包括:多个数据库、多个用户以及数据库中的所有对象。
在文件系统术语中,一个数据库集群是一个单一目录,该目录称之为数据目录或数据区域,所有数据都将被存储在该目录中。它没有默认的位置,其文件系统位置可以由-D选项或者环境变量PGDATA指定,例如:
[postgres@opengauss gaussdb]$ pwd
/home/postgres/training/gaussdb
[postgres@opengauss gaussdb]$ bin/gs_ctl -D data/single_node/ -l logfile start
二、 数据库-Database
在OpenGauss中,数据库本身也是数据库对象。不同的数据库在逻辑上彼此分离,除数据库之外的其他数据库对象(例如:表、索引等等)都属于它们各自的数据库。通过下面的语句可以查看OpenGauss数据库服务器中已存在的数据库。
(1)登录OpenGauss。
bin/gsql -d postgres
(2)查看OpenGauss中已有的数据库。
openGauss=# \l
# 输出的信息如下:
List of databases
Name | Owner | Encoding |......
-----------+----------+----------+------
finance | postgres | UTF8 |......
postgres | postgres | UTF8 |......
school | postgres | UTF8 |......
scott | postgres | UTF8 |......
template0 | postgres | UTF8 |......
template1 | postgres | UTF8 |......
| | |......
(6 rows)
三、 表空间-Tablespace
表空间是一个目录,在一个数据库集群中可以存在多个表空间。它里面存储的是数据库的各种物理文件。每个表空间可以对应多个数据库。表空间用作把逻辑上相关的数据结构放在一起。在数据库集群初始化的时候,会自动创建pg_default和pg_global两个表空间。其中:
pg_global:该表空间用于存放系统表。
pg_default:创建表时的默认表空间,该表空间的物理文件存储在数据目录中的base目录中,如:/home/postgres/training/gaussdb/data/single_node/base。
下面通过具体的操作来演示如何查看OpenGauss中已有的表空间和如何创建自己的表空间。
(1)登录OpenGauss。
bin/gsql -d postgres
(2)查看PostgreSQL中已有的表空间。
openGauss=# \db
# 输出的信息如下:
List of tablespaces
Name | Owner | Location
------------+----------+----------
pg_default | postgres |
pg_global | postgres |
(2 rows)
(3)创建自己的表空间。
openGauss=# create tablespace mydemotbs location '/home/postgres/training/mydemotbs';
(4)在mydemotbs 表空间上创建表。
