首页 > 数据库 >GaussDB数据库中逻辑对象关系简析

GaussDB数据库中逻辑对象关系简析

时间:2024-10-30 11:59:15浏览次数:1  
标签:对象 GaussDB 用户 简析 权限 数据库 schema

初次接触openGauss或GaussDB数据库的逻辑对象,被其中的表空间、数据库、schema和用户之间的关系,以及授权管理困惑住了,与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系,以加深理解。

1、GaussDB数据库逻辑对象
1.1 表空间、Database和表
GaussDB数据库中逻辑对象包括表空间、Database和表、索引等,其中Database是数据的集合、表空间是数据在物理上的位置,数据库中的所有对象都存储在表空间中。

表空间Tablespace:表空间是一个目录,数据库中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。gaussdb中系统默认表空间pg_default,当建表时未指定表空间都使用默认表空间。
Database:数据库是逻辑上的抽象,各个database之间相互隔离,同一个database上的数据库对象可以存在多个表空间中。Gaussdb中会默认创建postgres数据库
表Table:Table是数据的结构化视图,存储特定类型的数据。每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。
在这里插入图片描述

其中关系如图所示,总结如下:

数据库实例中可以定义多个Database和表空间;
一个Database中可以包含多个表空间;
一个表空间中可以包含多个数据库;
一个数据库中可以包含多个表;
一个表必须属于一个数据库,并存储在一个表空间中。

1.2 用户和Schema
GaussDB数据库中用户user、角色role和schema各自不同的作用:

用户是数据库中的实体,用于标识和管理数据库中的各种操作权限和资源使用权限。每个用户都有唯一的用户名,用于登录数据库和执行相关操作。在GaussDB中,用户和用户组在实例范围内是共享的,也就是默认情况下通过单个用户可以连接到任一数据库,但是数据不是共享的,受到权限的管控。
角色是一组用户的集合,通过角色可以将权限授予一组用户,而不是单独授予每个用户。角色可以包含其他角色,形成层次结构。通过为角色分配权限,然后将角色授予用户,可以实现权限的快速分配和撤销。
Schema是数据库对象的集合,它包含了数据库中的所有表、视图、存储过程、函数等对象。每个数据库可以包含一个或多个Schema,用于将数据库对象组织成逻辑上独立的组。通过Schema,可以允许多个用户使用同一数据库而不相互干扰,将数据库对象组织成易于管理的逻辑组。在数据库创建后,会有一个默认的名为Public的schema。
需要注意的是,在GaussDB中,每次创建新用户时,系统会在当前登录的数据库中默认为新用户创建一个同名Schema,此时在当前数据库中创建同名的schema会提示已存在。对于其他数据库,若需要同名Schema,则需要用户手动创建。

另外,如果未指定schema访问表时,系统会通过search_path(搜索路径)来判断该表是哪个schema下的表(其中pg_temp和pg_catalog默认会作为搜索路径顺序中的前两位)。search_path(搜索路径)是一个schema名列表,在其中找到的第一个表就是目标表,如果没有找到则报错。在搜索路径中的第一个schema叫做current schema(通过show current_schema可以查看),在没有声明schema名时,新创建的数据库对象会默认存放在该schema下。
在这里插入图片描述

用户、Database和schema之间关系如图所示,总结如下:

每个数据库中可以包含多个用户,用户在实例范围内是共享的;
每个数据库中可以定义多个schema,schema之间是互相隔离的,不同数据库之间可以定义相同的schema名;
每个schema包含多个数据库对象,但每个数据库对象只能属于一个Schema。
用户对不同的Database中不同schema的访问通过设置不同的权限进行管理控制。

1.3 不同对象之间权限管理
GaussDB数据库中的权限管理沿用了Oracle数据库的权限管理特性,权限层级分为多个级别,包括系统权限和对象权限:

系统权限:系统规定用户使用数据库的权限,如登录数据库(LOGIN)、创建数据库(CREATEDB)、创建用户/角色(CREATEROLE)等。
对象权限:指在数据库对象(如数据库、模式、表、视图、函数等)上执行特殊动作的权限,如查看(SELECT)、更新(UPDATE)、插入(INSERT)、删除(DELETE)等。
在对角色和用户授权时候,主要有以下场景:

将系统权限授予角色或用户:比如授予数据库管理员SYSADMIN、MONADMIN权限,监控用户MONADMIN权限;
将数据库对象授予角色或用户:将数据库对象的相关权限授予特定的角色或用户,比如对schema的所有权限、schema下表的所有权限。
将角色或用户授予其它用户或角色:将一个角色或用户的权限授予其它多个角色,比如创建了一个只读的角色,将该role授予其它用户。
将ANY权限授予角色或用户:ANY权限有很多种,比如CREATE ANY、SELECT ANY,当授予SELECT ANY TABLE权限给某个用户后,该用户在当前数据库下既有所有schema的查询权限,对于一些只读的查询用户还是很方便的。
GaussDB数据库中的权限管理颗粒度非常细,按照最小授权的原则管理上也相当复杂,因此在实际授权过程中按照schema和schema内的对象维度进行分别授权,全局的只读用户具备SELECT ANY的权限、业务读写用户具备对象级别的增删改查权限、系统视图如pg_catalog和sys等的查询权限。不过需要注意的是:

DBE_PREF系统schema访问需要MONADMIN权限,单独授予SELECT权限不生效;
Schema内的对象授权时,需要具备schema的usage权限才能正常访问其中的schema;

