GBase 8c 学习笔记 006 —— GBase 8c 常用对象

0    24    1

Tags:

👉 本文共约6007个字,系统预计阅读时间或需23分钟。

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

逻辑结构

GBase 8c 基本对象

  • User:用户
  • Database:数据库
  • Schema:模式
  • Table:数据表
  • Index:索引
  • View:视图
  • Function:函数
  • Sequence:序列

GBase 8c 逻辑存储结构

  • Tablespace,即表空间,是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。
  • Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。
  • Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。
  • Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。
  • Block,即数据块,是数据库管理的基本单位,默认大小为8KB。

常用对象

表空间

在 GBase 8c 中,表空间是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。
通过表空间,用户可以控制一个数据库存储的磁盘布局。使用表空间有以下优点:

  • 如果数据库所在的分区或者卷空间已满,又不能逻辑上扩展更多空间,可以在不同的分区上创建和使用表空间,直到系统重新配置空间。
  • 表空间允许管理员根据数据库对象的使用模式安排数据位置,从而提高性能:
    • 频繁使用的索引可以放在性能稳定且运算速度较快的磁盘上,比如 SSD 固态设备。
    • 存储归档的数据,很少使用或者对性能要求不高的表可以存储在一个运算速度较慢的磁盘上。
  • 通过表空间,管理员可以设置其占用的磁盘空间上限,用以在和其他数据共用分区的时候,防止表空间占用相同分区上的其他空间。

管理表空间

管理表空间的语句主要包括:创建表空间、修改表空间属性,以及删除表空间。

功能相关SQL
创建表空间CREATE TABLESPACE
修改表空间属性ALTER TABLESPACE
删除表空间DROP TABLESPACE

表空间管理示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

自带表空间

GBase 8c 自带两个表空间:

  • 默认表空间 pg_default:
    用来存储非共享系统表、用户表、用户表index、临时表、临时表index、内部临时表的默认表空间。
    对应存储目录为实例数据目录下的base目录。
  • 共享表空间 pg_global:
    用来存放共享系统表的表空间。对应存储目录为实例数据目录下的global目录。

数据库管理

数据库是组织、存储和管理数据的仓库,管理数据库的语句主要包括:创建数据库、修改数据库属性,以及删除数据库。

功能相关SQL
创建数据库CREATE DATABASE
修改数据库属性ALTER DATABASE
删除数据库DROP DATABASE

数据库兼容模式

DBCOMPATIBILITY 兼容模式:
可选值:A(默认值)、B、C、PG。分别表示兼容 O、MY、TD 和 POSTGRES。

  • A 兼容性下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。
  • B 兼容性下,在将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。
  • B、PG 兼容性下,CHAR 和 VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在B、PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。

数据库管理示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

模式(Schema)概述

  • GBase 8c 使用模式 (Schema) 对数据库(database)做逻辑分割。所有的数据库对象都建立在模式下面,用户可以根据自己拥有的权限,访问数据库中一个或多个schema的对象。这样就使得多个用户可以使用同一个数据库而不相互干扰。
  • 和数据库不同,模式不是严格分离的:只要有权限,一个用户可以访问他所连接的数据库中的任意模式中的对象。
  • 相同的对象名称可以被用于不同的模式中而不会发生冲突,例如同一个数据库下名为schema1和schema2的模式下都可以包含名为table1的表。

模式管理

模式是一组数据库对象的集合,主要用于控制对数据库对象的访问。管理模式的语句
主要包括:创建模式、修改模式属性,以及删除模式。

功能相关SQL
创建模式CREATE SCHEMA
修改模式属性ALTER SCHEMA
删除模式DROP SCHEMA

模式使用示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

使用注意事项

  • 不建议创建以PG_为前缀的schema名,该类的schema是为数据库系统预留的。
  • 在每次创建新用户时,系统会在当前登录的数据库中为新用户创建一个同名Schema。对于其他数据库,若需要同名Schema,则需要用户手动创建。
  • 每个数据库都有名为 pg_catalog 的 schema,它包含系统表和所有内置数据类型、函数、操作符。搜索路径(search_path)始终以pg_temp和pg_catalog这两个schema作为搜索路径顺序中的前两位。
  • 模式的权限: 默认情况下,用户无法访问模式中不属于他们的对象。
    • 若要访问,模式的所有者必须在模式上赋予他们“USAGE”权限
    • 用户要想在其他用户的模式里创建对象,需要被赋予在该模式上的“CREATE”权限

