华为云用户手册

  • 创建非结构化数据集 创建数据集前需存在已创建好的连接器,参考创建连接器。 用户登录 TICS 控制台。 进入TI CS 控制台后,单击页面左侧“计算节点管理”,进入计算节点管理页面。 在“计算节点管理”页面,查找需要发布数据的计算节点名称,单击“计算节点名称”进入计算节点详情页。 图3 选择计算节点 在“计算节点详情”页,单击“前往计算节点”,在登录页正确输入部署计算节点时设置的“登录用户名”和“密码”。 图4 前往计算节点 选择界面左侧“数据管理”,单击“创建”,在弹出的界面选择本地连接器(localConnector),选择“非结构化”任务类型,配置创建数据的参数,配置完成后单击“确定”。 配置非结构化数据集需注意: 选择数据文件:数据文件仅支持csv文件和数据目录两种形式。选择数据目录时,必须保证目录下至少包含一个csv文件,且所有csv文件的特征数保持一致。 非结构化数据是指数据结构属性不规则、不完整的数据,例如二进制文件、图片等。
  • 创建api数据集 用户登录TICS控制台。 进入TICS控制台后,单击页面左侧“计算节点管理”,进入计算节点管理页面。 在“计算节点管理”页面,查找需要发布数据的计算节点名称,单击“计算节点名称”进入计算节点详情页。 图5 选择计算节点 在“计算节点详情”页,单击“前往计算节点”,在登录页正确输入部署计算节点时设置的“登录用户名”和“密码”。 图6 前往计算节点 选择界面左侧“数据管理”,单击“创建”,在弹出的界面选择API类型连接器,配置创建数据的参数,配置完成后单击“确定”。 图7 创建数据 API数据集配置的外部数据源需满足如下要求: 请求方式为GET或POST 由查询条件可以查出对应一条或多条数据 当配置隐匿查询作业的外部数据源时,接口需支持模糊查询id经过sha256转换后的值。 类似MySQL中的如下语句,其中x为查询的具体值。 select * from table where SHA2(id,256) like 'x%' ; 返回json格式数组: [{"id":"7748076420210162913","x0":"3232","x1":15,"x2":16}, {"id":"7748076420210162912","x0":"3232","x1":105,"x2":106}, {"id":"3","x0":"3232","x1":115,"x2":116}]
  • 批量删除数据集 用户登录TICS控制台。 进入TICS控制台后,单击页面左侧“计算节点管理”,进入计算节点管理页面。 在“计算节点管理”页面,查找需要发布数据的计算节点名称,单击“计算节点名称”进入计算节点详情页。 图8 选择计算节点 在“计算节点详情”页,单击“前往计算节点”,在登录页正确输入部署计算节点时设置的“登录用户名”和“密码”。 图9 前往计算节点 选择界面左侧“数据管理”,勾选需要删除的数据集,单击“批量删除”。 图10 批量删除
  • 使用场景 连接器使用场景:参与方的数据信息分布在不同的资源服务上,即可通过连接器管理功能来快速连接到名下的各类资源服务。 数据创建使用场景:参与方加入空间后,需要提供自己的数据集信息,用户即可通过数据创建功能,获取到名下详细的资源列表。同时,有敏感信息的数据,还可以单独设置隐私策略,并在发布到空间侧后对其他参与方生效,限制敏感信息的使用。 数据预处理使用场景:训练机器学习模型前,可通过转换函数将特征数据转换成更加适合算法模型的特征数据。
  • 约束限制 只有空间升级失败或者回滚失败,才能进行回滚。 删除中的空间无法进行空间回滚。 空间回滚的过程中会导致空间的不可用。 回滚过程的相关操作记录将会保存。 由于1.20.0版本架构变化,如果需要跨1.20.0版本回滚,则需要联系客服或技术支持人员,先刷新后台数据库,再通过TICS控制台进行空间回滚。 如果未刷新数据库,直接通过TICS控制台将TICS 1.20.0及后续版本回滚到1.20.0之前版本,则会导致回滚后业务功能故障。
  • 下载计算节点配置信息 下载计算节点配置相关的信息,下载的信息可在部署计算节点的时候导入。“计算节点配置”代表“部署计算节点”属于哪个空间,用户输入的数据就会在哪个空间中参与计算。 配置信息包含证书,用于计算节点之间通信双向认证。证书保证了空间下的用户,部署的计算节点能够数据交互,参与计算。同时,也隔离了不同空间之间的数据访问。 合作方登录TICS控制台。进入TICS控制台后,单击页面左侧“通知管理”,进入通知管理页面。 浏览通知信息,单击“下载计算节点配置”,得到agentConfig.zip文件,解压到本地。 图1 下载计算节点配置
  • 发布数据 空间成员登录TICS控制台。进入TICS控制台后,单击页面左侧“计算节点管理”,进入“计算节点管理”页面。 在“计算节点管理”页,查找需要发布数据的计算节点名称,单击“计算节点名称”进入计算节点详情页。 图1 选择计算节点 在“计算节点详情”页,单击“前往计算节点”,在登录页输入部署计算节点时设置的“登录用户名”和“密码”。 图2 前往计算节点 登录成功后,进入到计算节点界面,选择左侧导航栏中“连接器管理”,单击“创建”,在弹出的界面配置创建连接器的参数,配置完成后单击“确定”。 测试功能为数据源连通性及密码正确性的检查测试。 图3 创建连接器(以RDS服务为例) 表1 参数说明 参数名 描述 连接器类型 “连接器类型”选择Hive连接时,需要选择Hive版本,当前仅支持 MRS 2.x和MRS3.x版本,选择的MRS集群需与当前计算节点部署CCE或IEF(非云上IEF节点不支持接入Hive)在同一VPC。“用户名”为MRS集群中拥有Hive权限的集群用户,“用户认证凭据”需要上传对应用户的认证凭据,MRS2.x版本请在 MapReduce服务 的下载用户认证文件中获取,MRS3.x版本请在导出认证凭据文件中获取。 “连接器类型”选择RDS服务时,所选择的RDS服务实例需与计算节点在同一VPC下,且端口开放。填写的用户名,需具有数据库的读写权限(参考修改权限)。“密码”为该用户登录RDS实例的密码。 “连接器类型”选择MySql时,需保证计算节点与数据库所在虚机的连通性,“驱动文件”需与目标MySQL数据库版本一致。驱动类名com.mysql.cj.jdbc.Driver,仅支持mysql-connector-java-5.x以后的版本,驱动文件请在Mysql驱动下载地址中获取。 “连接器类型” 选择DWS连接时,填写的用户名,需具有数据库的读写权限(参考权限管理)。“密码”为该用户登录DWS实例的密码。 “连接器类型” 选择ORACLE连接时,需保证计算节点与数据库的连通性,当前仅支持ORACLE 12c和19c版本。驱动文件需与目标ORACLE数据库版本一致,请在ORACLE驱动下载地址中获取。 “连接器类型” 选择API连接时,需保证计算节点与api接口的连通性,当前仅支持基础认证方式。 连接器名称 根据实际情况设置即可。 数据库版本 “连接器类型”选择MySql和ORACLE时,呈现此参数。根据实际情况设置即可。 数据库名称 “连接器类型”选择ORACLE时,呈现此参数。根据实际情况设置即可。 数据库服务器 “连接器类型”选择ORACLE时,呈现此参数。用户根据实际情况设置。 端口 “连接器类型”选择ORACLE时,呈现此参数。用户根据实际情况设置。 实例名称 “连接器类型”选择RDS或DWS服务时,呈现此参数。下拉选择实例即可。 数据库 “连接器类型”选择DWS服务时,呈现此参数。可手动输入DWS服务里面购买的数据库名称。 用户名 用户根据实际情况设置。 密码 用户根据实际情况设置。 驱动类名 “连接器类型”选择MySql和ORACLE时,呈现此参数。根据实际情况设置,注意驱动类名com.mysql.cj.jdbc.Driver仅支持mysql-connector-java-5.x以后的版本。 JDBC URL “连接器类型”选择MySql时,呈现此参数。JDBC访问端口。取值样例:198.0.0.1:3306。 驱动文件 “连接器类型”选择MySql和ORACLE时,呈现此参数。JDBC驱动。 其他属性 “连接器类型”选择MySql时,呈现此参数。用户根据实际情况设置任务所需的Key和Value。 选择界面左侧“数据管理”,单击“创建”,在弹出的界面配置创建数据的参数,配置完成后单击“确定”。 配置数据参数时,若“连接器”为Hive、MySQL、RDS、DWS、ORACLE类型时,可对字段信息进行隐私策略的配置: 字段类别: 唯一标识:指用于标识某个事物实体身份的字段。例如身份证、工号、公司代码等。勾选后,会通过一定的语法限制和运行期校验,保护数据集内的id总集,确保无法被恶意逆推。 敏感:指会参与统计、计算的敏感数据。例如薪水、纳税、用电量。勾选后,其他参与方只能使用敏感数据进行不可逆推的四则运算、聚合计算(sum/avg/variance)、条件过滤(where)。TICS会保护唯一标识和敏感数据不被成对地明文泄露,同时会对敏感数据的求和计算添加差分噪声,以保护敏感数据不被泄露。 非敏感:指不参与数值分析,也和唯一身份无关的数据。例如等级、公司类型。 脱敏:勾选后,会对数据进行脱敏。 在“数据管理”页签找到待发布的数据名称,单击“发布”,数据就会被同步到作业管理的数据集中。 编辑完成后,需再次发布,变更才会生效。
  • 使用TICS的用户角色 根据人员的职能进行划分,使用TICS的用户主要可以分为以下两类。 组织方 面向熟悉业务并具有管理、决策、审核权限的管理人员。组织方具有TICS的所有权限,包括创建空间、邀请空间成员、删除空间等权限。例如,在创建空间模块中,组织方可以对合作方人员发布的数据进行审核,把好质量关。 合作方 合作方使用数据源计算节点模块实现自主可控的数据源注册、隐私策略(脱敏、加密、水印)的设定、元数据的发布等,为数据源计算节点提供全生命周期的可靠性监控、运维管理。
  • 操作步骤 进入TICS服务控制台。 在计算节点管理中,找到购买的计算节点,通过登录地址,进入计算节点控制台。 图1 计算节点 登录计算节点后,在下图所述位置新建连接器。 图2 新建连接器 输入正确的连接信息,建立数据源和计算节点之间的安全连接。 图3 输入信息 建立完成后,连接器显示正常说明连接正常。 图4 连接正常 进入数据管理,进行数据集发布。 图5 新建数据管理 填写参数信息。 图6 填写参数 重复步骤1~7,发布support资助金数据表和power_data能源表。 数据发布的过程并不会直接从数据源中导出用户数据,仅从数据源处获取了数据集相关的元数据信息,用于任务的解析、验证等。
  • 数据准备 以下数据和表结构是根据场景进行模拟的数据,并非真实数据。 以下数据需要提前存导入到MySQL\Hive\Oracle等用户所属数据源中,TICS本身不会持有这些数据,这些数据会通过用户购买的计算节点进行加密计算,保障数据安全。 政府信息提供方的数据tax和support,在用户计算节点agent_gov上发布。 能源信息提供方的数据power,在用户计算节点agent_power上发布。 表1 企业税收和资助金情况表tax 列名 含义 字段分类 Id 企业id 唯一标识 tax_bal 税收 敏感 Industry 行业类型 不敏感 表2 企业政府资助金数据表support 列名 含义 字段分类 Id 企业id 唯一标识 supp_bal 资助金的金额 敏感 Industry 行业类型 不敏感 表3 企业水电情况表power 列名 含义 字段分类 Id 企业id 唯一标识 electric_bal 电费 敏感 water_bal 水费 敏感 从业务角度考虑,安排五个阶段,来对TICS系统进行验证和测试。本章重点讲述如何端到端实现一个该场景下的隐私计算作业完整执行流程。
  • 导入数据 在第一个合作方Partner1的MySQL数据源中,通过如下的SQL语句创建数据表: CREATE TABLE tax ( id integer COMMENT '企业id' , tax_bal integer COMMENT '税收金额' , industry varchar(150) COMMENT '行业' ); CREATE TABLE support ( id integer COMMENT '企业id' , supp_bal integer COMMENT '资助金额', industry varchar(150) COMMENT '行业' ); 在第二个合作方Partner2的MySQL数据源中,通过如下的SQL语句创建数据表: CREATE TABLE power ( id integer COMMENT '企业id' , electric_bal integer COMMENT '电费', water_bal integer COMMENT '水费' ); 将下面的数据分别导入csv文件并上传到MySQL数据源所在服务器。 Tax表的数据如下: id,tax_bal,industry 123400999,745,互联网 123400998,324,其他 123400997,664,其他 123400996,243,金融 123400995,715,互联网 123400994,475,通讯 123400993,526,其他 123400992,272,互联网 123400991,646,金融 123400990,510,其他 Support表的数据如下: id,supp_bal,industry 123400999,314,互联网 123400998,405,其他 123400997,371,其他 123400996,484,金融 123400995,381,互联网 123400994,405,通讯 123400993,292,其他 123400992,503,互联网 123400991,303,金融 123400990,412,其他 Power表的数据如下: id,electric_bal,water_bal 123400999,79,48 123400998,57,70 123400997,69,37 123400996,50,57 123400995,66,50 123400994,56,55 123400993,63,53 123400992,45,76 123400991,80,36 123400990,39,63 执行如下SQL语句,将csv文件内的数据导入创建的数据表。 LOAD DATA INFILE 'csv数据文件名' INTO TABLE 表名 或者执行如下的插入语句: Tax表: insert into tax values (123400999,745,'互联网'), (123400998,324,'其他' ), (123400997,664,'其他' ), (123400996,243,'金融' ), (123400995,715,'互联网' ), (123400994,475,'通讯' ), (123400993,526,'其他'), (123400992,272,'互联网' ), (123400991,646,'金融' ), (123400990,510,'其他'); Support表: insert into support values (123400999,314,'互联网' ), (123400998,405,'其他' ), (123400997,371,'其他' ), (123400996,484,'金融' ), (123400995,381,'互联网' ), (123400994,405,'通讯' ), (123400993,292,'其他' ), (123400992,503,'互联网' ), (123400991,303,'金融' ), (123400990,412,'其他'); Power表: insert into power values (123400999,79,48), (123400998,57,70), (123400997,69,37), (123400996,50,57), (123400995,66,50 ), (123400994,56,55), (123400993,63,53), (123400992,45,76), (123400991,80,36), (123400990,39,63);
  • 阶段五:基于MPC算法的高安全级别计算 完成demo验证阶段,为提升数据保护级别,接入以纯密文的状态做计算的更高安全级别的数据,可以通过开启高隐私级别开关,提升空间安全级别。 图1 高隐私级别开关 再次单击作业,审批进行的同时敏感数据被进行了秘密分享加密。DAG图显示了“psi + 秘密分享”的全过程流向,基本符合业界已公开的PSI算法流程和秘密分享流程。 图2 加密流程 图3 加密流程 父主题: 基于TICS实现端到端的企业积分查询作业
  • 步骤四:创建日志配置下发任务 在“虚拟机日志接入”页面,选择左侧导航栏的“任务管理”。 单击页面右上角的“新建任务”。 配置任务参数,参数说明如表5所示,配置完成后,单击“确定”。 表5 日志配置下发任务参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目。 任务名称 自定义任务名称。 任务类型 选择任务类型。 配置类型 选择日志采集配置类型。 配置列表 选择需要下发的配置。 用户名称 选择已规划并拥有日志读取权限的业务账号。 选择主机 选择需要下发配置的主机。 已选主机 显示已选主机。 在任务列表中查看已创建的任务,单击任务所在行“操作”列的“执行”。 执行完成后,状态为成功即表示日志配置内容已下发成功,即会按照配置将日志接入AppStage。
  • 步骤三:创建日志采集配置 在“虚拟机日志接入”页面,选择左侧导航栏的“日志采集配置”。 单击“创建日志采集配置”。 配置日志采集参数,配置完成后,单击“确定”。 新创建的采集配置默认为草稿状态,展示在“草稿”页签下,当配置被微服务使用后,状态会更新为“已下发”,并展示到“已下发”页签下。 表4 日志采集配置参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目,相同服务的不同日志使用同一个日志项目 日志空间 选择已创建的日志空间。选择日志空间时日志提取规则会展示日志空间定义的日志格式,采集的日志须满足对应格式。 配置名称 自定义日志采集配置名称。 配置类型 选择日志采集配置类型,建议选择“FILEBEAT”。 日志类型 输入采集日志类型。 日志路径 填写实际日志路径,可使用通配符进行匹配。 说明: 接入容器日志需要根据通配符匹配完成。 注意避免同一台主机上下发的多个采集任务重复采集相同的日志文件,会导致filebeat进程异常。 日志TPS TPS表示单实例每秒日志条数,请准确填写,用于推荐资源自动计算。 如果采集路径是单个日志,则按照单个日志单台机器(pod)的TPS值填写,且按照高峰期计算。 如果采集路径配置了通配符,则将采集的日志TPS累加,累加计算高峰期单台机器(pod)的TPS,建议按近期业务增长预期填写。 日志模式 选择日志采集模式,是单行模式还是多行模式。 首行正则表达式 日志模式选择多行模式时,需要输入首行正则表达式。 日志提取规则 根据填写的配置参数会自动生成提取规则。
  • 前提条件 已设置执行机。 待接入日志的虚拟机已执行如下命令,为虚拟机创建安装hips的目录、filebeat监控插件的目录,并为虚拟机已规划的业务账号授权。 mkdir -p /usr/local/hostguard/conf; mkdir -p /opt/huawei; chown 账号:账号 /opt/huawei #命令执行后,确认规划的业务账号已拥有业务日志和日志目录的读取权限(目录rx权限,日志r权限)。
  • 步骤二:创建日志空间 在“虚拟机日志接入”页面,选择左侧导航栏的“日志空间”。 单击“申请实时日志空间”。 根据界面提示填写日志空间参数。 配置实时日志空间信息,参数说明如表2所示,配置完成后,单击“下一步”。 表2 实时日志空间信息参数说明 参数名称 参数说明 空间名称 自定义日志空间名称,建议包含日志类型语义。 空间描述 输入日志空间描述,非必填项。 日志类型 选择需接入的日志类型。 日志大小 预计一天的日志量,默认为1GB。 开启日志检索 如果需要使用日志检索功能,可以打开该开关。 检索空间类型 选择ClickHouse。 原索引名称(ClickHouse) 可选择现有的ClickHouse,如果不填会自动生成。 TTL 日志索引的生命周期,即可以检索的日志时间范围。 配置实时日志字段信息,参数说明如表3所示,配置完成后,单击“下一步”。 表3 实时日志字段信息参数说明 参数名称 参数说明 自定义字段 勾选需要接入的日志字段,包括通用字段、容器字段和虚机字段。 新增自定义环境变量 如需添加自定义环境变量,请选择环境变量名,然后单击“添加”。虚机暂无可选自定义环境变量。 清洗规则 选择日志清洗规则。 请优先使用算子清洗模式采样,原始日志采样清洗只适用于单纯采样,不需要清洗的场景。 日志样例 输入日志样例。 解析脚本 配置解析脚本,将日志样例清洗为字段显示。 说明: 配置解析脚本时字段命名不支持使用中划线“-”,支持使用下划线“_”。 清洗字段 配置解析脚本后单击“配置解析脚本”,自动生成清洗字段,查看字段是否符合预期。 开启汇聚 选择是否开启日志汇集,如果日志量较大且不需要关注原始日志时可以进行日志汇集。 开启后需要配置汇集相关参数。 汇聚粒度 开启汇聚后,需要设置汇集粒度。支持分钟级和秒级数据汇聚。选择分钟级,每一分钟会生成一个统计点,选择秒级,每一秒会生成一个统计点。 汇聚时间戳 仅支持时间戳格式字段timestamp,获取当前计算的日志的时间。 时间戳格式 选择时间戳格式。支持秒、毫秒、纳秒级时间戳,获取当前计算的日志的时间格式。 汇聚维度 结合业务场景需要,选择日志是以哪些日志字段进行日志汇聚,支持多选。 汇聚度量 设置对日志字段以COUNT、SUM、MAX、MIN进行度量。 原始字段是日志中的字段,用来获取原始值;度量字段是用户自定义字段名,计算后,度量的值会赋值给该字段。 输出原始日志 选择是否需要输出原始日志。如果打开输出原始日志,原始日志也会上报。 日志字段确认,确认日志字段配置是否达到预期,达到预期后可单击单击“下一步”。 其中字段来源COMMON表示通用字段、CONTAINER表示容器字段、VM表示虚机字段。 申请日志空间共享,如果需要其他自有服务共用这个空间进行日志下发和日志检索,可以添加共享服务。配置完成后,单击“保存”。
  • 配置流水线(添加业务包构建任务) 在流水线的“任务编排”页面,单击或者。 单击,在“编辑阶段”页面,修改“阶段名称”为“构建阶段”,并将“总是运行”设置为“是””(选择“是”,表示流水线执行时,该阶段下的任务默认选中必须执行且不可取消;选择“否”,表示流水线执行时,该阶段下的任务默认选中但可以取消。),然后单击“确定”。 在流水线的“构建阶段”,单击“新建任务”。 在“新建任务”页面的右侧区域,选择“构建”页签,搜索“Build构建”并将鼠标移至该插件卡片,单击“添加”,将此插件添加到任务中。 在“任务配置”页面右侧区域“请选择需要调用的任务”处单击“点击创建”,如图2所示。 图2 任务配置 在“新建构建任务”页面的“基本信息”页面,自定义任务名称(以“adadss-build”为例),归属项目默认为当前服务,源码源选择“Repo”,选择对应的代码仓库(以创建好的“adadss”仓库为例)以及分支“master”,单击“下一步”。 在“构建模板”页面,选择“空白构建模板”模板,然后单击“下一步”,进入“构建步骤”的“图形化”页签,该页面的“构建环境配置”和“代码下线配置”无需配置,保持默认配置即可。 配置构建步骤“Maven构建”。 返回“构建步骤”页签,单击“点击添加构建步骤”,在右侧“添加步骤”页面搜索“Maven构建”,鼠标移至插件卡片并单击“添加”。 执行maven构建命令将业务代码打包,不同项目有所不同。 参考示例:mvn -Dassembly clean compile package -Dmaven.test.skip=true -U -T4 若某些jar包依赖不到,可将仓库地址添加在setting配置的公有依赖仓库。 配置镜像构建。 登录华为云 容器镜像服务 控制台,在左侧导航栏选择“我的镜像”,单击右上角“页面上传”,在“页面上传”对话框,创建组织(必须使用华为云账号),单击“选择镜像文件”,选择已经准备好的基础镜像tar包,单击“开始上传”,待任务进度显示“上传完成”,表示镜像文件上传成功。 基础镜像tar包仅需上传一次,后续可直接从镜像文件列表中选取。 在镜像仓库找到9.a上传的基础镜像,参照图3复制镜像地址。 图3 复制镜像地址 将9.b复制的镜像地址粘贴到Dockerfile文件中第一行FROM命令后,如图4所示。 图4 将镜像地址粘贴到Dockerfile文件中 返回华为云容器 镜像服务 控制台镜像列表中单击镜像tar包名称,进入镜像详情页面,选择“Pull/Push指南”页签,单击“操作步骤”中的“生成登录指令”。 在“登录指令”对话框中的“临时登录指令”框的指令末尾处单击,复制临时登录指令,如图5所示。 图5 复制临时登录指令 返回“构建步骤”页面,单击“添加步骤”,在右侧“添加步骤”页面搜索“执行Docker命令”,鼠标移至该插件卡片并单击“添加”。 单击“执行Docker命令”步骤,在右侧“命令”参数下单击“添加”添加docker命令,在“命令”下拉框中选择“login”,参数框中输入“-u cn-north-7@K5X8GVN5B4H4B8KB9SDO -p 1dd00acee886bd05886cded19f5af1cb1e96326e4354fc0f3f493f12a3586518 swr.cn-north-7.myhuaweicloud.com”,登录环境以便Dockerfile文件中可正常获取基础镜像。 在“操作”列单击“+”继续添加docker命令,“命令”下拉框中选择“build”,参数框中输入“-t helloworldservice:23.11.02.1 -f ./deploy_docker/Dockerfile .”,指定代码仓中的Dockerfile文件,构建镜像。 工作目录一般为根目录。 在“操作”列单击“+”继续添加docker命令,“命令”下拉框中选择“save”,参数框中输入“-o helloworldservice.23.11.02.1.tar helloworldservice:23.11.02.1”,将镜像包保存为tar包。至此,添加docker命令完成,如图6所示。 图6 执行docker命令 返回“构建步骤”页面,单击“添加步骤”,在右侧“添加步骤”页面搜索“Maven构建”,鼠标移至插件卡片并单击“添加”。执行zip命令,将tar包与业务代码中的package.json文件直接压缩成一个zip包。 参考命令:zip helloworldservice_23.11.02.1.zip helloworldservice.23.11.02.1.tar package.json 继续单击“添加步骤”,添加“上传文件到OBS”插件,在“上传文件到OBS”页面,参照表2配置相关参数。 表2 “上传文件到OBS”(业务包)步骤配置的参数说明 参数名称 参数说明 步骤显示名称 构建步骤的名称,默认为“上传文件到OBS”,保持默认或自定义修改均可。 授权用户 在下拉列表选择: 当前用户:上传到当前租户的OBS桶。 其他用户:可以通过选择 IAM 账号的方式上传到指定租户的OBS桶。 IAM账号 “授权用户”选择“其他用户”时需配置此参数,配置步骤如下: 单击“管理IAM账号”,进入“服务扩展点管理”页面。 单击“新建服务扩展点”,选择“IAM账户”,弹出“新建服务扩展点”对话框,填写以下参数,补充租户下用户的AK、SK即可: 连接名称:服务扩展点的名称。例如“obs权限”。 Access Key Id:访问密钥ID(AK),获取访问密钥AK/SK。 Secret Access Key:秘密访问密钥(SK),获取访问密钥AK/SK。 信息填写完成,单击“确定”。 构建产物路径 路径为10的zip包的相对路径或输入*模糊匹配(如“./DemoServiceB/*.zip”) 桶名 用户自定义构建结果上传到的目标OBS桶名。 OBS存储目录 用户自定义构建结果在OBS上的存储目录 OBS存储文件名 非必填项,构建结果在OBS上的存储文件名(不包含目录),留空时可上传多个文件,取构建产物文件名为OBS存储文件名;不为空时只能上传单个文件,如 application.jar。 是否上传文件夹 非必填项,可选择是否开启上传文件夹。 OBS头域 非必填项,上传文件时加入一个或多个自定义的响应头,当用户下载此对象或查询此对象元数据时,加入的自定义响应头会在返回消息的头域中出现。如:“键”填写成“x-frame-options”,“值”填写成“false”,即可禁止OBS中存放的网页被第三方网页嵌入。 单击右上角“新建”,配置构建任务完成。 返回5的“任务配置”页面,在“请选择需要调用的任务”下拉列表中选择12配置完成的构建任务,“仓库”下拉列表选择创建代码仓库中已创建的仓库,其他参数无需配置,保持默认即可。 单击“确定”,添加业务包构建任务完成。 单击“任务编排”页面右上角“保存”,保存流水线的任务配置。
  • 更多操作 创建版本完成后,您还可以执行如下表2所示的操作。 表2 更多操作 操作 说明 编辑版本 说明: 可编辑未发布的版本,不可编辑已发布的版本。 在“版本管理”页面的版本列表中,单击“操作”列的“编辑”。 在“编辑版本”页面,可编辑版本描述、版本类型、产能、版本开始时间和版本发布时间。 单击“提交”。 删除版本 说明: 可删除未发布的版本,不可删除已发布的版本。 删除版本后其名下全部内容将同步被清空,此操作无法恢复,请谨慎操作。 在“版本管理”页面的版本列表中,单击“操作”列的“删除”。 在“删除版本”对话框,根据界面提示在文本框输入“确定删除”,并勾选“我已知悉,强制删除”。 单击“确定”。
  • 使用场景 查询全库所有用户表的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null and a.schema not in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob') group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库所有表(用户表+系统表)的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库系统表信息: 1 select * from pgxc_stat_table_dirty where schema in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob');
  • PG_AUTHID PG_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTHID字段 名称 类型 描述 oid oid 行标识符(隐藏属性,必须明确选择才会显示)。 rolname name 角色名称。 rolsuper boolean 角色是否是拥有最高权限的初始系统管理员。 rolinherit boolean 角色是否自动继承其所属角色的权限。 rolcreaterole boolean 角色是否可以创建更多角色。 rolcreatedb boolean 角色是否可以创建数据库。 rolcatupdate boolean 角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 rolcanlogin boolean 角色是否可以登录,即该角色是否能够作为初始会话授权标识符。 rolreplication boolean 角色是一个复制的角色(适配作用,没有实际的功能)。 rolauditadmin boolean 审计用户。 rolsystemadmin boolean 管理员用户。 rolconnlimit integer 对于可以登录的角色,限制其最大并发连接数量。-1 表示没有限制。 rolpassword text 口令(可能是加密的),如果没有口令,则为NULL。 rolvalidbegin timestamp with time zone 账户的有效开始时间,如果没有开始时间,则为NULL。 rolvaliduntil timestamp with time zone 账户的有效结束时间,如果没有结束时间,则为NULL。 rolrespool name 用户所能够使用的resource pool。 roluseft boolean 角色是否可以操作外表。 rolparentid oid 用户所在组用户的OID。 roltabspace Text 用户永久表存储空间限额。 rolkind char 特殊用户种类,包括私有用户、逻辑集群管理员、普通用户。 rolnodegroup oid 用户所关联的Node Group OID,该Node Group必须是逻辑集群。 roltempspace Text 用户临时表存储空间限额。 rolspillspace Text 用户算子落盘空间限额。 rolexcpdata text 保留字段未使用。 rolauthinfo text 用户采用LDAP认证时的额外信息。如果是其他认证模式,则为NULL。 rolpwdexpire integer 用户口令过期时间,在口令未过期时,用户自己修改口令。过期后请管理员修改口令。-1表示没有过期时间限制。 rolpwdtime timestamp with time zone 口令的创建时间。 父主题: 系统表
  • 数组类型处理 GaussDB (DWS)支持基础数组类型的转换,只需要在创建函数时在数据类型后追加 [] 即可,例如: CREATE FUNCTION java_arrayLength(INTEGER[]) RETURNS INTEGER AS 'Example.getArrayLength' LANGUAGE JAVA; Java代码类似于: public class Example { public static int getArrayLength(Integer[] intArray) { return intArray.length; } } 那么下面的调用的语句后: SELECT java_arrayLength(ARRAY[1, 2, 3]); 得到预期结果应该如下所示: java_arrayLength --------------------- 3 (1 row)
  • 重载函数 PL/Java支持重载函数,因此可以创建同名函数,或者调用Java代码中的重载方法。步骤如下: 创建重载函数 例如,在Java中可以实现两个方法名相同,输入参数类型不同的方法dummy(int) 和dummy(String) public class Example { public static int dummy(int value) { return value*2; } public static String dummy(String value) { return value; } } 并在GaussDB(DWS)中创建两个同名函数分别指定为上述两个方法: CREATE FUNCTION java_dummy(INTEGER) RETURNS INTEGER AS 'Example.dummy' LANGUAGE JAVA; CREATE FUNCTION java_dummy(VARCHAR) RETURNS VARCHAR AS 'Example.dummy' LANGUAGE JAVA; 调用重载函数 在调用重载函数时,GaussDB(DWS)会根据输入的参数类型去调用匹配该类型的Java方法。因此上述两个函数的调用结果如下所示: SELECT java_dummy(5); java_dummy ----------------- 10 (1 row) SELECT java_dummy('5'); java_dummy --------------- 5 (1 row) 需要注意的是,由于GaussDB(DWS)对数据类型存在隐式转换的情况,因此建议在调用重载函数时,指定输入参数的类型,例如: SELECT java_dummy(5::varchar); java_dummy ---------------- 5 (1 row) 此时会优先匹配所指定的参数类型,如果不存在指定参数类型的Java方法,则会对参数进行隐式转换匹配转换后的参数类型对应的Java方法。 SELECT java_dummy(5::INTEGER); java_dummy ----------------- 10 (1 row) DROP FUNCTION java_dummy(INTEGER); SELECT java_dummy(5::INTEGER); java_dummy ---------------- 5 (1 row) 隐式转换的数据类型包括: 可以默认转换为INTEGER类型的包括:SMALLINT 可以默认转换为BIGINT类型的包括:SMALLINT, INTEGER 可以默认转换为BOOL类型的包括:TINYINT, SMALLINT, INTEGER, BIGINT 可以默认转换为TEXT类型的包括:CHAR, NAME, BIGINT, INTEGER, SMALLINT, TINYINT, RAW, FLOAT4, FLOAT8, BPCHAR, VARCHAR, NVARCHAR2, DATE, TIMESTAMP, TIMESTAMPTZ, NUMERIC, SMALLDATETIME 可以默认转换为VARCHAR类型的包括:TEXT, CHAR, BIGINT, INTEGER, SMALLINT, TINYINT, RAW, FLOAT4, FLOAT8, BPCHAR, DATE, NVARCHAR2, TIMESTAMP, NUMERIC, SMALLDATETIME 删除重载函数 对于重载函数,删除时需要指定函数的参数类型,否则无法删除。 DROP FUNCTION java_dummy(INTEGER);
  • 相关GUC参数 FencedUDFMemoryLimit 会话级别的GUC参数,用户限制会话发起的单个Fenced UDF Worker进程的最大虚拟内存使用量,设置方法如下: SET FencedUDFMemoryLimit='512MB'; 该参数的取值范围为 (150MB, 1G],当设置大于1G时会立即报错,当设置小于等于150MB时,则会在调用函数时报错。 FencedUDFMemoryLimit设置为0,表示不控制Fenced UDF Worker的虚拟内存使用量。 建议通过设置udf_memory_limit控制Fenced UDF Worker使用的物理内存量。不建议用户使用FencedUDFMemoryLimit,尤其在使用Java UDF时不建议用户设置此参数。但是如果用户非常清楚设置该参数带来的影响,可以参考下列信息进行设置: C UDF worker启动之后,占用的虚拟内存约为200MB,占用的物理内存约为16MB。 Java UDF worker启动之后,占用的虚拟内存约为2.5GB,占用的物理内存约为50MB。
  • 日志 PL/Java使用标准的Java Logger。 因此,用户可以通过如下方式记录日志: Logger.getAnonymousLogger().config( "Time is " + new Date(System.currentTimeMillis())); 初始化的Java Logger类会默认设置为CONFIG级别,对应为GaussDB(DWS)的 LOG 级别。Java Logger类输出的日志消息都会重定向到GaussDB(DWS)后端,并写入到服务器日志或显示在用户界面上。MPPDB服务器日志将记录LOG、WARNING、ERROR级别的信息,而SQL用户界面将显示WARNING和ERROR级别的日志消息。Java Logger级别与GaussDB(DWS)的日志级别对应关系见下表。 表2 PL/Java日志级别 java.util.logging.Level GaussDB(DWS) 日志级别 SERVER ERROR WARNING WARNING CONFIG LOG INFO INFO FINE DEBUG1 FINER DEBUG2 FINEST DEBUG3 用户可以通过以下方式更改Java Logger的记录级别。例如通过下面的Java代码修改Java Logger级别为SEVERE,此时再记录WARNING级别的日志时,日志消息(msg)就不会再写入到GaussDB(DWS)日志中。 Logger log = Logger.getAnonymousLogger(); Log.setLevel(Level.SEVERE); log.log(Level.WARNING, msg);
  • 基本数据类型映射关系 表1 PL/Java默认数据类型映射关系 GaussDB(DWS) Java BOOLEAN boolean "char" byte bytea byte[] SMALLINT short INTEGER int BIGINT long FLOAT4 float FLOAT8 double CHAR java.lang.String VARCHAR java.lang.String TEXT java.lang.String name java.lang.String DATE java.sql.Timestamp TIME java.sql.Time (stored value treated as local time) TIMETZ java.sql.Time TIMESTAMP java.sql.Timestamp TIMESTAMPTZ java.sql.Timestamp
  • 示例 使用PL/Java函数时,需要首先将Java方法的实现打包为jar包并且部署到数据库中,然后使用数据库管理员账号创建函数,考虑兼容性问题,请使用1.8.0_322版本的JRE进行编译。 编译jar包。 Java方法的实现和出包可以借助IDE来实现,以下是一个通过命令行来进行编译和出包的简单的示例,通过这个简单示例可以创建出一个包含单个方法的jar包文件。 首先,编写一个Example.java文件,在此文件中实现子字符串大写转换的方法,本例中类名为Example,方法名为upperString,内容如下: 1 2 3 4 5 6 7 public class Example { public static String upperString (String text, int beginIndex, int endIndex) { return text.substring(beginIndex, endIndex).toUpperCase(); } } 然后,创建manifest.txt清单文件,文件内容如下: 1 2 3 4 5 6 Manifest-Version: 1.0 Main-Class: Example Specification-Title: "Example" Specification-Version: "1.0" Created-By: 1.6.0_35-b10-428-11M3811 Build-Date: 08/14/2018 10:09 AM 其中,Manifest-Version定义了manifest文件的版本,Main-Class定义了jar文件的入口类,Specification-Title和Specification-Version属于包的扩展属性,Specification-Title定义了扩展规范的标题,Specification-Version定义了扩展规范的版本,Created-By声明了该文件的生成者,Build-Date声明了该文件构建日期。 最后,编译java文件并打包得到javaudf-example.jar 1 2 javac Example.java jar cfm javaudf-example.jar manifest.txt Example.class jar包的命名规则应符合JDK命名要求,如果含有非法字符,在部署或者使用函数时将出错。 部署jar包。 Jar包首先需要放置到OBS服务器中,放置方法具体请参见《 对象存储服务 控制台指南》的上传文件章节。接着创建访问密钥AK/SK,获取访问密钥的具体步骤,请参见创建访问密钥(AK和SK)章节。登录数据库运行gs_extend_library函数,将文件导入到GaussDB(DWS)中: 1 SELECT gs_extend_library('addjar', 'obs://bucket/path/javaudf-example.jar accesskey=access_key_value_to_be_replaced secretkey=secret_access_key_value_to_be_replaced region=region_name libraryname=example'); gs_extend_library函数如何使用请参见 管理jar包和文件。函数中的AK/SK值,请用户根据实际获取值替换。region_name请用户根据实际所在的区域名称替换。 使用PL/Java函数。 首先,使用拥有sysadmin权限的数据库用户(例如:dbadmin)登录数据库并创建java_upperstring函数如下: 1 2 3 4 CREATE FUNCTION java_upperstring(VARCHAR, INTEGER, INTEGER) RETURNS VARCHAR AS 'Example.upperString' LANGUAGE JAVA; 函数java_upperstring中定义的数据类型为GaussDB(DWS)的数据类型。该数据类型需要和步骤1中java定义的方法upperString中数据类型一一对应。GaussDB(DWS)与Java数据类型的对应关系,请参见表1。 AS子句用于指定该函数所调用的Java方法的类名和static方法名,格式为“类名.方法名”。该字段需要和步骤1中java定义的类名和方法名一致。 使用PL/Java函数时,LANGUAGE字段应指定为JAVA。 CREATE FUNCTION更多说明,请参见创建函数。 然后,执行java_upperstring函数: 1 SELECT java_upperstring('test', 0, 1); 得到预期结果为: 1 2 3 4 java_upperstring --------------------- T (1 row) 授权普通用户使用PL/Java函数。 创建普通用户,名称为udf_user。 1 CREATE USER udf_user PASSWORD 'password'; 授权普通用户udf_user对java_upperstring函数的使用权限。注意,此处需要把函数所在模式和函数的使用权限同时赋予给用户,用户才可以使用此函数。 1 2 GRANT ALL PRIVILEGES ON SCHEMA public TO udf_user; GRANT ALL PRIVILEGES ON FUNCTION java_upperstring(VARCHAR, INTEGER, INTEGER) TO udf_user; 以普通用户udf_user登录数据库。 1 SET SESSION SESSION AUTHORIZATION udf_user PASSWORD 'password'; 执行java_upperstring函数: 1 SELECT public.java_upperstring('test', 0, 1); 得到预期结果为: 1 2 3 4 java_upperstring --------------------- T (1 row) 删除函数。 如果不再使用该函数可以进行删除: 1 DROP FUNCTION java_upperstring; 卸载jar包。 使用gs_extend_library函数卸载jar包: 1 SELECT gs_extend_library('rmjar', 'libraryname=example');
  • PG_ROLES PG_ROLES视图提供访问数据库角色的相关信息。 表1 PG_ROLES字段 名称 类型 引用 描述 rolname name - 角色名。 rolsuper boolean - 该角色是否是拥有最高权限的初始系统管理员。 rolinherit boolean - 该角色是否继承角色的权限。 rolcreaterole boolean - 该角色是否可以创建其他的角色。 rolcreatedb boolean - 该角色是否可以创建数据库。 rolcatupdate boolean - 该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 rolcanlogin boolean - 该角色是否可以登录数据库。 rolreplication boolean - 该角色是否可以复制。 rolauditadmin boolean - 该角色是否为审计管理员。 rolsystemadmin boolean - 该角色是否为系统管理员。 rolconnlimit integer - 对于可以登录的角色,rolconnlimit限制了该角色允许发起的最大并发连接数。 -1表示无限制。 rolpassword text - 不是口令,总是********。 rolvalidbegin timestamp with time zone - 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 rolvaliduntil timestamp with time zone - 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 rolrespool name - 用户所能够使用的resource pool。 rolparentid oid PG_AUTHID.rolparentid 用户所在组用户的OID。 roltabspace text - 用户永久表存储空间限额。 roltempspace text - 用户临时表存储空间限额。 rolspillspace text - 用户算子落盘空间限额。 rolconfig text[] - 运行时配置变量的会话缺省。 oid oid PG_AUTHID.oid 角色的ID。 roluseft boolean PG_AUTHID.roluseft 角色是否可以操作外表。 nodegroup name - 角色所关联的逻辑集群名字,如果没有关联逻辑集群,该值为空。 父主题: 系统视图
  • 使用场景 查询全库所有用户表的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null and a.schema not in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob') group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库所有表(用户表+系统表)的整体脏页率: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 select t1.schema, t1.tablename, t1.total_ins, t1.total_upd, t1.total_del, t1. total_tup_hot_upd, t1.total_change, t1.total_live, t1.total_dead, t1.total_dirty_rate, t1.max_dirty, t2.max_node, t1.min_dirty, t2.min_node from (select a.schema, a.tablename, sum(a.n_tup_ins) as total_ins, sum(a.n_tup_upd) as total_upd, sum(a.n_tup_del) as total_del, sum(a.n_tup_hot_upd) as total_tup_hot_upd, sum(a.n_tup_change) as total_change, sum(a.n_live_tup) as total_live, sum(a.n_dead_tup) as total_dead, Round((total_dead / (total_dead + total_live + 0.0001) * 100),2) AS total_dirty_rate, max(a.dirty_rate) as max_dirty, min(a.dirty_rate) as min_dirty from pg_catalog.pgxc_stat_table_dirty a where a.partname is null group by a.tablename, a.schema ) t1, (select distinct tablename, schema, first_value(nodename) over(partition by tablename, schema order by dirty_rate) as min_node, first_value(nodename) over(partition by tablename, schema order by dirty_rate desc) as max_node from (select * from pg_catalog.pgxc_stat_table_dirty)) t2 where t1.tablename = t2.tablename and t1.schema = t2.schema; 查询全库系统表信息: 1 select * from pgxc_stat_table_dirty where schema in ('pg_toast','cstore','gs_logical_cluster','sys','dbms_om','information_schema','pg_catalog','dbms_output','dbms_random','utl_raw','utl_raw dbms_sql','dbms_lob');
  • PG_AUTHID PG_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 在一个集群中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTHID字段 名称 类型 描述 oid oid 行标识符(隐藏属性,必须明确选择才会显示)。 rolname name 角色名称。 rolsuper boolean 角色是否是拥有最高权限的初始系统管理员。 rolinherit boolean 角色是否自动继承其所属角色的权限。 rolcreaterole boolean 角色是否可以创建更多角色。 rolcreatedb boolean 角色是否可以创建数据库。 rolcatupdate boolean 角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 rolcanlogin boolean 角色是否可以登录,即该角色是否能够作为初始会话授权标识符。 rolreplication boolean 角色是一个复制的角色(适配作用,没有实际的功能)。 rolauditadmin boolean 审计用户。 rolsystemadmin boolean 管理员用户。 rolconnlimit integer 对于可以登录的角色,限制其最大并发连接数量。-1 表示没有限制。 rolpassword text 口令(可能是加密的),如果没有口令,则为NULL。 rolvalidbegin timestamp with time zone 账户的有效开始时间,如果没有开始时间,则为NULL。 rolvaliduntil timestamp with time zone 账户的有效结束时间,如果没有结束时间,则为NULL。 rolrespool name 用户所能够使用的resource pool。 roluseft boolean 角色是否可以操作外表。 rolparentid oid 用户所在组用户的OID。 roltabspace Text 用户永久表存储空间限额。 rolkind char 特殊用户种类,包括私有用户、逻辑集群管理员、普通用户。 rolnodegroup oid 用户所关联的Node Group OID,该Node Group必须是逻辑集群。 roltempspace Text 用户临时表存储空间限额。 rolspillspace Text 用户算子落盘空间限额。 rolexcpdata text 保留字段未使用。 rolauthinfo text 用户采用LDAP或 OneAccess 认证时的额外信息。如果是其他认证模式,则为NULL。 rolpwdexpire integer 用户口令过期时间,在口令未过期时,用户自己修改口令。过期后请管理员修改口令。-1表示没有过期时间限制。 rolpwdtime timestamp with time zone 口令的创建时间。 父主题: 系统表
  • PG_ROLES PG_ROLES视图提供访问数据库角色的相关信息。 表1 PG_ROLES字段 名称 类型 引用 描述 rolname name - 角色名。 rolsuper boolean - 该角色是否是拥有最高权限的初始系统管理员。 rolinherit boolean - 该角色是否继承角色的权限。 rolcreaterole boolean - 该角色是否可以创建其他的角色。 rolcreatedb boolean - 该角色是否可以创建数据库。 rolcatupdate boolean - 该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 rolcanlogin boolean - 该角色是否可以登录数据库。 rolreplication boolean - 该角色是否可以复制。 rolauditadmin boolean - 该角色是否为审计管理员。 rolsystemadmin boolean - 该角色是否为系统管理员。 rolconnlimit integer - 对于可以登录的角色,rolconnlimit限制了该角色允许发起的最大并发连接数。 -1表示无限制。 rolpassword text - 不是口令,总是********。 rolvalidbegin timestamp with time zone - 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 rolvaliduntil timestamp with time zone - 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 rolrespool name - 用户所能够使用的resource pool。 rolparentid oid PG_AUTHID.rolparentid 用户所在组用户的OID。 roltabspace text - 用户永久表存储空间限额。 roltempspace text - 用户临时表存储空间限额。 rolspillspace text - 用户算子落盘空间限额。 rolconfig text[] - 运行时配置变量的会话缺省。 oid oid PG_AUTHID.oid 角色的ID。 roluseft boolean PG_AUTHID.roluseft 角色是否可以操作外表。 nodegroup name - 角色所关联的逻辑集群名字,如果没有关联逻辑集群,该值为空。 父主题: 系统视图
共100000条