华为云用户手册

  • 支持的授权项 策略包含系统策略和自定义策略,如果系统策略不满足授权要求,管理员可以创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制。策略支持的操作与API相对应,授权项列表说明如下: 权限:允许或拒绝某项操作。 对应API接口:自定义策略实际调用的API接口。 授权项:自定义策略中支持的Action,在自定义策略中的Action中写入授权项,可以实现授权项对应的权限功能。 IAM 项目(Project)/企业项目(Enterprise Project):自定义策略的授权范围,包括IAM项目与企业项目。授权范围如果同时支持IAM项目和企业项目,表示此授权项对应的自定义策略,可以在IAM和企业管理两个服务中给用户组授权并生效。如果仅支持IAM项目,不支持企业项目,表示仅能在IAM中给用户组授权并生效,如果在企业管理中授权,则该自定义策略不生效。关于IAM项目与企业项目的区别,详情请参见IAM与企业管理的区别。 UGO支持的自定义策略授权项请参见UGO授权分类。
  • 响应消息体 响应消息体通常以结构化格式返回,与响应消息头中Content-type对应,传递除响应消息头之外的内容。 对于获取用户Token的接口,返回如下消息体。为篇幅起见,这里只展示部分内容。 { "token": { "expires_at": "2019-02-13T06:52:13.855000Z", "methods": [ "password" ], "catalog": [ { "endpoints": [ { "region_id": "cn-north-1", ...... 当接口调用出错时,会返回错误码及错误信息说明,错误响应的Body体格式如下所示。 { "error_msg": "The format of message is error", "error_code": "UGO.0001" } 其中,error_code表示错误码,error_msg表示错误描述信息。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 当您使用Token认证方式完成认证鉴权时,需要获取用户Token并在调用接口时增加“X-Auth-Token”到业务接口请求消息头中。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示: { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFG....”,则调用接口时将“X-Auth-Token: ABCDEFG....”加到请求消息头即可,如下所示。 GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects Content-Type: application/json X-Auth-Token: ABCDEFG....
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如表3公共消息头需要添加到请求中。 表3 公共请求消息头 名称 描述 是否必选 示例 Content-Type 发送的实体的MIME类型。 是。 默认取值为:“application/json”,有其他取值时会在具体接口中专门说明。 Content-Length 请求body长度,单位为Byte。 POST/PUT请求为可选。 GET不包含该消息头。 3495 X-Auth-Token 用户Token。请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。 否。 说明: 使用Token认证时该字段必选。 MIIPAgYJKoZfegerIhvcNAQcCo...ggg1BBIINPXsidG9rZ X-Language 请求语言类型。 是。 en-us 其它header属性,请遵照http协议。 对于获取用户Token的接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token的接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxx为project的名称,如cn-north-1,您可以从地区和终端节点中获取。 scope参数定义了Token的作用域,上面示例中获取的Token仅能访问project下的资源。您还可以设置Token额作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取IAM用户Token(使用密码)。 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token的接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 请求方法 请求方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 请求URI 请求URI由如下部分组成。 {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 表1 请求URI 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。 例如IAM服务在“华南-广州”区域的Endpoint为“iam.cn-north-1.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华南-广州”区域的Token,则需使用“华南-广州”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 基本概念 账号 用户注册华为云时的账号,账号对其所拥有的资源及云服务具有完全的访问权限,可以重置用户密码、分配用户权限等。由于账号是付费主体,为了确保账号安全,建议您不要直接使用账号进行日常管理工作,而是创建用户并使用他们进行日常管理工作。 用户 由账号在IAM中创建的用户,是云服务的使用人员,具有身份凭证(密码和访问密钥)。 通常在调用API的鉴权过程中,您需要用到账号、用户和密码等信息。 区域(Region) 指云资源所在的物理位置,同一区域内可用区间内网互通,不同区域间内网不互通。通过在不同地区创建云资源,可以将应用程序设计的更接近特定客户的要求,或满足不同地区的法律或其他要求。 可用区(AZ,Availability Zone) 一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 项目 华为云的区域默认对应一个项目,这个项目由系统预置,用来隔离物理区域间的资源(计算资源、存储资源和网络资源),以默认项目为单位进行授权,用户可以访问您账号中该区域的所有资源。如果您希望进行更加精细的权限控制,可以在区域默认的项目中创建子项目,并在子项目中购买资源,然后以子项目为单位进行授权,使得用户仅能访问特定子项目中资源,使得资源的权限控制更加精确。 图1 项目隔离模型 企业项目 企业项目是项目的升级版,针对企业不同项目间资源的分组和管理,是逻辑隔离。企业项目中可以包含多个区域的资源,且项目中的资源可以迁入迁出。 关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。 父主题: 使用前必读
  • 终端节点 终端节点即调用API的请求地址,不同服务不同区域的终端节点不同,您可以从地区和终端节点中查询服务的终端节点。 数据库和应用迁移 UGO API当前支持的Region如表1所示,请您根据业务需要选择对应区域的终端节点。 表1 数据库和应用迁移 UGO API当前支持的Region 区域名称 区域 终端节点(Endpoint) 协议类型 华南-广州 cn-south-1 ugo.cn-south-1.myhuaweicloud.com HTTPS 父主题: 使用前必读
  • 概述 数据库和应用迁移 UGO(Database and Application Migration UGO,以下简称为UGO)是专注于异构数据库结构迁移的专业服务。可将数据库中的DDL一键自动转换为华为云 GaussDB /RDS的SQL语法,通过数据库评估、结构迁移两大核心功能和自动化语法转换,提前识别可能存在的改造工作、提高转化率、最大化降低用户数据库迁移成本。 您可以使用本文档提供的API对UGO进行相关操作。支持的全部操作请参见API接口概览。 在调用UGO API之前,请确保已经充分了解UGO相关概念。 父主题: 使用前必读
  • 资源规划 类别 子类 规划 备注 VPC VPC名称 vpc-src-172 自定义,易理解可识别。 所属Region 测试Region 现网实际选择时建议选择和自己业务区最近的Region,减少网络时延。 可用区 可用区3 - 子网网段 172.16.0.0/16 子网选择时建议预留足够的网络资源。 子网名称 subnet-src-172 自定义,易理解可识别。 本地Oracle数据库 名称 orcl 自定义,易理解可识别。 规格 16vCPUs | 32GB - 数据库版本 11.2.0.1 - 数据库用户 ugo 可以自定义用户,但是迁移时最小权限为:CONNECT、SELECT_CATA LOG _ROLE、ANY DICTIONARY GaussDB 实例名 Auto-ugo-gaussdbv5-tar-1 自定义,易理解可识别。 数据库版本 GaussDB 分布式版 V2.0-8.100 企业版 - 实例类型 分布式版,1CN,3DN,3副本 本示例中为分布式实例。 存储类型 超高IO - 可用区 可用区3 本示例中选择了单可用区,实际建议选择多可用区,以提高实例的高可用性。 规格 通用型 2 vCPUs | 16GB 本示例中为测试实例,选择较小的测试规格,实际选择规格以业务诉求为准。 目标库名称 ugo 自定义,易理解可识别,但是需要确保兼容模式为Oracle模式。 UGO迁移任务 数据库评估任务名 Oracle-GaussDB 自定义。 对象迁移 Oracle-GaussDB 自定义。 源数据库引擎 Oracle - 目标数据库引擎 GaussDB 分布式版 V2.0-8.100 企业版 - 网络类型 公网 本示例中采用公网网络。 父主题: Oracle结构迁移到GaussDB
  • 权限准备 创建评估项目,需要对源库进行预检查,Oracle为源库时预检查项如表1所示。 表1 预检查项 预检查权限 检查含义 是否必须通过 DBMS_METADATA权限 检查用户是否具有从 Oracle 数据库字典中检索元数据的权限,该权限用来获取 Schema 对象 的DDL。 赋予 DBA 权限即可,赋权语句如下: 创建用户。 CREATE USER user IDENTIFIED BY password; 授予用户登录权限。 GRANT CONNECT TO user; 授予用户DBA权限。 GRANT DBA TO user; 必须 动态视图权限 检查用户对各种动态性能视图的访问权限,该权限用来获取数据库基础信息。 赋予 DBA 权限即可。 必须 Schema 对象数量检查 检查该用户是否有 Schema 对象需要评估。至少需要一个对象需要评估。 必须 DBA权限 检查用户是否有 DBA(数据库管理员)的权限,才能进行后续操作。 非必须 若为“警告”,评估项目仍能创建成功,但可能由于权限不足导致部分对象无法采集。 目标数据库连接用户需要具有创建/删除/更改 Schema、表、程序、索引、用户、函数、视图等其他迁移对象的权限。 用户需拥有创建 UGO 评估项目的对应权限。具体权限,可参见权限管理进行设置。
  • 场景描述 数据库和应用迁移 UGO(Database and Application Migration UGO,以下简称为UGO)支持将本地Oracle数据库的结构迁移至华为云云数据库 GaussDB 实例。通过 UGO 评估任务与迁移任务,帮助用户提前识别迁移适配点,提升迁移效率,最大化降低用户的数据库迁移成本。 本实践案例主要介绍了通过 UGO 将本地 Oracle-11g 数据库结构迁移至华为云云数据库 GaussDB 分布式版 V2.0-8.100 企业版的流程。当前仅支持使用公网网络进行连接。 图1 公网网络+SSL安全连接
  • 规则约束 所有涉及update、delete的规则项,均不支持多表操作审核。 update、delete多表操作仅支持规则项:“不应用单条update、delete语句对多个表实现更新、删除操作”。 对于“在PL/pgSQL中,关键字建议大写,非关键字小写”、“sql语句中,关键字建议大写,非关键字小写”规则项,不要在以对象名作为非保留关键字的语句中使用,存在审核不准确情况,比如:SELECT ID FROM name,name是非保留关键字。 对于规则“对分区表执行交换分区、合并分区、分隔分区、清空分区、删除分区时,必须同步更新全局索引”,在用户修改数据库系统参数enable_gpi_auto_update后,该规则可能失效,请在数据库侧清理session,可登录到数据库中执行: CLEAN CONNECTION TO ALL FORCE FOR DATABASE db_name; “查询系统视图时,如果使用对象名作为筛选条件,对象名应使用小写”支持的系统视图参见表2。 “谨慎删除数据库对象及清理数据”,其中阈值中支持审核SQL语法见表表3 表2 视图审核 视图名 所属 Schema 表示对象名的列 adm_arguments pg_catalog、sys owner、object_name、package_name、argument_name adm_audit_object pg_catalog、sys username、owner、obj_name、action_name adm_audit_session pg_catalog、sys username、action_name adm_audit_statement pg_catalog、sys username、obj_name、action_name adm_col_comments pg_catalog、sys owner、table_name、column_name、schema adm_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege adm_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name adm_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name adm_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name adm_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name adm_objects pg_catalog、sys owner、object_name、subobject_name adm_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename adm_role_privs pg_catalog、sys grantee、granted_role adm_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema adm_roles pg_catalog、sys role adm_source pg_catalog、sys owner、name adm_sys_privs pg_catalog、sys grantee、privilege adm_tab_cols pg_catalog、sys owner、table_name、column_name、data_type_owner、schema、qualified_col_name adm_tab_privs pg_catalog、sys grantee、owner、table_name、grantor、privilege adm_tables pg_catalog、sys owner、table_name、tablespace_name adm_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema adm_tab_comments pg_catalog、sys owner、table_name、column_name、schema adm_tab_statistics pg_catalog、sys owner、table_name adm_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name adm_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name adm_types pg_catalog、sys owner、type_name adm_users pg_catalog、sys username、default_tablespace、temporary_tablespace、default_collation adm_views pg_catalog、sys owner、view_name db_all_tables pg_catalog、sys owner、table_name、tablespace_name db_arguments pg_catalog、sys owner、object_name、package_name、argument_name db_col_comments pg_catalog、sys owner、table_name、column_name、schema db_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege db_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name db_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name db_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name db_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name db_objects pg_catalog、sys owner、object_name、subobject_name db_procedures pg_catalog、sys owner、object_name db_tab_col_statistics pg_catalog、sys owner、table_name、column_name、schema db_source pg_catalog、sys owner、name db_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema db_tab_comments pg_catalog、sys owner、table_name、schema db_tables pg_catalog、sys owner、table_name、tablespace_name db_triggers pg_catalog、sys trigger_name、table_owner、table_name db_types pg_catalog、sys owner、type_name db_users pg_catalog、sys username db_views pg_catalog、sys owner、view_name dict pg_catalog、sys table_name dictionary pg_catalog、sys table_name my_col_comments pg_catalog、sys owner、table_name、column_name、schema my_col_privs pg_catalog、sys grantor、owner、grantee、table_schema、table_name、column_name、privilege my_coll_types pg_catalog、sys owner、type_name、elem_type_mod、elem_type_owner、elem_type_name my_constraints pg_catalog、sys owner、constraint_name、table_name、index_owner、index_name my_indexes pg_catalog、sys owner、index_name、table_name、table_owner、tablespace_name my_ind_columns pg_catalog、sys index_owner、index_name、table_name、table_owner、column_name my_objects pg_catalog、sys object_name、subobject_name my_procedures pg_catalog、sys owner、object_name、procedure_name、impltypeowner、impltypename my_role_privs pg_catalog、sys grantee、granted_role my_tab_col_statistics pg_catalog、sys table_name、column_name、schema my_source pg_catalog、sys owner、name my_tab_columns pg_catalog、sys owner、table_name、column_name、data_type_owner、schema my_tab_comments pg_catalog、sys owner、table_name、column_name、schema my_tab_statistics pg_catalog、sys table_name my_tables pg_catalog、sys owner、table_name、tablespace_name my_triggers pg_catalog、sys owner、trigger_name、table_owner、table_name my_type_attrs pg_catalog、sys type_name、attr_name、attr_type_name、character_set_name my_types pg_catalog、sys type_name my_views pg_catalog、sys owner、view_name pg_indexes pg_catalog、sys schemaname、tablename、indexname、tablespace pg_roles pg_catalog、sys rolename pg_tables pg_catalog、sys schemaname、tablename、tableowner、tablespace、tablecreator pg_user pg_catalog、sys username、nodegroup pg_views pg_catalog、sys schemaname、viewname、viewowner column_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name、column_name columns information_schema、sys table_catalog、table_schema、table_name、column_name constraint_column_usage information_schema、sys table_catalog、table_schema、table_name、column_name、constraint_catalog、constraint_schema、constraint_name constraint_table_usage information_schema、sys table_catalog、table_schema、table_name、constraint_catalog、constraint_schema、constraint_name enabled_roles information_schema、sys role_name schemata information_schema、sys catalog_name、schema_name、schema_owner、default_character_set_catalog、default_character_set_schema、default_character_set_name table_constraints information_schema、sys constraint_catalog、constraint_schema、constraint_name、table_catalog、table_schema、table_name table_privileges information_schema、sys grantor、grantee、table_catalog、table_schema、table_name tables information_schema、sys table_catalog、table_schema、table_name、self_referencing_column_name、user_defined_type_catalog、user_defined_type_schema、user_defined_type_name triggers information_schema、sys trigger_catalog、trigger_schema、trigger_name、event_object_catalog、event_object_schema、event_object_table、action_reference_old_table、action_reference_new_table usage_privileges information_schema、sys grantor、grantee、object_catalog、object_schema、object_name views information_schema、sys table_catalog、table_schema、table_name 表3 支持审核的SQL语法 DDL类型 SQL语法 DROP DROP TABLE, DROP TABLESPACE, DROP AGGREGATE, DROP AUDIT POLICY, DROP CAST, DROP DATABASE, DROP DATA SOURCE, DROP DIRECTORY, DROP EVENT, DROP FOREIGN TABLE, DROP GLOBAL CONFIGURATION, DROP GROUP, DROP MASKING POLICY, DROP MATERIALIZED VIEW, DROP MODEL, DROP OPERATOR, DROP OWNED, DROP PACKAGE, DROP PACKAGE BODY, DROP PROCEDURE, DROP RESOURCE LABEL, DROP RESOURCE POOL, DROP ROLE, DROP ROW LEVEL SECURITY POLICY, DROP RULE, DROP PUBLICATION, DROP SCHEMA, DROP SEQUENCE, DROP FUNCTION, DROP SERVER, DROP SUBSCRIPTION, DROP SYNONYM, DROP TEXT SEARCH CONFIGURATION, DROP TEXT SEARCH DICTIONARY, DROP TRIGGER, DROP TYPE, DROP USER, DROP USER MAPPING, DROP VIEW, DROP WEAK PASSWORD DICTIONARY ALTER ALTER DROP PARTITION, ALTER TRUNCATE PARTITION, ALTER DROP COLUMN, ALTER DROP CONSTRAINT, ALTER DROP FOREIGN TABLE, ALTER DROP AUDIT POLICY, ALTER DROP MASKING POLICY, ALTER DROP SERVER, ALTER DROP TEXT SEARCH CONFIGURATION, ALTER DROP USER MAPPING, ALTER DROP DATA SOURCE TRUNCATE TRUNCATE
  • 约束限制 规则的嵌套审核仅支持四种语法,详情可参见表1。 推荐索引功能仅支持GaussDB。 With as只支持SELECT语句。 别名不能和实体表重名,且别名之间不能重名。 不支持审核视图中的表审核。 不支持审核数据库系统表及系统视图审核。 不支持审核含有“#”的MySQL语句。 表1 支持的嵌套审核语句 序号 SQL语句 1 select id, (select 子查询) as name from table; 2 select id from table where id in (select 子查询); 3 select * from table1,(select 子查询); 4 with e as (select 子查询) select * from e;
  • 前提条件 用户需拥有创建UGO迁移项目的对应权限。具体权限,可参见权限管理进行设置。 创建迁移项目至少需要一个状态显示为“完成 创建迁移项目”的数据库评估项目。 待使用的目标数据库类型及版本信息要与评估项目确认的目标库类型及版本一致。 待连接的目标库正常,无欠费、停机等情况。 确保提供的目标数据库可正常访问,且连接用户需要具有对于Schema、表、程序、索引、用户、函数、视图等迁移对象的创建、删除和更改的权限。
  • 约束限制 审核对象仅支持:Table、View、Sequence、Index、Function、Procedure、Trigger、Package。 一次审核Schema的数量不超过10000。 审核数据库过程中,避免对正在审核的数据库对象进行删除等操作,影响审核结果。 如果使用系统模板进行审核时,新版本升级结束后,再次重试或者同数据源审核,会导致审核结果不一致。为避免此现象发生,建议使用自定义模板。
  • 约束限制 规则的嵌套审核仅支持四种语法,详情可参见表1。 别名不能和实体表重名,且别名之间不能重名。 不支持审核视图中的表。 不支持审核数据库系统表及系统视图。 不支持审核含有“#”的MySQL语句。 文件审核中和审核完成后,将无法“重试”该任务。 如果使用系统模板进行审核时,新版本升级结束后,再次重试或者同文件审核,会导致审核结果不一致。为避免此现象发生,建议使用自定义模板。 SQL审核最大可以创建110个审核任务,最多支持10个审核任务并发执行。
  • 网络准备 若使用公网连接源数据库,需确保源数据库的安全策略开放 UGO 服务的访问,并在访问白名单中对 UGO 服务放行。各类型数据库添加白名单的方法不同,具体方法请参考各数据库官方文档进行操作。 源数据库设置的最大连接数限制,各类型数据库最大连接数控制的参数和修改方法不同,具体方法请参考各数据库官方文档进行操作。 检查数据库连接信息是否正确,包括提供的 IP 地址、数据库服务名称、用户名、密码等信息。
  • 接口示例 请求示例 示例1 POST /rest/httpsessions/callnotify/v2.0 HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "displayNbr":"+86186****5611", "calleeNbr":"+8675581****01", "playInfoList":[{"notifyVoice":"welcome.wav"},{"notifyVoice":"welcome.wav","collectInd":4}], "statusUrl":"****", "feeUrl":"****", "userData":"testUserData" } 示例2 语音通话平台上设置的模板ID=test_template,模板内容为“您有${NUM_2}件快递请到${TXT_32}领取”。 下面的API将播放文本“您有3件快递请到人民公园正门领取”。 POST /rest/httpsessions/callnotify/v2.0?app_key=z4Sdu8p7nml5Wd790aENW64oV5Fp HTTP/1.1 content-type: application/json;charset=UTF-8 authorization: AKSK realm="SDP",profile="UsernameToken",type="Appkey" x-aksk: UsernameToken Username="ZRBRz4bAXoFgEH7o4Ew308eXc1RA",PasswordDigest="****",Nonce="ac1c911c4792492687f8f6b2264a491e",Created="2018-05-26T00:35:30Z" content-length:xx { "displayNbr":"+86186****5611", "calleeNbr":"+8675581****01", "playInfoList":[{"templateId":"test_template", "templateParas":["3","人民公园正门"],"collectInd":5}], "statusUrl":"****", "feeUrl":"****", "userData":"testUserData" } 响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 { "resultcode":"0", "resultdesc":"Success", "sessionId":"1200_366_0_20161228102743@callenabler.home1.com" }
  • 结果码 请根据以下结果码进行调测,如果有疑问,可联系管理员进行确认。 表8 结果码说明 响应码 结果码 英文描述 中文描述 处理方法 200 0 Success. 成功。 无需处理。 400 1023006 Authorization not contained in the HTTP header. Authentication fails. Check whether the authentication request is correct. 鉴权失败,请检查鉴权请求正确性。 请检查消息头中是否携带了Authorization,PasswordDigest字段填写是否正确,携带的app_key填写是否正确,且生成随机数的时间与发送请求时的本地时间不能相差太大。 请检查账户余额是否充足,若不足请充值后再次尝试。如何给账户充值 1023007 realm not contained in Authorization. Authorization字段中未找到realm属性。 请检查Authorization字段中的是否携带了realm属性。 1023008 profile not contained in Authorization. Authorization字段中未找到profile属性。 请检查Authorization字段中的是否携带了profile属性。 1023009 The value of realm in Authorization must be SDP. Authorization中realm属性值应该为“SDP”。 请检查Authorization字段中的realm属性值是否为“SDP”。 1023010 The value of profile in Authorization must be UsernameToken. Authorization中profile属性值应该为“UsernameToken”。 请检查Authorization字段中的profile属性值是否为“UsernameToken”。 1023011 The value of type in Authorization must be app_key. Authorization中type属性值应该为“Appkey”。 请检查Authorization字段中的type属性值是否为“Appkey”。 1023012 type not contained in Authorization. Authorization字段中未找到type属性。 请检查Authorization字段中是否携带了type属性。 1023033 HTTP header not found X-AKSK field. HTTP头未找到X-AKSK字段。 请检查HTTP消息头中是否携带了X-AKSK字段。 1023034 UserName not contained in X-AKSK. X-AKSK字段中未找到UserName属性。 请检查X-AKSK字段中的是否携带了Username属性。 1023035 Nonce not contained in X-AKSK. X-AKSK字段中未找到Nonce属性。 请检查X-AKSK字段中的是否携带了Nonce属性。 1023036 Created not contained in X-AKSK. X-AKSK字段中未找到Created属性。 请检查X-AKSK字段中的是否携带了Created属性。 1023037 PasswordDigest not contained in X-AKSK. X-AKSK字段中未找到PasswordDigest属性。 请检查X-AKSK字段中的是否携带了PasswordDigest属性。 1023038 UsernameToken not contained in X-AKSK. X-AKSK中没有携带UsernameToken。 请检查X-AKSK字段中的是否携带了UsernameToken属性。 401 1010010 Invalid digest. PasswordDigest校验失败。 请检查PasswordDigest字段填写是否正确。 1010013 Time out limit. 时间超出限制。 请确认X-AKSK鉴权时,生成随机数的时间与发送请求时的本地时间不能相差太大(具体差值请与管理员确认) 403 1010002 Invalid request. 非法请求。 检查请求携带的参数格式是否都合法。 1010003 Invalid app_key. 无效的app_key。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010006 Invalid Rest API. 无效的Rest API。 检查请求方法填写是否正确。 1010008 The status of the app_key is unavailable. app_key被暂停使用。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010009 No more APIs can be invoked. API达到调用上限。 请稍等一分钟后再试,并联系管理员申请更高的应用使用配额。 1010010 The flow control upper limit is reached on the platform. 平台达到系统流控上限。 请稍等一分钟后再试。 1010011 The app is not allowed to access a commercial address. APP没有访问商用地址的权限。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010021 Application unavailable. 应用不可用。 请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1010023 Invalid display number. 号码填写不合法。 检查displayNbr和displayCalleeNbr参数的填写是否合法,与号码管理页面的“固话号码”保持一致。若合法,请确认该号码是否已申请并下发。申请号码在号码订购页面申请,号码下发后可在号码管理页面查看。 1010024 Invalid caller number. 主叫号码不合法。 检查callerNbr参数的填写是否合法。 1010040 The app_key is not allowed to invoke the API. app_key没有调用本API的权限。 请联系管理员确认该app_key对应的应用是否具有语音通知能力。 1012001 Resource of number is not to be applied. 资源未申请。 app_key和业务号码未绑定。 1012005 %s of templateParas does not meet template requirements. 参数templateParas中的%s不符合模板定义的要求。 请检查templateParas携带的变量值格式与长度是否符合templateId对应的模板内容中变量的定义。 1012006 The service number is not applied. 业务号码未申请。 请确认是否申请业务号码。 1012012 Application does not open recording function. 应用未开启录音功能。 请在应用管理页面确认请求携带的app_key是否开启了录音功能。 1013001 Calls exceed the SP limit. 请求次数超过SP配置上限。 请和管理员确认开发者呼叫数量限制。 1013002 Calls exceed the APP limit. 请求次数超过应用配置上限。 请和管理员确认应用呼叫数量限制。 1013003 Calls exceed the display number limit. SP的主显号码受限。 请和管理员确认显示号码呼叫数量限制。 1013004 Callee in blacklist. 被叫用户是黑名单。 被叫号码在运营商黑名单库。 1013010 Caller in blacklist. 主叫用户是黑名单。 主叫号码在运营商黑名单库。 1013011 Callee is not on the whitelist. 被叫用户不在白名单中。 请和管理员确认被叫号码白名单限制。 1013100 Common error code . 未知错误。 请和管理员确认安全管控限制。 1013101 Abnormal call restricted . 呼叫行为异常。 请和管理员确认安全管控限制。 1013111 International callin is forbidden. 国际呼入限制。 请检查请求的号码格式是否为国际号码格式。 1013112 International callout is forbidden. 国际呼出限制。 请检查请求的号码格式是否为国际号码格式。 1013113 Abnormal call duration restricted. 通话时间异常。 请检查请求的号码是否通话时间异常。 1013115 Abnormal call completion rate restricted. 呼叫接通率异常。 请检查请求的号码是否呼叫接通率异常。 1013116 Caller call frequency restricted. 主叫呼叫频次限制。 请检查主叫号码是否有呼叫频次限制。 1013117 Callee call frequency restricted. 被叫呼叫频次限制。 请检查被叫号码是否有呼叫频次限制。 1013118 Service number call frequency restricted. 业务号码呼叫频次限制。 请检查业务号码是否有呼叫频次限制。 1013119 Service number suspend. 业务号码被暂停。 请和管理员确认号码状态。 1013120 Ip address is null. IPv4地址未携带。 请客户接口携带请求发送方IPv4地址。 1013121 Call black time forbidden. 呼叫时段限制。 呼叫时段为休息时段,请工作时段再呼叫。 1013122 Sub enterprise is suspended. 子企业已被暂停。 查看是否因投诉被下线,可查看订购号码时填写的邮箱是否有业务下线通知邮件。 1020165 The number of app_key voice call ports exceeds the upper limit. 超出语音呼叫端口数限制。 请稍等一分钟后再试。建议联系管理员为该应用申请更多的端口配额。 1020166 The app client ip is not in ip white list. 请求发送方app IP不在白名单列表中。 运营商IP地域管控,此地区无法呼通。 1020168 The call is rejected because the login IP of the peer app is blacklisted . 请求发送方app登录IP是黑名单。 运营商IP地域管控,此地区无法呼通。 1020171 The call is rejected because the login IP of the peer app is blacklisted area. 请求发送方app登录IP在受限地域。 运营商IP地域管控,此地区无法呼通。 1020176 Authentication failed, try again later 鉴权失败,稍后重试。 IP因鉴权失败次数过多导致被拉黑,请30分钟后重试,或联系管理员放通该IP。 500 1010001 Internal system error. 系统错误。 请联系管理员处理。 1020001 Parameter error. 参数错误。 检查请求携带的参数格式是否都合法。 1020002 Internal error. 内部错误。 请联系管理员处理。 1020150 The app_key is invalid. app_key无效。 检查请求携带的app_key是否填写正确,app_key从应用管理页面获取,若填写正确,请在应用管理页面检查请求携带的app_key所属应用状态是否正常。 1020151 The bindNum is invalid. 业务号码无效。 业务号码无效,请联系管理员处理。 1020154 Insufficient voice ports. 语音端口不足。 请稍等一分钟后再试,并联系管理员申请扩容语音端口。 1023001 Internal error. 内部错误。 请联系管理员处理。 1023002 Response timeout. 响应超时。 重新发送一次请求。
  • 响应参数 表7 响应消息参数说明 参数名称 是否必选 参数类型 默认值 说明 resultcode 是 String(1-32) 无 请求返回的结果码。 resultdesc 是 String(1-128) 无 请求返回的结果描述。 sessionId 是 String(1-256) 无 请求返回的会话sessionId,如果请求失败,则sessionId为空。 idlePort 否 Integer 无 请求参数中returnIdlePort为true时响应消息携带该参数。 该参数表示平台呼叫端口空闲可用数量,取值范围0~65535。
  • 接口功能 语音通知是SP将被叫号码和语音通知文件名(语音文件需要提前通过放音文件管理页面上传)或语音通知文本(通过语音模板管理页面提交)发送给业务平台,由业务平台呼叫被叫,被叫接听后业务平台向被叫播放语音,并进行收号。SP可以要求业务平台播放多段语音,每段语音的内容都可以是下列两种语音中的一种: 语音文件中录制的语音。 文本(需要先通过模板定义)通过 TTS 服务转换成的语音。 业务体验描述: SP想要给用户A通知一段或多段语音。 SP向语音通话平台发送播放语音通知业务请求。 语音通话平台呼叫用户A的号码。 用户A接听。 语音通话平台向用户A播放语音。
  • 请求参数 表2 请求URL参数说明 参数名称 是否必选 参数类型 默认值 说明 version 是 String(枚举) 无 版本,取值为v2.0。 表3 请求Headers参数说明 参数名称 是否必选 参数类型 说明 Content-Type 是 String 固定填写为application/json;charset=UTF-8。 Authorization 是 String 固定填写为AKSK realm="SDP",profile="UsernameToken",type="Appkey"。 X-AKSK 是 String 取值为UsernameToken Username="APP_Key的值", PasswordDigest="PasswordDigest的值", Nonce="随机数", Created="随机数生成时间"。 PasswordDigest:根据PasswordDigest = Base64 (HMAC-SHA256 (Password,Nonce + Created))生成。其中,Password为APP_Secret的值。Nonce、Created、Password直接进行字符串拼接即可,无需包含+号和空格。 Nonce:客户发送请求时生成的一个随机数,长度为1~128位,可包含数字和大小写字母。例如:66C92B11FF8A425FB8D4CCFE0ED9ED1F。 Created:随机数生成时间。采用UTC+8(北京时间)格式,例如:2018-02-12T15:30:20Z。不同编程语言中将UTC时间戳转换为普通时间时使用的格式不同,部分语言可参考表4。 表4 不同编程语言的时间格式 编程语言 时间格式 Java yyyy-MM-dd'T'HH:mm:ss'Z' PHP Y-m-d\TH:i:s\Z Python %Y-%m-%dT%H:%M:%SZ C# yyyy-MM-ddTHH:mm:ssZ Node.js toISOString().replace(/.[0-9]+\Z/, 'Z') 注:Node.js中,使用toISOString()转换后的时间格式去除毫秒后即为本接口要求的时间格式。 表5 请求Body参数说明 参数名称 是否必选 参数类型 默认值 说明 displayNbr 是 String(4-31) 无 固话号码,被叫终端上显示的主叫号码,需要提前在订购号码页面申请该号码。 号码格式(固话):国家码+区号+固话,与号码管理页面的“固话号码”保持一致。 若该号码为“暂停”状态,语音通话平台会从该应用下随机选取一个其他可用的固话号码进行外呼。 calleeNbr 是 String(4-31) 无 被叫号码。 手机号码格式:+{国家码}{手机号码}。示例:+86134****2222。 固话格式:+{国家码}{区号}{固话号码},其中区号需去掉首位的0。示例:国家码86,区号0755,固话号码28****01,填写为+8675528****01。 playInfoList 是 PlayContentInfo[1-5] 无 播放信息列表,最大支持5个,每个播放信息携带的参数都可以不相同。 statusUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此字段用于设置SP接收状态上报的URL。 语音通话平台将业务触发过程中通话的状态信息(包括呼出、振铃、摘机和挂机信息)推送至此服务器,SP根据通话状态信息确定用户状态。 URL可填写为https://IP:Port或域名,推荐使用域名。且该域名对应多个服务器,避免单点故障无法接收通知。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。 feeUrl 否 String(1-128) 无 此参数请采用BASE64编码进行加密。 此参数用于设置SP接收话单上报的URL。 语音通话平台将业务产生的话单推送至此服务器。 URL可填写为https://IP:Port或域名,推荐使用域名。且该域名对应多个服务器,避免单点故障无法接收话单。 URL只能由大小写字母(a-z、A-Z),数字(0-9),中划线(-),英文冒号(:),英文点号(.),以及英文斜杠(/)组成,不支持其它字符。 returnIdlePort 否 String(枚举) false 指示是否需要返回平台的空闲端口数量。 true:需要返回 false:不需要返回 如果不携带该参数,系统默认该参数为false。 userData 否 String(1-256) 无 用户附属信息,此标识由第三方服务器定义,会在后续的通知消息中携带此信息。 不允许携带以下字符:“{”,“}”(即大括号)。 不允许包含中文字符,如果包含中文字符请采用Base64编码。 表6 PlayContentInfo定义 参数名称 是否必选 参数类型 默认值 说明 notifyVoice 否 String(1-128) 无 通知语音的放音文件名。需要先通过放音文件管理页面上传放音文件并通过审核才能使用。 当前系统只支持Wave格式的音频文件,文件如“notifyvoice.wav”。 该参数和templateId是二选一的关系,即两个参数必须携带其中一个。 templateId 否 String(1-32) 无 语音通知模板ID,用于唯一标识语音通知模板。语音通知模板为TTS文本的模板,需要先通过语音模板管理页面提交模板并通过审核才能使用,并获取对应的模板ID。 该参数和notifyVoice是二选一的关系。需要与templateParas参数配合使用。 templateParas 否 String(1-32)[1-10] 无 语音通知模板的变量值列表,用于依次填充templateId参数指定的模板内容中的变量。 该参数需填写为JSONArray格式。具体可参考变量规则。 参数内容必须是“UTF-8”编码,不能包含以下3个字符:“$”,“{”,“}”。 当接口中携带“templateId”参数时,必须携带此参数,若未携带此参数系统将返回“非法请求”错误。 列表中变量值的个数及长度必须和templateId对应模板内容中定义的变量个数及长度保持一致;例如templateId对应的模板内容有2个变量且变量长度分别为5和6,则此处需要设置2个变量值且内容长度分别小于等于5和6。 如模板内容为“您有${NUM_2}件快递请到${TXT_32}领取”时,该参数可填写为["3","人民公园正门"]。 collectInd 否 Integer(0-32) 0 是否进行收号。若进行收号,请在语音通知内容播放完毕后的5秒之内进行按键操作,系统会将用户输入的号码通过语音通知呼叫状态通知API发送给SP。 取值范围: 0:不收号 1~32:收号,并且取值表示收号位长,最大支持32位。 若不携带该参数,则默认不收号。 replayAfterCollection 否 String(枚举) false 当collectInd字段设置为非0时此参数有效。 此字段用于设置是否在收号后重新播放notifyVoice、ttsContent或templateId指定的放音。 true:播放。 false:不播放。 默认值:false。 collectContentTriggerReplaying 否 String(1-32) 无 当replayAfterCollection字段设置为true时此参数有效。 此字段用于设置触发重新放音的收号内容。只有实际收号内容与该参数值一致时,才重新放音。例如:该参数设置为1,当用户根据收号语音提示按1,两者一致,则重复放音。
  • 查看冷热表数据分布 查看单表数据分布情况。 1 2 3 4 5 6 7 SELECT * FROM pg_catalog.pg_lifecycle_table_data_distribute('lifecycle_table'); schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize ------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+-------------------- public | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8 | | | 96 KB | 0 bytes | 0 bytes public | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8 | | | 96 KB | 0 bytes | 0 bytes public | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8 | | | 96 KB | 0 bytes | 0 bytes (3 rows) 查看所有冷热表数据分布情况。 1 2 3 4 5 6 7 SELECT * FROM pg_catalog.pg_lifecycle_node_data_distribute(); schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize ------------+-----------------+--------------+--------------+---------------+---------------------+-------------+--------------+-------------------- public | lifecycle_table | dn_6001_6002 | p1,p2,p3,p8 | | | 98304 | 0 | 0 public | lifecycle_table | dn_6003_6004 | p1,p2,p3,p8 | | | 98304 | 0 | 0 public | lifecycle_table | dn_6005_6006 | p1,p2,p3,p8 | | | 98304 | 0 | 0 (3 rows)
  • 场景介绍 海量大数据场景下,随着业务和数据量的不断增长,数据存储与消耗的资源也日益增长。根据业务系统中用户对不同时期数据的不同使用需求,对膨胀的数据进行“冷热”分级管理,不仅可以提高数据分析性能还能降低业务成本。针对数据使用的一些场景,可以将数据按照时间分为:热数据、冷数据。 冷热数据主要从数据访问频率、更新频率进行划分。 Hot(热数据):访问、更新频率较高,对访问的响应时间要求很高的数据。 Cold(冷数据):不允许更新或更新访问频率较低,对访问的响应时间要求不高的数据。 用户可以定义冷热管理表,将符合规则的冷数据切换至OBS上进行存储,可以按照分区自动进行冷热数据的判断和迁移。 图1 冷热数据管理 GaussDB(DWS)列存数据写入时,数据首先进入热分区进行存储,分区数据较多后,可通过手动或自动的方式,将符合冷数据规则的数据切换至OBS上进行存储。在数据切换至OBS上后,其元数据、Desc表信息以及索引信息仍在本地进行存储,保证了读取的性能。 冷热切换的策略名称支持LMT(last modify time)和HPN(hot partition number),LMT指按分区的最后更新时间切换,HPN指保留热分区的个数切换。 LMT:表示切换[day]时间前修改的热分区数据为冷分区,将该数据迁至OBS表空间中。其中[day]为整型,范围[0, 36500],单位为天。 如下图中,设置day为2,即在冷热切换时,根据分区数据的最晚修改时间,保留2日内所修改的分区为热分区,其余数据为冷分区数据。假设当前时间为4月30日,4月30日对[4-26]分区进行了delete操作,4月29日对[4-27]分区进行了insert操作,故在冷热切换时,保留[4-26][4-27][4-29][4-30]四个分区为热分区。 HPN:表示保留HPN个有数据的分区为热分区。分区顺序按照分区的Sequence ID来确定,分区的Sequence ID是根据分区边界值的大小,内置生成的序号,此序号不对外呈现。对于RANGE分区,分区的边界值越大,分区对应的Sequence ID越大;对于LIST分区,分区边界枚举值中的最大值越大,分区对应的Sequence ID越大。在冷热切换时,需要将数据迁移至OBS表空间中。其中HPN为整型,范围为[0,1600]。其中HPN为0时,表示不保留热分区,在进行冷热切换时,将所有有数据的分区都转为冷分区并存储在OBS上。 如下图中,设置HPN为3,即在冷热切换时,保留最新的3个有数据的分区为热分区数据,其余分区均切为冷分区。
  • 冷热数据切换 将热分区数据切换成冷分区数据。 自动切换:每日0点调度框架自动触发,无需关注切换情况。 可使用函数pg_obs_cold_refresh_time(table_name, time)自定义自动切换时间。例如,根据业务情况调整自动触发时间为每天早晨6点30分。 1 2 3 4 5 SELECT * FROM pg_obs_cold_refresh_time('lifecycle_table', '06:30:00'); pg_obs_cold_refresh_time -------------------------- SUC CES S (1 row) 手动切换。 使用ALTER TABLE语句手动切换单表: 1 2 ALTER TABLE lifecycle_table refresh storage; ALTER TABLE 使用函数pg_refresh_storage()批量切换所有冷热表: 1 2 3 4 5 SELECT pg_catalog.pg_refresh_storage(); pg_refresh_storage -------------------- (1,0) (1 row)
  • 约束限制 支持对冷热表的insert、copy、delete、update、select等表相关的DML操作。 支持对冷热表的权限管理等DCL操作。 支持对冷热表进行analyze、vacuum、merge into等操作和一些分区的操作。 支持从普通列存分区表升级为冷热数据表。 支持带有冷热数据管理表的升级、扩容、缩容和重分布。 8.3.0及以上版本支持冷热分区互相转换,8.3.0版本之前仅支持从热数据切换为冷数据。 对于同时存在冷热分区的表,查询时会变慢,因为冷数据存储在OBS上,读写速度和时延都比在本地查询要慢。 目前冷热表只支持列存2.0版本的分区表,外表不支持冷热分区。 只支持修改冷热表的冷热切换策略,不支持修改冷热表的冷数据的表空间。 冷热表的分区操作约束: 不支持对冷分区的数据进行exchange操作。 Merge partition分区只支持热分区和热分区合并、冷分区和冷分区合并,不支持冷热分区合并。 ADD/Merge/Split Partition等分区操作不支持指定表空间为OBS表空间。 不支持创建时指定和修改冷热表分区的表空间。 冷热切换不是只要满足条件就立刻进行冷热数据切换,依赖用户手动调用切换命令,或者通过调度器调用切换命令后才真正进行数据切换。目前自动调度时间为每日0点,可进行修改。 冷热数据表不支持物理细粒度备份和恢复,由于物理备份时只备份热数据,在备份恢复前后OBS上冷数据为同一份,不支持truncate和drop table等涉及删除文件操作语句的备份恢复操作。
  • 创建冷热表 创建列存冷热数据管理表lifecycle_table,指定热数据有效期LMT为100天。 1 2 3 4 5 6 7 8 9 CREATE TABLE lifecycle_table(i int, val text) WITH (ORIENTATION = COLUMN, storage_policy = 'LMT:100') PARTITION BY RANGE (i) ( PARTITION P1 VALUES LESS THAN(5), PARTITION P2 VALUES LESS THAN(10), PARTITION P3 VALUES LESS THAN(15), PARTITION P8 VALUES LESS THAN(MAXVALUE) ) ENABLE ROW MOVEMENT;
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全