1.4 MySQL数据库中逻辑对象对比
在MySQL数据库中,数据库也是存储数据的容器,它包含了表、视图、存储过程、函数、触发器、事件等数据库对象。

schema通常与数据库是同义词,指的是数据库结构的集合,创建一个新的数据库时,实际上已经创建了一个新的schema。
表也是数据库中最基本的存储单元,它以行和列的形式存储数据。
表空间在innodb存储引擎中分为系统表空间和数据表空间,系统表空间包含数据字典、事务信息和undo日志等信息,而打开innodb_file_per_table配置后会为每张表单独创建一个表空间文件,每个表空间文件中存放的是数据、索引和插入缓存等信息。
因此,在逻辑结构上MySQL系的数据库中的数据库实例与GaussDB数据库中的database相当,一个数据库中可以创建多个database或schema,每个database中又可以创建不同的表,不同database间共享系统表空间和资源。

1.5 总结
总结GaussDB数据库的逻辑对象之间的关系,如下图所示:

在逻辑层面,GaussDB数据库以不同的database进行逻辑上的区分,一个数据库实例中可以定义多个database,database内可以定义不同的schema、schema内又包含不同的数据库对象。
在物理存储层面,表空间对应的是实际的数据存储目录,同一个database可以使用不同的表空间、同一个表空间又可以被不同的database使用。不过在实际使用过程中建议使用默认的表空间。
在权限控制上,通过对不同用户或角色授予不同对象的访问权限进行细粒度的权限管控,达到最小化授权的目的。
在这里插入图片描述

https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30
https://blog.csdn.net/weixin_38623994/article/details/100047552
https://bbs.huaweicloud.com/blogs/236381

本文作者:大唐小少

标签:对象,GaussDB,用户,简析,权限,数据库,schema
From: https://www.cnblogs.com/xiaoxu0211/p/18515596

相关文章

  • GaussDB数据库基础函数介绍2
    二、GaussDB常用基础函数介绍与示例1、数字操作函数在GaussDB数据库中,数字操作函数是指用于执行数字操作的函数,例如加减乘除、取余、幂运算等。这些函数通常在数学、计算机科学和工程学等领域中使用,用于处理数字数据和执行数字操作。以下是一些常见的数字操作函数:--abs(x)--......
  • GaussDB数据库基础函数介绍1
    前言函数是数据库中最基本的组成部分之一,它们用于定义和操作数据库中的表格、记录、索引和视图等对象。在数据库中,函数的作用非常重要,因为它们可以实现数据的复杂操作,如查询、更新、删除和排序等。作为华为自主创新研发的分布式关系型云数据库,GaussDB也拥有强大的函数支持体系。......
  • GaussDB数据计算路由层(Coordinator)关键技术方案
    GaussDBKernelV5版本的Catalog还是本地存储,所以还需要考虑catalog的持久化问题.未来演进元数据解耦,Coordinator无状态,就不需要考虑Catalog持久化问题了。但是跨节点场景下的事务提交在Coordinator上还是要持久化的。图14Coordinator模块图路由信息:每个表数据共分16384......
  • GaussDB全局事务管理层(GTM)关键技术方案
    GTM仅处理全局时间戳请求,64位CSN递增,几乎都是CPU++和消息收发操作。不是每次都写ETCD,而是采用定期持久化到ETCD里,每次写ETCD的CSN要加上一个backup_step(100w),一旦GTM故障,CSN从ETCD读取出来的值保证单调递增。当前GTM只完成CSN++,预估可以支持200M/s请求。GTM处理......
  • GaussDB集群管理层(CM)关键技术方案
    GaussDBKernelV5集群管理层关键模块如下。图4集群管理层组件设计图CM组件提供了四种服务CMAgent,CMServer,OMMonitor,cm_ctl,与各类实例服务组件(CN,DN,GTM等)一起构成了整个数据库集群系统。cm_ctl通过命令行执行集群的启动、停止、状态查询、主备倒换、备机重建......
  • SpringBoot社区服务平台的设计与实现jm6z2(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表居民,活动类型,社区活动,活动报名,取消报名,新闻类别,社区新闻,优秀活动,水电费,缴费提醒,隔离采购,采购情况开题报告内容一、课题背景与意义随着信息技术的飞......
  • SpringBoot山猫体育新闻网y5ejn(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,球队信息,比赛赛程,球员信息,精彩视频,比赛结果,篮球资讯开题报告内容一、课题名称山猫体育新闻网的设计与实现二、研究背景与意义随着互联网技术的飞......
  • SpringBoot人事管理912fw(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表部门,员工,考勤信息,工资发放,员工请假,加班登记,迟到登记,培训信息,报名信息,文档档案,签到信息开题报告内容一、项目背景随着企业规模的扩大,人事管理变得日......
  • 第10课 数据库之索引
    一、索引的介绍1、什么是索引?(1)定义:索引是一种数据结构一个索引在存储的表中的数据结构;(2)索引是在表的字段上创建的(3)索引包含了一列值,这个值保存在一个数据结构中2、索引作用?(1)保证数据记录的唯一性(2)实现表与表之间的参照性(3)减少排序和分组的时间(例如在使用orderby,group......
  • GaussDB可维护性--支持SQL PATCH
    支持SQLPATCH可获得性本特性自503.1.0版本开始引入。特性简介SQLPATCH能够在避免直接修改用户业务语句的前提下对查询执行的方式做一定调整。在发现查询语句的执行计划、执行方式未达预期的场景下,可以通过创建查询补丁的方式,使用Hint对查询计划进行调优或对特定的语句......