• [问题求助] Gauss数据库中的存储过程有没有类似Oracle中sys.dbms_job.submit()后台提交作业的功能?
    如果是pgsql模式,是否同样要像在postgreSQL数据库那样额外安装pg_cron和pgAgent扩展?
  • [问题求助] 项目部署最终使用GaussDB,开发测试直接用GaussDB还是用openGauss?
    如果使用openGauss迁移至GaussDB麻烦吗?
  • [技术干货] GaussDB 常用语法总结
    GaussDB是华为自主创新研发的分布式关系型数据库,它基于华为20余年战略投入、软硬全栈协同所创新研发,具备高可用、高性能、高安全、高弹性、高智能、易部署、易迁移等关键能力,是企业核心业务数字化转型升级的坚实数据底座。GaussDB支持分布式事务、同城跨AZ部署,并且数据0丢失,具有1000+的扩展能力,支持PB级海量存储。同时,它拥有云上高可用、高可靠、高安全、弹性伸缩、一键部署、快速备份恢复、监控告警等关键能力,能为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务。同时,GaussDB是一个强大的开源关系型数据库系统,它提供了丰富的SQL功能和特性,以下是一些GaussDB的常用语法总结:1. 创建数据库CREATE DATABASE database_name;2. 删除数据库DROP DATABASE database_name;3. 创建表CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype, .... );4. 删除表DROP TABLE table_name;5. 插入数据INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);6. 查询数据SELECT column1, column2, ... FROM table_name WHERE condition;7. 更新数据UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;8. 删除数据DELETE FROM table_name WHERE condition;9. 创建索引CREATE INDEX index_name ON table_name (column_name);10. 删除索引DROP INDEX index_name;11. 约束主键约束ALTER TABLE table_name ADD PRIMARY KEY (column_name);唯一约束ALTER TABLE table_name ADD UNIQUE (column_name);检查约束ALTER TABLE table_name ADD CHECK (condition);外键约束ALTER TABLE table_name ADD FOREIGN KEY (column_name) REFERENCES other_table(column_name);12. 聚合函数COUNTSELECT COUNT(column_name) FROM table_name;SUMSELECT SUM(column_name) FROM table_name;AVGSELECT AVG(column_name) FROM table_name;MAX 和 MINSELECT MAX(column_name) FROM table_name; SELECT MIN(column_name) FROM table_name;13. 分组与排序GROUP BYSELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;ORDER BYSELECT column_name FROM table_name ORDER BY column_name ASC|DESC;14. 连接表INNER JOINSELECT columns FROM table1 INNER JOIN table2 ON table1.column = table2.column;LEFT JOINRIGHT JOINFULL JOIN15. 子查询SELECT column_name FROM table_name WHERE column_name IN (SELECT column_name FROM another_table);16. 视图创建视图CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;删除视图DROP VIEW view_name;17. 事务处理开始事务BEGIN;提交事务COMMIT;回滚事务ROLLBACK;
  • [技术干货] GaussDB数据库SQL系列-聚合函数
     背景 在这篇文章中,我们将深入探讨GaussDB数据库中聚合函数的使用和优化。聚合函数是数据库查询中非常重要的工具,它们可以对一组值执行计算并返回单个值。例如,聚合函数可以用来计算平均值、总和、最大值和最小值。  这些功能在数据分析和报告中尤为关键。我们将通过实际示例展示如何有效地在GaussDB中应用这些聚合函数,同时也将探讨一些高级技巧,包括如何结合GROUP BY子句和使用窗口函数,以及如何优化查询性能。通过本文,您将获得关于GaussDB聚合函数的深入了解,为您的数据分析工作提供强大的支持。  一、聚合函数概述 聚合函数,顾名思义,就是会将数据记录聚合到一起的函数。  比如原先数据库中有100条记录,用聚合函数查询这100条记录中的最大值,最后输出的只有最大值的这一条记录。  聚合函数是SQL中用于在一系列值上执行计算并返回单一值的函数。在GaussDB中,常见的聚合函数包括:  SUM():计算数值列中所有值的总和。  AVG():计算数值列的平均值。  COUNT():统计一列中的元素数量,可以是所有元素或去重后的元素。  MAX()和MIN():分别找出一列中的最大值和最小值。  这些函数通常用于数据分析,特别是在处理大型数据集时,可以帮助快速得到关键数据指标。了解并有效使用这些聚合函数对于任何使用GaussDB进行数据处理的人来说都是必要的技能。     二、实际应用示例:    1、创建数据表和插入数据 销售数据表 CREATE TABLE sales (     id INT,     product VARCHAR(50),     quantity INT,     amount DECIMAL(10,2),     sale_date DATE );  插入数据:INSERT INTO sales VALUES (1, '产品A', 10, 500.00, '2023-01-10');INSERT INTO sales VALUES (2, '产品B', 5, 300.00, '2023-01-12');INSERT INTO sales VALUES (3, '产品C', 15, 450.00, '2023-02-15');产品类别表CREATE TABLE products ( id INT, name VARCHAR(50), category VARCHAR(50)); 插入数据:INSERT INTO products VALUES (1, '产品A', '电子');INSERT INTO products VALUES (2, '产品B', '家具');INSERT INTO products VALUES (3, '产品C', '电子');员工工资表CREATE TABLE employees ( id INT, name VARCHAR(50), department VARCHAR(50), salary DECIMAL(10,2));插入数据:INSERT INTO employees VALUES (1, '张三', 'IT', 8000.00);INSERT INTO employees VALUES (2, '李四', '财务', 9500.00);INSERT INTO employees VALUES (3, '王五', 'IT', 7800.00); 总销售额统计SELECT SUM(amount) FROM sales WHERE sale_date BETWEEN '2023-01-01' AND '2023-03-31';产品类别统计SELECT category, COUNT(*) FROM products GROUP BY category;最高销售记录SELECT MAX(quantity) FROM sales;部门工资分析SELECT department, AVG(salary) FROM employees GROUP BY department;二、高级应用1. 分组统计分组聚合:使用GROUP BY子句结合聚合函数,如SUM(),统计不同组别的数据总和。SELECT department, SUM(salary) FROM employees GROUP BY department;2. 窗口函数使用窗口函数进行排序:例如,使用ROW_NUMBER()为销售记录中每个产品的销售额进行排序。SELECT product_name, sale_date, amount, ROW_NUMBER() OVER(PARTITION BY product_name ORDER BY amount DESC) AS rankFROM sales;三、GaussDB云原生数据库GaussDB是一款高性能、高安全的云原生数据库,在数据库领域处于领先地位。作为一个三、GaussDB云原生数据库GaussDB是一款高性能、高安全的云原生数据库,在数据库领域处于领先地位。作为一个高可靠性的全球化分布式关系型数据库,GaussDB数据库提供了丰富的存储过程支持,为存储过程的开发、管理和执行提供了更多的优化策略和高可用性保障。 华为云GaussDB作为新一代分布式数据库,具备“五高两易”的核心技术竞争力,即高可用、高性能、高安全、高弹性、高智能、易部署、易迁移,充分满足金融客户对数据库的严苛要求。过去4年里,GaussDB经受了各国有大行数千亿行大表数据、数十万TPS/QPS、数亿存储过程的大数据量压测和极端场景考验,具有极其丰富的迁移经验,保证业务系统长期稳定运行。基于各大行业务对产品能力与迁移能力的充分验证,华为云GaussDB在城商农信银行、证券保险行业也完成了大规模的部署。  GaussDB是华为自主研发的企业级分布式关系型数据库,支持集中式和分布式两种部署方式。为企业提供了高可用,高可靠,高安全等能力,其产品全栈自研,并且具有完善生态工具和开源社区。在实际去O的项目过程,经常会遇到分区表的迁移,本文为大家介绍分区表设置自动新增分区。  华为云GaussDB还持续构建数据库生态。通过扩大伙伴生态圈,携手伙伴赋能行业人才;通过联合高校,进行产教融合,做厚人才基础。在行业应用上,GaussDB已全面覆盖金融到关键基础设施行业,保障客户业务安全。  四、总结 聚合函数在GaussDB数据库中的应用展示了其在数据处理和分析方面的强大能力。通过本文,我们不仅学习了基本聚合函数的使用,如SUM、AVG、COUNT、MAX和MIN,还探索了如何通过GROUP BY子句和窗口函数进行更复杂的数据分析。这些技能对于理解和分析大规模数据集至关重要。熟练掌握这些功能,可以显著提高在GaussDB中进行数据处理和分析的效率和准确性。  欢迎小伙伴们交流~  本文作者:hhh1218 
  • [技术干货] 由数据插入超长引起的问题——了解GaussDB和openGauss的字符集
     前言 故事是这样开始的。我们的小DEMO项目的数据库版本从openGauss 2.1.0升级到了5.0.0版本。升级后进行功能验证的时候,测试同学发现个BUG,原来通过gs_restore导出来的数据再导入时报超长,插入失败了,如下图所示,nvarchar(10)的字段类型,无法插入10个汉字—“齐天大圣孙悟空美猴王”。 一、定位过程疑问一 :openGauss高版本是否没有兼容低版本?接到问题后以为是openGauss 5.0.0版本没有兼容2.1.0版本的字段类型,于是查阅了官网的资料:5.0.0版本2.1.0版本 确认发现两个版本对于nvarchar2(n)类型的定义是一样的,都是表示的字符的长度。  疑问二:5.0.0版本和2.1.0版本对字符的定义是否不同? 查看了数据库列表,确认字符集的异同,为了区分截图,同时查询了openGauss的数据库版本。发现2.1.0版本的模板数据库(template0,template1)的字符集(Encoding)是UTF8,而5.0.0版本的模板数据库(template0,template1)的字符集(Encoding)是SQL_ASCII。  2.1.0: 而openGauss创建数据库的过程,是通过复制template数据库创建的,默认复制template0,参见官网资料对create database的介绍:So,如果创建数据库时不专门指定字符集,那么5.0.0版本和2.1.0版本创建的数据库的字符集就是不同的。2.1.0版本创建的数据库的字符集是UTF8,而5.0.0是SQL_ASCII。2.1.0: 5.0.0: 疑问三:再挖一步,为什么2.1.0版本默认的字符集和5.0.0版本不同呢? 后知后觉的发现原来是因为我之前安装2.1.0环境的时候指定了字符集,指定字符集的命令如下: gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--locale=zh_CN.utf8 --encoding=UTF-8" 而安装5.0.0版本的时候没有指定字符集,不指定字符集的命令: gs_install -X /opt/software/openGauss/clusterconfig.xml openGauss在不指定字符集的时候默认会是SQL_ASCII,和版本无关,所有版本均如此。 有一点想锤自己且恍然大悟如梦初醒的感觉,不过我们还是继续确认两个字符集的区别。小结:两个字符集的异同查阅官网发现,UTF8和SQL_ASCII的字符的长度是不同的,如下图所示: 导致数据插入失败的原因算是找到了,字符集的区别导致的。  二、解决方法 1. 安装数据库时显式的指定字符集是UTF8,则默认创建好的模板数据库就会继承安装时指定的字符集;  gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--locale=zh_CN.utf8 --encoding=UTF-8"  2. 创建数据库时显式的指定字符集是UTF8,则默认创建好的表就会继承数据库的字符集;3. 创建模式时显示的指定字符集是UTF8,则表的默认字符集就会是UTF8;该方法仅支持B模式的数据库,且要加载dolphon插件,B模式指兼容mysql,目前还没有实证,后续。--官网文档写的有点简陋了。 4. 创建表时显式的指定字符集是UTF8,则表的默认字符集就会是UTF8;5. 增加列时显式指定列的字符集是UTF8,则该列的字符集就会是UTF8;逻辑上讲上述4种都可以,遗憾的是目前对表和列指定字符集的功能,在5.0.0版本并未实现功能,只是支持了语法,而指定模式的字符集,参见第二种方式,仅在B模式下实现了。因此实际操作中,前两种方法都可以,在安装数据库时指定字符集或者创建数据库时指定字符集。指定字符集后再创建表,则表就会继承数据库的字符集,nvarchar(10)就可以支持10个汉字了。三、扩展阅读GaussDB数据库的默认字符集是什么呢?1. GaussDB(3.223.0)默认的encoding是UTF8,template0和template1两个模板数据库的编码格式也是UTF8。Encoding = 7,7表示UTF8默认创建的数据库字符集是UTF8。  2. 那么GaussDB支持创建scheme的时候指定和database的encoding不同的charset吗?试试看,我们创建了一个数据库testdb_ascii,字符集是SQL_ASCII。然后在该数据库中创建一个schema,charset指定UTF8,执行时报错还不支持。 3. 创建表时会怎么样呢?我们试着创建一个指定CHARSET为UTF8的表,执行时没有报错,是可以执行成功,然而查看表信息的时候发现,表的字符集仍然是SQL_ASCII,说明指定CHARSET的操作并没有执行。创建表:4. 增加列时指定charset会怎么样呢?个人理解,由于GaussDB是在openGauss基础上进行的云化,因此也只在B模式下支持,见下图:当我创建了一个B模式的数据库,执行相同的SQL,报错变了,但仍然是没有支持:5. 可见在GaussDB以及openGauss中,创建数据库时要确定好字符集,否则数据库创建好后,就无法再在低一级的Schema,table和Column中重新制定,遇到不适用的场景只能重新建库。 附录 一些本文中用到的脚本汇总:  ---不指定字符集安装数据库  gs_install -X /opt/software/openGauss/clusterconfig.xml ---指定字符集为UTF8安装数据库  gs_install -X /opt/software/openGauss/clusterconfig.xml --gsinit-parameter="--locale=zh_CN.utf8 --encoding=UTF-8" ---不指定字符集创建数据库  create database test_encoding_default; ---指定字符集为UTF8创建数据库  create database test_encoding_utf8 encoding 'utf8'; ---切换到另外一个数据库  \c test_encoding_utf8 ---指定字符集创建表  create table t (id nvarchar2(10)) charset = 'utf8'; ---不指定字符集创建表  create table t (cname nvarchar(10));   create table t (id nvarchar2(10)) ; ---显示表t的详细信息  \d t --detail; ---插入数据  insert into t values('齐天大圣孙悟空美猴王'); ---查询字符集,并显示数值value和字符集的对应关系  select encoding,pg_encoding_to_char(encoding) as encoding ,datname from pg_database; 关于作者 本文内容来自于数据库领域资深技术专家赵锋老师,OpenHarmony WEB3 TSG成员。先后就职于大唐电信、华为和软通动力,拥有多年项目开发,设计和优化运维经验。在数据库领域摸爬滚打多年,经历过Oracle,DB2和SQL Server的时代,国产数据库崛起后,对华为GaussDB系列数据库进行了深入学习和研究,获得华为GaussDB HICA、GaussDB HCIP、GaussDB HICA SI以及openGauss HCIA证书。致力于国产开源数据库在业务项目中的实践和应用。  本篇就到此结束了,欢迎交流~ 
  • [问题求助] GaussDB中类似oracle的sample(1)数据抽样函数是什么?
    使用pgsql的 TABLESAMPLE BERNOULLI(1) 函数说并不支持语法/不支持数据抽样?   因为该表Mc_T_BaseIdCard 的数据量很大,子查询的需求是随机查询出一条。用random()就执行太慢了
  • OpenGauss:如何在函数/存储过程中对大批量插入中间数据的临时表做动态采样以确保执行计划正确?
    我们写了一些函数/存储过程用来展现报表数据,为了存储中间数据用了临时表,并且临时表在运行过程中insert的数据量有时候会很大(百万级),因此在后续对这些临时表引用的时候,需要对这些表做动态采样,否则会导致执行计划有问题。在Oralce中,我们在函数/存储过程中在对临时表做关联查询的时候,采用 SELECT /*+ opt_param('OPTIMIZER_DYNAMIC_SAMPLING',6) */ 这样的hint 来要求做动态采样。在Opengauss中,我们先是尝试在INSERT 临时表数据后,通过ANALYZE tablename;来更新该临时表的统计信息,但是ANALYZE无法在函数/存储过程中执行,否则会报”ANALYZE cannot run inside a transaction block”。请问是否有其它办法可以在函数/存储过程中对临时表做动态采样?
  • [问题求助] GaussDB数据量上多少,应该分区?
    GaussDB数据量上多少,应该分区?
  • [问题求助] GaussDB有没有什么函数用来数据脱敏,比如自动将查询出的数据中间打上星号
    GaussDB有没有什么函数用来数据脱敏,比如自动将查询出的数据中间打上星号?
  • [问题求助] GaussDB怎么实现分页查询?
    GaussDB怎么实现分页查询?关键字或者函数是什么?
  • [问题求助] GaussDB支持私有化部署吗?
    GaussDB支持私有化部署吗?
  • [技术干货] 大数据干货合集(2024年4月)
    GaussDB(DWS)分布式数据库的优势,就是利用多DN的资源进行并行计算,提高吞吐量。但有些SQL在这些方面不够注意,导致执行过程中由于全局性操作仅能在一个DN或CN上执行,造成了性能瓶颈。不能下推即属于这一类型问题。GaussDB(DWS)之数据类型转换------转载https://bbs.huaweicloud.com/forum/thread-02107148982213965024-1-1.htmlGaussDB(DWS)之全局性操作------转载https://bbs.huaweicloud.com/forum/thread-02107148983052764025-1-1.htmlGaussDB(DWS)之相关子查询场景------转载https://bbs.huaweicloud.com/forum/thread-0289148983569888018-1-1.htmlGaussDB(DWS)之冗余操作------转载https://bbs.huaweicloud.com/forum/thread-0289148984118868019-1-1.htmlGaussDB(DWS)资源管控方案技术场景分析------转载https://bbs.huaweicloud.com/forum/thread-0205149001764078024-1-1.htmlGaussDB(DWS)资源管控方案规划------转载https://bbs.huaweicloud.com/forum/thread-02107149001853949027-1-1.htmlGaussDB(DWS)资源管控测试验证------转载https://bbs.huaweicloud.com/forum/thread-0229149001940280026-1-1.html双集群系统方案探讨------转载https://bbs.huaweicloud.com/forum/thread-0289149005207821021-1-1.html双ETL模式讲解------转载https://bbs.huaweicloud.com/forum/thread-0208149005370763024-1-1.html数据仓库双活模式-----转载https://bbs.huaweicloud.com/forum/thread-02120149005501809020-1-1.html数据仓库适用场景讲解------转载https://bbs.huaweicloud.com/forum/thread-0208149005593039025-1-1.html【华为云数仓GaussDB(DWS)】SQL语句上线验收操作指导------转载https://bbs.huaweicloud.com/forum/thread-0229149005672975027-1-1.htmlDWS数据库用户权限设计------转载https://bbs.huaweicloud.com/forum/thread-0289149005995152023-1-1.htmlDWS提供的各种权限------转载https://bbs.huaweicloud.com/forum/thread-0205149006113829027-1-1.html基于角色的权限管理模型------转载https://bbs.huaweicloud.com/forum/thread-02107149006249884029-1-1.html
  • [技术干货] 基于角色的权限管理模型------转载
    系统中的权限:     系统权限:系统规定用户使用数据库的权限     对象权限:在表、序列、函数等数据库对象上执行特殊动作的权限。借助角色机制:    当给一组权限相同的用户授权时,不需对这些用户逐一授权。    通过将角色付给一个用户可是的该用户拥有这个角色中的所有权限。    一个用户可以属于不同的角色,拥有不同角色的权限。普通模式下:数据库管理员和业务用户(只读用户、只写用户、读写用户)◇ 在角色机制下,角色被视为一个数据库用户或者一组数据库用户。◇  数据库用户主要用途是连接数据库、访问数据库对象和执行SQL语句。◇  通常使用ROLE来组织权限,使用用户进行实际用户操作。◇  角色之间的权限可以继承,用户组的所有用户自动继承角色的权限。角色是权限的集合,权限限制了用户的行为通过为用户分配角色,限定用户的权利范围使用角色管理权限,更加有效使用角色管理其所有用户权限,更加统一角色可以被派生(开启资源管控,层级两层)角色的对象权限集合可以被继承,系统权限无法继承数据库(DATABASE)、用户(USER)、模式(SCHEMA)、表(TABLE)、函数(FUNCTION)、表空间(TABLESPACE)、类型(TYPE)、角色(ROLE)通过系统表字段查看对象权限变化:1、用户mytbl1为用户along1所拥有的表,且表along2对mytbl1有select(r)查询权限。#select relname,relacl from pg_class where relname = 'mytbl1'; relname |                 relacl                 ---------+----------------------------------------- mytbl1  | {along1=arwdDxt/along1,along2=r/along1}2、将mytbl1的插入权限赋给along2。# grant insert on along1.mytbl1 to along2;3、查看到用户along2已经拥有了对mytbl1的insert(a)权限。# select relname,relacl from pg_class where relname = 'mytbl1'; relname |                  relacl                 ---------+------------------------------------------ mytbl1  | {along1=arwdDxt/along1,along2=ar/along1
  • [技术干货] DWS提供的各种权限------转载
    角色(ROLE)本质上是一组权限的集合,通常情况下使用ROLE来组织权限,使用用户进行权限的管理和业务操作。角色之间的权限可以继承,用户组的所有用户可自动继承对应角色的权限。数据库中USER与ROLE的关系为,USER的权限来自于ROLE。用户组包含了具有相同权限的用户集合。用户可以看作是具有登录权限的角色。角色可以看作是没有登录权限的用户。根据不同业务场景需要,管理员使用 “管控面”创建并管理不同用户组。用户组通过绑定角色获取操作权限,用户加入用户组后,可获得用户组具有的操作权限。用户组同时可以达到对用户进行分类并统一管理多个用户。最大支持5000个用户组(包括系统内置用户组)。DWS提供的权限包括“管控面”和各组件的操作维护权限,在实际应用时需根据业务场景为各用户分别配置不同权限。为了提升权限管理的易用性,“管控面”引入角色的功能,通过选取指定的权限并统一授予角色,以权限集合的形式实现了权限集中查看和管理。这样一方面对普通用户屏蔽了内部的权限管理细节,另一方面对管理员简化了权限管理的操作方法,提升了权限管理的易用性和用户体验。集中权限管理中权限、角色和用户的关系例如图1所示。图1 权限管理与用户关联示意图DWS提供多种权限,根据业务场景实际需要选择指定的权限授予不同角色,可能是一个或者多个权限对应一个角色。角色A:授予操作权限A和B,用户A和用户B通过分配角色A取得对应的权限。角色B:授予操作权限C,用户C通过分配角色B取得对应的权限。角色C:授予操作权限D和F,用户C通过分配角色C取得对应的权限。通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。只对自己的表有所有权限,对其他用户放在属于各自模式下的表无权限。
  • [技术干货] DWS数据库用户权限设计------转载
    集群:集群是由一组服务器和其它资源组成的一个单独的系统,可以实现高可用性。有的情况下,可以实现负载均衡及并行处理。数据库:数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。一套集群包含一个或多个已命名数据库。用户和角色:用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。模式:数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引、集群及数据库链接。表:表是由行与列组合成的。每一列被当作是一个字段。每个字段中的值代表一种类型的数据。它们之间的关系如下: ​集群中可以创建多个库,库与库之间物理隔离,集群中的用户和角色是唯一并且全局共用的,访问库的权限通过用户进行控制,同一个库中,schema是唯一的,不同schema下可以创建同名表,表与表之间通过schema进行区分,不同用户之间的数据访问通过权限控制进行隔离,不同用户间表的访问权限通过用户进行维护,通过角色进行权限统一管理,一个用户下可创建不同schema区别不同的业务模块,通过不同用户提供给不同业务使用。使用CREATE USER和ALTER USER可以创建和管理数据库用户。数据库集群包含一个或多个已命名数据库。用户和角色在整个集群范围内是共享的,但是其数据并不共享。即用户可以连接任何数据库,但当连接成功后,任何用户都只能访问连接请求里声明的那个数据库。非三权分立下,DWS用户帐户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户帐户只能由初始用户员和安全管理员创建。在用户登录DWS时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和角色授予对这些对象的权限以控制谁可以访问哪个对象。除系统管理员外,具有CREATEDB属性的用户可以创建数据库并授予对这些数据库的权限。角色是一组用户的集合。通过GRANT把角色授予用户后,用户即具有了角色的所有权限。推荐使用角色进行高效权限分配。例如,可以为设计、开发和维护人员创建不同的角色,将角色GRANT给用户后,再向每个角色中的用户授予其工作所需数据的差异权限。在角色级别授予或撤消权限时,这些更改将作用到角色下的所有成员。Schema又称作模式。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突。每个数据库包含一个或多个Schema。数据库中的每个Schema包含表和其他类型的对象。数据库创建初始,默认具有一个名为public的Schema,且所有用户都拥有此Schema的权限。可以通过Schema分组数据库对象。Schema类似于操作系统目录,但Schema不能嵌套。相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。例如,a_schema和b_schema都可以包含名为mytable的表。具有所需权限的用户可以访问数据库的多个Schema中的对象。
总条数:592 到第
上滑加载中