用户、角色及权限

  • 用户(User):使用数据库管理系统的个体。
  • 角色(Role):一组用户的集合,按照数据库系统中承担的责任划分具有不同权限的角色。
  • 系统权限:又称为用户属性,包括 SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN等。
  • 对象权限:数据库对象(表和视图、指定字段、数据库、函数、模式、表空间等)的相关权限(创建、删除、修改等)。

初始用户

GBase 8c安装过程中自动生成的帐户称为初始用户。初始用户拥有系统的最高权限,能够执行所有的操作。该帐户与进行GBase 8c安装的操作系统用户同名。在第一次登录数据库后,要及时修改初始用户的密码。

用户、角色管理

  • 角色是用来管理权限的,从数据库安全的角度考虑,可以把所有的管理和操作权限划分到不同的角色上。
  • 用户是用来登录数据库的,通过对用户赋予不同的权限,可以方便地管理用户对数据库的访问及操作。
功能相关SQL
创建角色\用户CREATE ROLE、CREATE USER
修改角色\用户属性ALTER ROLE、ALTER USER
删除角色\用户DROP ROLE、DROP USER

用户与角色使用示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

管理数据表

  • 数据表是建立在数据库中的,在不同的数据库中可以存放相同的表。可以通过使用模式在同一个数据库中创建相同名称的表。
  • 数据表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系。
功能相关SQL
创建表CREATE TABLE
修改表属性ALTER TABLE
删除表DROP TABLE

数据表使用示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

分布式模式下数据表分类

Replication 表

复制表,各个 datanode 节点中,写入表的数据完全相同。读数据时,只需要读取任意一个 datanode 节点上的数据。一般小表或者只读表( dimension table,维度表,即描述性或静态数据表 )采用此种方式。

Distribute 表(默认创建方式)

分布式表,基于指定列的 hash 值将数据完全切分到不同的 datanode 节点中,即与Replication 表相反,各个 datanode 节点中,表的数据完全不同。适用于 write-heavy tables,如事实表。

创建复制表示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

创建分布表示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

其它常用对象——视图(View)

当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图(View),以便解决这个问题。
视图与基本表不同,它不是物理上实际存在的。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。

物化视图是“物化”(Materialized)之后的视图,它将视图查询的结果实际存储在磁盘中,有效提升查询性能。

物化视图以类表的形式保存结果,但无法像普通表那样进行数据更新,需要使用REFRESH 从基表获取更新数据。

普通视图使用示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

物化视图使用示例

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

其它常用对象——序列(Sequence)

序列(Sequence)是用来产生唯一整数的数据库对象,序列的值是按照一定规则自增的整数,可以看作是存放等差数列的特殊表。因为自增所以不重复,因此说 Sequence 具有唯一标识性。这也是 Sequence常被用作主键的原因。

创建序列的同时如果指定相应的模式名,则该序列就在给定的模式中创建,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名称不同。

通过序列使某字段成为唯一标识符的方法有两种:

  • 一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的 Sequence。
  • 一种是使用 CREATE SEQUENCE 自定义一个新的 Sequence,然后将 nextval(‘sequence_name’) 函数读取的序列值,指定为某一字段的默认值,这样该字段就可以作为唯一标识符。

示例一:声明字段类型为序列整型

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

示例二:使用create sequence创建序列

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

其它常用对象——同义词(synonym)

同义词(Synonym)是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。

注意事项

  • 定义同义词的用户成为其所有者。
  • 若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。
  • 支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。
  • 使用同义词时,用户需要具有对关联对象的相应权限。
  • 支持使用同义词的DML语句包括:SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。

同义词创建语法:

同义词使用示例

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

GBase 8c 学习笔记 006 —— GBase 8c 常用对象

参考

https://www.modb.pro/topic/619301

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部