华为云用户手册

  • 修订记录 发布日期 修改记录 2024-07-12 第四次正式发布。 优化如下章节: MSSI服务计费概述 MSSI服务计费模式概述 包年/包月 按需计费 计费项 2024-04-24 第三次正式发布。 优化如下章节: MSSI服务计费模式概述 计费项 新增退订服务及其子章节。 2024-03-13 第二次正式发布。 修改如下章节: 包年/包月 计费项 手动续费 2023-11-16 第一次正式发布。
  • 计费说明 MSSI服务根据购买的套餐包计费或按需计费。具体内容如表1所示。 如果您需要快速了解MSSI服务的具体价格,请参见MSSI价格详情。 APIG与Astro轻应用计费不在MSSI服务体现,需要单独去对应的服务订购。 公共连接器的计费,按第三方服务计费规则计费,MSSI侧不计费。 表1 MSSI计费项 计费项 计费项说明 适用的计费模式 计费公式 运行流实例 包括运行流实例数量及使用时长。 按需计费:支持 包年/包月:需要与其他计费项一起使用 按需计费:实例数量*实例单价 * 计费时长 包年/包月:详见套餐包价格 运行流实例单价及套餐包价格请参见MSSI价格详情。 模型数 包含表、视图、逻辑模型、资产元数据如连接器等。 按需计费:不支持 包年/包月:支持与其他计费项一起使用,也可单独计费 套餐包价格请参见MSSI价格详情。 采集任务 可以使用的采集任务的数量。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。 可运行页面数 包含屏幕模板数、屏幕数。布局模板不受限制。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。 卡片数 该套餐包中的卡片数。包含卡片模板数、卡片数。 按需计费:不支持 包年/包月:需要与其他计费项一起使用 套餐包价格请参见MSSI价格详情。
  • 计费示例 以包年/包月套餐包计费模式为例,假设您在2023/10/17 10:49:04购买了时长为1个月的套餐规格为40的自动化流专业版,并在到期前手动续费1个月,则: 第一个计费周期为:2023/10/17 10:49:04 ~ 2023/11/17 23:59:59 第二个计费周期为:2023/11/17 23:59:59 ~ 2023/12/17 23:59:59 您需要为每个计费周期预先付费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 自动化流专业版 套餐包单价 * 购买时长 请参见MSSI价格详情中的套餐包单价。 按需计费模式下,各计费项的计费示例请参见计费示例。
  • 计费示例 假设您在2023/10/18 10:58:00开启了一条流,然后在2023/10/18 11:05:05将其删除,则: 第一个计费周期为10:00:00 ~ 11:00:00,在10:58:00 ~ 10:00:00间产生费用,该计费周期内的计费时长为120秒。 第二个计费周期为11:00:00 ~ 12:00:00,在11:00:00 ~ 11:05:05间产生费用,该计费周期内的计费时长为305秒。 您需要为每个计费周期付费,计费公式如表2所示。 表2 计费公式 资源类型 计费公式 资源单价 流运行实例 实例数量*实例单价 * 计费时长 请参见MSSI价格详情中的流运行实例单价。
  • 资源和成本规划 该解决方案主要部署如下资源,每月花费如表1所示,具体请参考华为云官网价格详情,实际收费以账单为准: E CS 实例费用需根据实际的迁移服务器规格参考。详细请见 华为云Flexus云服务器X实例计费说明。 弹性公网 EIP 流量费用¥0.82/GB/小时,费用需根据实际使用情况。 迁移服务本身不收费,但在迁移中会产生少量其他服务费用(云硬盘费用及流量费用)。 主机迁移服务 在迁移过程中会在目的端服务器临时创建并挂载一个容量为40 GB的磁盘,用于辅助迁移。有关云硬盘的收费标准,请参见云硬盘价格说明。详细请见 计费说明。 表1 资源和成本规划 华为云服务 配置示例 每月花费 华为云Flexus云服务器X实例 区域:华北-北京四 计费模式:按需计费 规格:X86计算 | Flexus云服务器X实例 | 性能模式(关闭)| 1vCPUs | 1GiB 镜像:CentOS 7.6 64bit 系统盘:超高IO | 40GB 购买量:1 100.80元 弹性公网IP EIP 区域:华北-北京四 计费模式:按流量计费 线路:全动态BGP 带宽大小:10 Mbit/s 购买量:1 0.82/GB/小时 主机迁移 服务 SMS 主机迁移服务本身不收费,但是在迁移过程中会产生少量其他服务费用,本方案采用弹性公网EIP按流量收费。其他服务收费详细请见 计费说明。 创建虚拟机配置模板 区域:华北-北京四 虚拟机规格:(用户输入) / 合计 - 100.80元+0.82/GB/小时
  • 安全组规则修改(可选) 安全组实际是网络流量访问策略,包括网络流量入方向规则和出方向规则,通过这些规则为安全组内具有相同保护需求并且相互信任的云服务器、云容器、云数据库等实例提供安全保护。 如果您的实例关联的安全组策略无法满足使用需求,比如需要添加、修改、删除某个TCP端口,请参考以下内容进行修改。 添加安全组规则:根据业务使用需求需要开放某个TCP端口,请参考添加安全组规则添加入方向规则,打开指定的TCP端口。 修改安全组规则:安全组规则设置不当会造成严重的安全隐患。您可以参考修改安全组规则,来修改安全组中不合理的规则,保证云服务器等实例的网络安全。 删除安全组规则:当安全组规则入方向、出方向源地址/目的地址有变化时,或者不需要开放某个端口时,您可以参考删除安全组规则进行安全组规则删除。
  • 约束与限制 该解决方案部署前,需 注册华为账号 并开通华为云,完成实名认证,且账号不能处于欠费或冻结状态。 源端服务器的 OS 类型需要包含在Linux兼容性列表中。 源端服务器绑定的EIP需保证能正常访问外网。 主机迁移过程中不可以释放/修改弹性公网 EIP。这是由于源端迁移Agent会记录迁移开始时的目的端EIP,并在迁移和同步过程中通过该EIP进行数据传输。在迁移/同步过程中,释放/修改目的端EIP,会造成迁移/同步任务失败。在迁移正常完成后,并且确认后续不再进行数据同步,才可以释放/修改目的端EIP。 主机迁移服务在迁移过程中会在目的端服务器临时创建并挂载一个容量为40 GB的磁盘,用于辅助迁移,该磁盘会在迁移结束后自动删除。迁移期间,请勿对该磁盘进行删除操作或将计费模式转为包周期操作,否则会导致迁移失败。 使用现有安全组进行迁移服务时,必须开放22端口,否则会导致迁移失败。选择新创建安全组,迁移完成后,如需更改安全组,请参照安全组规则修改(可选)。 其它详细约束限制请参考 主机迁移服务 SMS 使用须知。
  • 快速部署 本章节主要指导用户如何自动化部署“Linux服务器迁移上云”解决方案。 表1 参数说明 参数名称 类型 是否可选 参数解释 默认值 template_name string 必填 模板名称,用于定义创建资源前缀,不支持重名。仅支持小写字母、数字、下划线(_)、中划线(-)、英文句号(.)。默认migrate-sms。 migrate-sms task_type string 必填 迁移任务类型,可用值是 MIGRATE_FILE(文件级迁移)和MIGRATE_BLOCK(块级迁移)。默认MIGRATE_FILE。 MIGRATE_FILE source_server_name string 必填 源端服务器名称,不允许重名。取值范围:1-64个字符组成,包括字母、数字、下划线 (_)、连字符 (-) 和点 (.) 空 target_vpc_name string 必填 目的服务器虚拟私有云名称,该模板新建VPC,命名方式为{target_vpc_name}_vpc,不允许重名。取值范围:1-60个字符,支持数字、字母、中文、_(下划线)、-(中划线)、.(点) 空 target_vpc_id string 必填 目的服务器的虚拟私有云ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的VPC。默认autoCreate。 autoCreate target_subnet_id string 必填 目的服务器的子网ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的子网。默认autoCreate。 autoCreate target_security_group_id string 必填 目的服务器的安全组ID,如果省略或设置为autoCreate,迁移过程中将自动创建一个新的安全组。默认autoCreate。 autoCreate target_volume_type string 必填 目的服务器的磁盘类型,需要与系统所提供的磁盘类型相匹配。目前支持“SSD”,“GPSSD”和“SAS”三种。默认SSD SSD target_flavor string 必填 目的服务器规格,其他规格请参考官网弹性云服务器规格清单。 x1.1u.1g target_server_name string 必填 目的服务器名称,不允许重名。取值范围:1-64个字符组成,包括字母、数字、下划线 (_)、连字符 (-) 和点 (.)。默认Test_target_server。 Test_target_server target_server_syncing bool 必填 指定是否在第一次复制后执行连续同步。默认值为false。 false target_vpc_cidr string 必填 子网的网段,取值范围:必须在vpc对应cidr范围内,约束:必须是cidr格式。掩码长度不能大于28。默认192.168.0.0/16。 192.168.0.0/16 use_public_ip bool 必填 指定是否使用公共 IP 地址进行迁移。默认值为true。 true bandwidth_size number 必填 用于迁移的公共 IP 地址的带宽大小,取值范围:1-300 Mbit/s,默认10Mbit/s。 10 登录华为云解决方案实践,选择“Linux服务器迁移上云”。数据中心下拉菜单可以选择需要部署的区域,单击“一键部署”,跳转至解决方案创建堆栈界面。 图1 解决方案实施库 在选择模板界面中,单击“下一步”。 图2 选择模板 在配置参数界面中,自定义填写堆栈名称,参考表1完成自定义参数填写,单击“下一步”。 图3 参数配置 在资源栈设置页面中,权限委托选择“rf_admin_trust”,单击“下一步”。 图4 资源栈设置 在配置确认页面中,单击“创建执行计划”。 图5 配置确认 单击“创建执行计划”,根据提示输入执行计划名称等,单击“确定”。 图6 创建执行计划 图7 执行计划创建成功 单击“部署”,弹出执行计划提示信息,单击“执行”确认执行。 图8 执行计划确认 等待解决方案自动部署。部署成功后,单击“事件”,回显结果如下: 图9 资源创建成功 图10 执行计划完成 父主题: 实施步骤
  • 名词解释 基本概念、云服务简介、专有名词解释 弹性云服务器 ECS:是一种云上可随时自助获取、可弹性伸缩的计算服务,可帮助您打造安全、可靠、灵活、高效的应用环境。 虚拟私有云 VPC:是用户在华为云上申请的隔离的、私密的虚拟网络环境。用户可以基于VPC构建独立的云上网络空间,配合弹性公网IP、云连接、云专线等服务实现与Internet、云内私网、跨云私网互通,帮您打造可靠、稳定、高效的专属云上网络。 弹性公网 IP:提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务。可以与弹性云服务器、裸金属服务器、虚拟IP、弹性负载均衡、NAT网关等资源灵活地绑定及解绑,提供访问公网和被公网访问能力。 主机迁移服务 SMS:主机迁移服务(Server Migration Service)是一种P2V/V2V迁移服务,可以帮您把X86物理服务器,或者私有云、公有云平台上的虚拟机迁移到华为云弹性云服务器(ECS),从而帮助您轻松地把服务器上应用和数据迁移到华为云。 华为云Flexus云服务器X实例:Flexus云服务器X实例是新一代面向中小企业和开发者打造的柔性算力云服务器。Flexus云服务器X实例功能接近ECS, 同时还具备独有特点,例如Flexus云服务器X实例具有更灵活的vCPU内存配比、支持热变配不中断业务变更规格、支持性能模式等。
  • 创建rf_amdin_trust委托 进入华为云官网,打开控制台管理界面,鼠标移动至个人账号处,打开“ 统一身份认证 ”菜单。 图2 控制台管理界面 图3 统一身份认证菜单 进入“委托”菜单,搜索“rf_admin_trust”委托。 图4 委托列表 如果委托存在,则不用执行接下来的创建委托的步骤 如果委托不存在时执行接下来的步骤创建委托 单击步骤2界面中的“创建委托”按钮,在委托名称中输入“rf_admin_trust”,委托类型选择“云服务”,输入“ RFS ”,单击“下一步”。 图5 创建委托 在搜索框中输入“Tenant Administrator”权限,并勾选搜索结果,单击“下一步”。 图6 选择策略 选择“所有资源”,并单击“下一步“完成配置。 图7 设置授权范围 “委托”列表中出现“rf_admin_trust”委托则创建成功。 图8 委托列表
  • proc_part_policy_pgjob_to_pgtask() 该函数仅在时序表从8.1.1升级到8.1.3版本时使用,函数用于迁移本数据库所有8.1.1版本时序表的分区管理任务。本函数将遍历本数据库中所有时序表,并检查时序表的分区管理任务是否迁移,如果没有迁移,则调用ts_table_part_policy_pgjob_to_pgtask函数,迁移该时序表的分区管理任务。如果中途出现迁移失败,则整体回滚。 示例: CALL proc_part_policy_pgjob_to_pgtask(); NOTICE: find table, name is cpu1, namespace is public. WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_drop_partition('public.cpu1', interval '7 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_add_partition('public.cpu1', interval '1 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement NOTICE: find table, name is cpu2, namespace is public. WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_add_partition('public.cpu2', interval '1 d'); , the job interval is interval '1 day'. CONTEXT: SQL statement "call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu2');" PL/pgSQL function proc_part_policy_pgjob_to_pgtask() line 17 at EXECUTE statement proc_part_policy_pgjob_to_pgtask -------------------------------------- (1 row)
  • print_sql_part_policy_pgjob_to_pgtask() 该函数仅在时序表从8.1.1升级到8.1.3版本时使用,该函数用于打印SQL语句,每条语句可用于迁移单个8.1.1版本时序表的分区管理任务。由于proc_part_policy_pgjob_to_pgtask函数的迁移粒度是数据库级别,因此引入本函数,使用者可以手动执行本函数的打印内容,以实现单个时序表的迁移粒度。 示例: CALL print_sql_part_policy_pgjob_to_pgtask(); call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu1'); call ts_table_part_policy_pgjob_to_pgtask('public', 'cpu2'); print_sql_part_policy_pgjob_to_pgtask --------------------------------------- (1 row)
  • get_timeline_count_internal(schema_name text, rel_name text) 函数用于获取时序表在当前DN节点上tag表的行数,只能在DN节点上使用。 参数名 类型 描述 Required/Option schema_name text 时序表所属schema的名称。 Required rel_name text 时序表的表名。 Required 示例: 创建表,并且插入数据: 1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE IF NOT EXISTS CPU( scope_name text TSTag, server_ip text TSTag, group_path text TSTag, time timestamptz TSTime, idle numeric TSField ) with (orientation=TIMESERIES) distribute by hash(scope_name); insert into CPU values('dcxtataetaeta','10.145.255.33','saetataetaeta','2020-04-07 17:12:09+08', 60639); insert into CPU values('wrhtataetaeta','10.145.255.33','saetataetaeta','2020-04-07 17:12:09+08', 53311); insert into CPU values('saetataetaeta','10.145.255.33','saetataetaeta','2020-04-07 17:12:09+08', 27101); insert into CPU values('saetataetaeta','10.145.255.33','saetataetaeta','2020-04-07 17:12:09+08', 48005); 数据从delta表进入CU后,连接DN节点,执行该函数: 1 2 3 4 5 select get_timeline_count_internal('public', 'cpu'); get_timeline_count_internal ----------------------------- 2 (1 row)
  • gs_clean_tag_relation(tagOid oid) 函数用于清理tag表中无用的tagid对应的行数据。由于分区的自动删除,主表中的数据已经被清理,长期使用可能导致tag表中存在一些废弃数据,可以通过调用该函数,将长期以来不使用的tag表中的行数据进行清理,提高tag表的利用率。返回值为成功清理tag表的行数。 参数说明 参数名 类型 描述 Required/Option tagOid oid 淘汰指定tag表中无用的数据。 Required 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE IF NOT EXISTS CPU( scope_name text TSTag, server_ip text TSTag, group_path text TSTag, time timestamptz TSTime, idle numeric TSField, system numeric TSField, util numeric TSField, vcpu_num numeric TSField, guest numeric TSField, iowait numeric TSField, users numeric TSField) with (orientation=TIMESERIES) distribute by hash(scope_name); SELECT oid FROM PG_CLASS WHERE relname='cpu'; oid ------- 19099 (1 row) SELECT gs_clean_tag_relation(19099); gs_clean_tag_relation ----------------------- 0 (1 row)
  • ts_table_part_policy_pgjob_to_pgtask(schemaName text, tableName text) 该函数仅在时序表从8.1.1升级到8.1.3版本时使用,用于迁移单个时序表的分区管理任务。8.1.1版本时序表的分区管理任务在pg_jobs表,而8.1.3版本的时序表分区管理任务在pg_task表,在8.1.1版本升级到8.1.3版本时,需要将时序表的分区管理任务从pg_jobs迁移到pg_task中。该函数只迁移时序表分区管理任务,迁移完成后将原有的pg_jobs任务设置为broken状态。 参数名 类型 描述 Required/Option schemaName text 时序表所属schema的名称。 Required tableName text 时序表的名称。 Required 示例: CALL ts_table_part_policy_pgjob_to_pgtask('public','cpu1'); WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_drop_partition('public.cpu1', interval '7 d'); , the job interval is interval '1 day'. WARNING: The job on pg_jobs is migrated to pg_task, and the original job is broken, the job what is call proc_add_partition('public.cpu1', interval '1 d'); , the job interval is interval '1 day'. ts_table_part_policy_pgjob_to_pgtask ---------------------------------- (1 row)
  • get_timeline_count(relname regclass) 函数用于获取时序表在各个DN节点上tag表的行数,只能在CN节点上使用。 参数名 类型 描述 Required/Option relname regclass 时序表的名称。 Required 示例: 建表和导入数据与get_timeline_count_internal函数实例相同,连接CN节点,执行该函数。 1 2 3 4 5 6 select get_timeline_count('cpu'); get_timeline_count -------------------- (dn_1,2) (dn_2,1) (2 rows)
  • delta(field numeric) 用于计算按照时间排序后两行之间的差值。 表4 参数说明 参数名 类型 描述 Required/Option field 数值型 需要计算的列。 Required 该函数通常用于时序场景计算按照时间排序后相邻两行插值,用于流量,速度等指标监控。 delta是一个窗口函数,需要与over窗口函数使用。并且,over中rows语句不会改变delta函数结果,比如delta(value) over(order by time rows 1 preceding) 和 delta(value) over(order by time rows 3 preceding) 返回的结果是一致的。 示例: SELECT delta(value) over (rows 1 preceding) FROM (VALUES ('2019-07-12 00:00:00'::timestamptz, 1),('2019-07-12 00:01:00'::timestamptz, 2),('2019-07-12 00:02:00'::timestamptz, 3)) v(time,value);
  • mode() within group (order by value anyelement) 对给定的列,返回出现频率最高的值,如果多个值频率相同,返回这些值中最小的那个值。 表6 参数说明 参数名 类型 描述 Required/Option value anyelement 查询列。 Required 需要与within group一起使用,无within group语句,会报错,该函数参数放在group的order by后面。 不能和over子句一起使用。 示例: SELECT mode() within group (order by value) FROM (VALUES ('2019-07-12 00:00:00'::timestamptz, 1),('2019-07-12 00:01:00'::timestamptz, 2),('2019-07-12 00:02:00'::timestamptz, 3)) v(time,value);
  • first(column1, column2) 聚合函数。通过比较分组内column2列的值,找到其中的最小值,输出对应column1列的值。 表9 参数说明 参数名 类型 描述 Requried/Option column1 bigint/text/double/numeric 最终的输出列。 Required column2 timestamp/timestamptz/numeric 比较列。 Required 示例:复用time_fill表达式中的表定义和数据。 求按照scope_name分组,每个分组内按照时间排序最靠前的idle的值: 1 2 3 4 5 6 select first(idle, time_string) from dcs_cpu group by scope_name; first ------- 1 3 (2 rows)
  • spread(field numeric) 该函数用于计算某段时间内最大和最小值的差值。 表5 参数说明 参数名 类型 描述 Required/Option field 数值型 需要计算的列。 Required 该函数用于时序场景计算每个指标的增量,通常按照时间排序后计算。 每个分组内如果少于2个元组,返回结果为0,不要和over窗口函数混用。 示例: SELECT SPREAD(value) FROM (VALUES ('2019-07-12 00:00:00'::timestamptz, 1),('2019-07-12 00:01:00'::timestamptz, 2),('2019-07-12 00:02:00'::timestamptz, 3)) v(time,value);
  • last(column1, column2) 聚合函数。通过比较分组内column2列的值,找到其中的最大值,输出对应column1列的值。 表10 参数说明 参数名 类型 描述 Requried/Option column1 bigint/text/double/numeric 最终的输出列。 Required column2 timestamp/timestamptz/numeric 比较列。 Required 示例:复用time_fill表达式中的表定义和数据 求按照scope_name分组,每个分组内按照时间排序最靠后的idle的值: 1 2 3 4 5 6 select last(idle, time_string) from dcs_cpu group by scope_name; last ------ 2 3 (2 rows)
  • 时序计算函数一览表 表1 时序计算支持的函数一览 功能 函数 用于计算按照时间排序后两行之间的差值。 delta 该函数用于计算某段时间内最大和最小值的差值。 spread 对给定的列,返回出现频率最高的值,如果多个值频率相同,返回这些值中最小的那个值。 mode() 计算百分位,是percentile_cont的近似算法。 value_of_percentile 给定百分位,计算对应的值。是value_of_percentile的逆运算。 percentile_of_value 通过比较column2列的值,找到其中的最小值,输出对应行column1列的值。 first 通过比较column2列的值,找到其中的最大值,输出对应行column1列的值。 last 用于获取时序表在当前DN节点上tag表的行数,只能在DN节点上使用。 get_timeline_count_internal 用于获取时序表在各个DN节点上tag表的行数,只能在CN节点上使用。 get_timeline_count 用于清理tag表中无用的tagid对应的行数据。 gs_clean_tag_relation 用于迁移单个时序表的分区管理任务,仅在时序表从8.1.1升级到8.1.3版本时使用。 ts_table_part_policy_pgjob_to_pgtask 用于迁移本数据库所有时序表的分区管理任务,仅在时序表从8.1.1升级到8.1.3版本时使用。 proc_part_policy_pgjob_to_pgtask 用于打印SQL语句,每条语句可用于迁移单个时序表的分区管理任务,仅在时序表从8.1.1升级到8.1.3版本时使用。 print_sql_part_policy_pgjob_to_pgtask 表2 按照时间填充的表达式 功能 表达式 对数据按照时间列排序后,补充缺失的时间数据信息(聚合以后的结果),补充的方法是用按照时间排序后的前值填充后值。 time_fill(interval, time_column, start_time, end_time), fill_last(agg_function(agg_column)) 对数据按照时间列排序后,补充缺失的时间数据信息(聚合以后的结果),补充的方法是用按照时间排序后的后值填充前值。 time_fill(interval, time_column, start_time, end_time), fill_first(agg_function(agg_column)) 对数据按照时间列排序后,补充缺失的时间数据信息(聚合以后的结果),补充的方法是用按照时间排序后前后两者的值填充当前值。 time_fill(interval, time_column, start_time, end_time), fill_avg(agg_function(agg_column)) 表3 参数说明 参数名 类型 描述 Required/Option interval 时间间隔类型:INTERVAL,最小单位是1秒。 按照时间分组的时间间隔。 Required time_column 时间类型,timestamp/timestamptz。 按照指定列做时间分组。 Required start_time 时间类型,timestamp/timestamptz。 分组的起始时间。 Required end_time 时间类型,timestamp/timestamptz。 分组的结束时间。 Required agg_function(agg_column)) 指定Agg函数对指定列做聚合。比如max(col)。 对Agg的结果按照指定的填充方法填充。 Required
  • TSFIELD支持的数据类型 时序表TSFIELD支持的数据类型如下表: 表1 支持的数据类型 类别 数据类型 描述 是否支持 长度 取值 Numeric Types SMALLINT 小范围整数。 支持 2字节 -32,768 ~ +32,767 INTEGER 常用的整数。 支持 4字节 -2,147,483,648 ~ +2,147,483,647 BIGINT 大范围整数。 支持 8字节 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 NUMERIC[(p[,s])] DECIMAL[(p[,s])] 精度p取值范围为[1,1000],标度s取值范围为[0,p]。 支持 可变长度 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。 REAL 单精度浮点数,不精准。 支持 4字节 6位十进制数字精度。 DOUBLE PRECISION 双精度浮点数,不精准。 支持 8字节 1E-307~1E+308, 15位十进制数字精度。 SMALLSERIAL 二字节序列整型。 支持 2字节 1 ~ 32,767 SERIAL 四字节序列整型。 支持 4字节 1 ~ 2,147,483,647 BIGSERIAL 八字节序列整型。 支持 8字节 1 ~ 9,223,372,036,854,775,807 Monetary Types MONEY 货币金额。 支持 8字节 -92233720368547758.08 ~ +92233720368547758.07 Character Types VARCHAR(n) CHARACTER VARYING(n) 变长字符串。 支持 n是指字节长度,n小于10485761。 最大为10MB。 CHAR(n) CHARACTER(n) 定长字符串,不足填充空格。 支持 n是指字节长度,如不带精度n,默认精度为1。n小于10485761。 最大为10MB。 CHARACTER CHAR 单字节内部类型。 支持 1字节 - TEXT 变长字符串。 支持 可变长度 最大为1GB-8023B(即1073733621B)。 NVARCHAR2(n) 变长字符串。 支持 可变长度 最大为10MB。 NAME 用于对象名的内部类型。 不支持 64字节 - Date/Time Types TIMESTAMP[(p)][WITH TIME ZONE] 日期和时间,带时区。p表示小数点后的精度,取值范围为0~6。 支持 8字节 - TIMESTAMP[(p)] [WITHOUT TIME ZONE] 日期和时间。 p表示小数点后的精度,取值范围为0~6。 支持 8字节 - DATE oracle兼容模式下等价于timestamp(0),记录日期和时间。 其他模式下,记录日期。 支持 oracle兼容模式下,占存储空间8字节 其他模式下,占存储空间4字节 - TIME [(p)] [WITHOUT TIME ZONE] 只用于一日内时间。 p表示小数点后的精度,取值范围为0~6。 支持 8字节 - TIME [(p)] [WITH TIME ZONE] 只用于一日内时间,带时区。 p表示小数点后的精度,取值范围为0~6。 支持 12字节 - INTERVAL 时间间隔。 支持 16字节 - big object CLOB 变长字符串。文本大对象。 支持 可变长度 最大为1GB-8023B(即1073733621B)。 BLOB 二进制大对象。 不支持 可变长度 最大为1G-8023B(即1073733621B)。 other types … … 不支持 … … 父主题: 支持和限制
  • 与标准数仓的区别 IoT数仓与标准数仓是 GaussDB (DWS)的两种不同类型产品,在使用上也存在一定差异,具体可参考表1进行对比分析。 表1 IoT数仓与标准数仓的差异 数仓类型 标准数仓 IoT数仓 适用场景 融合分析业务,一体化OLAP分析场景。主要应用于金融、政企、电商、能源等领域。 应用性能监控及物联网IoT等实时分析场景。主要应用于环境监测、自动驾驶、系统监控等行业。 产品优势 性价比高,使用场景广泛。 支持冷热数据分析,存储、计算弹性伸缩,无限算力、无限容量等。 高效的时序计算和IoT分析能力。 丰富的时序处理函数,支持实时和历史数据关联,内置时序算子,海量数据写入,高压缩以及多维度分析等能力。并且继承标准数仓的各种优势场景。 功能特点 支持海量数据离线处理和交互查询,数据规模大、复杂数据挖掘具有很好的性能优势。 千万时间线,秒级聚合,典型IoT场景下导入和查询较传统引擎提升数倍。 SQL语法 SQL语法兼容性高,语法通用,易于使用。 兼容标准数仓语法,新增IoT数仓特有DDL语法。 GUC参数 丰富的GUC参数,根据客户业务场景适配最适合客户的数仓环境。 兼容标准数仓GUC参数,新增支持IoT数仓调优等GUC参数。
  • 数据特征 时序数据列可以分为三类: Tag列:将表征数据源来源或者属性信息的列作为Tag列,该列的数值相对稳定,不随时间变化而变化。 Field列:将采样的维度作为数据列,因为该列的数据一般随时间变化而变化,存储各个指标的value。 Time列:表示采样时刻的时间戳。 如图1为典型发电机组数据采样示意图。共有三台发电机组,每个时间点分别采样四种数据:电压、功率、频率和电流相角。随着时间的流逝,每个采样的时间点将采样到的数据源源不断的传输。示意图中每条虚线都可以表示为一条时间线。 如图2所示可以将示意图转化为具体的一张表来存储数据,发电机组的某个指标随时间变化形成一条时间线,通过tag + field + time组合确定一条时间线。 橙色区域的tag列包含发电机、生产厂商、型号、位置、ID,不会随时间的变化而变化; 蓝色区域的field列包含电压、功率、频率、电流相角,这些列是目标采样维度,存储的采样数据会随着时间动态变化; 黄色区域为time列,表示采样的时间点。 图1 发电机组数据采样示意图 图2 存储数据表
  • 技术特点 海量数据写入能力 在自动驾驶汽车监测的数据每秒只采集5种测量数据(速度、温度、发动机功率、方向、坐标),1000W辆汽车每秒中将会有5000W的TPS。 写入平稳、持续 不同于传统业务场景,时序数据的产生通常以一个固定的时间频率进行采集,不受其他因素的制约,其数据生成的速度是相对平稳。 写多读少 与应用场景相关,时序数据90%左右的操作都是写操作。例如在监控场景下每天需要存储很多数据,但是读取的数据比较少,通常只会关注几个特定关键指标在一定时间范围内的数据。 高压缩率 高压缩率能够带来两方面的收益。一方面能够节省大量的硬件存储成本,节省硬盘的开销。另一方面压缩后的数据可以更容易存储到内存中,显著提高查询的性能。 实时写入新数据 时序数据的写入是实时的,采集的数据反应客观信息,数据是随着时间推进不断产生,不存在旧数据更新场景。 数据读取概率高 最近时间的数据具有的价值更高,因此被读取的概率高。例如在监控场景下,最近几个小时或者几天的监控数据最可能被访问,而一个季度或者一年前的数据极少访问。 多维分析 时序数据来自不同个体且拥有不同属性。例如在监控场景下,通过对某个集群上每台机器的网络流量监控,可以查询分析某台机器的网络流量,也可以同时查询集群总的网络流量。
  • 应用场景 典型IoT数仓主要服务两类业务场景,应用性能监控(Application Performance Management, APM )和物联网(Internet of Things,IoT),主要体现在以下几个方面: 商业零售:电商系统订单交易金额,支付金额数据,商品库存,物流数据; 金融交易:股票交易系统持续记录股票价格,交易量等; 社会生活:智能电表实时记录每小时的用电量数据等; 工业领域:工业机器数据例如风力发电机,获取实时转速、风速数据、发电量数据等; 系统监控:IT基础设施的负载和资源使用率,DevOps监控数据、移动/Web应用程序事件流等; 环境监测:自然环境(如温度、空气、水文、风力等)的监测,科学测量结果等; 城市管理:城市交通的监测(车辆、人流、道路等); 自动驾驶:自动驾驶汽车持续收集所处环境中的变化数据等。
  • 示例 创建简单的时序表: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 CREATE TABLE IF NOT EXISTS CPU( scope_name text TSTag, server_ip text TSTag, group_path text TSTag, time timestamptz TSTime, idle numeric TSField, system numeric TSField, util numeric TSField, vcpu_num numeric TSField, guest numeric TSField, iowait numeric TSField, users numeric TSField) with (orientation=TIMESERIES) distribute by hash(scope_name); CREATE TABLE CPU1( idle numeric TSField, IO numeric TSField, scope text TSTag, IP text TSTag, time timestamp TSTime ) with (TTL='7 days', PERIOD='1 day', orientation=TIMESERIES); CREATE TABLE CPU2 (LIKE CPU INCLUDING ALL);
  • 参数说明 IF NOT EXISTS 如果已经存在相同名称的表,不会报出错误,而会发出通知,告知通知此表已存在。 table_name 要创建的表名。 column_name 新表中要创建的字段名。 data_type 字段的数据类型。 kv_type 列的kv_type属性:维度属性(TSTAG),指标属性(TSFIELD),时间属性(TSTIME); 时序表必须指定一个时间属性(TSTIME),且只能指定一个,tstime类型的列不能被删除。至少存在一个TSTAG和TSFIELD列,否则建表报错。 TSTAG列支持类型:text、char、boo、int、big int。 TSTIME列支持类型:timestamp with time zone、timestamp without time zone。在兼容Oracle语法的数据库中,也支持date类型。涉及到时区相关操作时,请选择带时区的时间类型。 TSFIELD列支持类型见TSFIELD支持的数据类型。 LIKE source_table [like_option...] LIKE子句声明一个表,新表自动从这个表中继承所有字段名及其数据类型。 新表与原表之间在创建动作完毕之后是完全无关的。在原表做的任何修改都不会传播到新表中,并且也不可能在扫描原表的时候包含新表的数据。 被复制的列并不使用相同的名字进行融合。如果明确的指定了相同的名字或者在另外一个LIKE子句中,将会报错。 时序表只能从时序表中进行继承。 WITH( { storage_parameter = value } [, ...] ) 这个子句为表指定一个可选的存储参数。 ORIENTATION 指定表数据的存储方式,即时序方式、行存方式、列存方式,该参数设置成功后就不再支持修改。 取值范围: TIMESERIES,表示表的数据将以时序方式存储。 COLUMN,表示表的数据将以列存方式存储。 ROW,表示表的数据将以行方式存储。 默认值:ROW。 COMPRESSION 指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 取值范围: 时序表和列存表的有效值为YES/NO和/LOW/MIDDLE/HIGH,默认值为LOW。当设置为YES时,压缩级别默认为LOW。 暂不支持行存表压缩功能。 ORC格式迁移到GaussDB(DWS)列存表,如果使用low级别压缩,单副本大小大约是ORC的1.5~2倍;如果使用high级别压缩,单副本大小基本与ORC持平,在新建GaussDB(DWS)集群规模时,需考虑该转换关系。 列存middle压缩固定使用字典压缩,对于数据特征不适合字典压缩的数据,使用middle压缩的结果可能比low压缩更大。 GaussDB(DWS)内部提供如下压缩算法。 表1 列存压缩算法 COMPRESSION NUMERIC STRING INT LOW delta压缩+RLE压缩 lz4压缩 delta压缩(RLE可选) MIDDLE delta压缩+RLE压缩+lz4压缩 dict压缩或lz4压缩 delta压缩或lz4压缩(RLE可选) HIGH delta压缩+RLE压缩+zlib压缩 dict压缩或zlib压缩 delta压缩或zlib压缩(RLE可选) COMPRESSLEVEL 指定表数据同一压缩级别下的不同压缩水平,它决定了同一压缩级别下表数据的压缩比以及压缩时间。对同一压缩级别进行了更加详细的划分,为用户选择压缩比和压缩时间提供了更多的空间。总体来讲,此值越大,表示同一压缩级别下压缩比越大,压缩时间越长;反之亦然。该参数只对时序表和列存表有效。 取值范围:0~3,默认值为0。 MAX_BATCHROW 指定了在数据加载过程中一个存储单元可以容纳记录的最大数目。该参数只对时序表和列存表有效。 取值范围:10000~60000 默认值60000 PARTIAL_CLUSTER_ROWS 指定了在数据加载过程中进行将局部聚簇存储的记录数目。该参数只对时序表和列存表有效。 取值范围:600000~2147483647 ENABLE_DELTA 指定了在时序表是否开启delta表。该参数只对时序表和列存表有效。 默认值:on SUB_PARTITION_COUNT 指定时序表二级分区的个数。该参数用于设置在导入阶段二级分区个数。在建表时进行设置,建表后不支持修改。不建议用户随意设置该默认值,可能会影响导入和查询的性能。 取值范围:1~1024,默认值为32 DELTAROW_THRESHOLD 指定时序表导入时小于多少行(SUB_PARTITION_COUNT * DELTAROW_THRESHOLD)的数据进入delta表,enable_delta开启时生效。该参数只对时序表和列存表有效。 取值范围:0~60000 默认值:10000 COLVERSION 指定时存储格式的版本,仅时序表和列存表支持该参数,时序表不支持不同存储格式版本之间的切换。时序表只支持2.0版本。 取值范围: 1.0:列存表的每列以一个单独的文件进行存储,文件名以relfilenode.C1.0、relfilenode.C2.0、relfilenode.C3.0等命名。 2.0:时序表/列存表的每列合并存储在一个文件中,文件名以relfilenode.C1.0命名。 默认值:2.0 TTL 设置时序表定时删除分区task任务。默认不创建删除分区task任务。 取值范围: 1 hour ~ 100 years PERIOD 设置时序表定时创建分区task任务。如果设置TTL,PERIOD不能大于TTL。 取值范围: 1 hour ~ 100 years, 默认值:1 day TABLESPACE tablespace_name 创建新表时指定此关键字,表示新表将要在指定表空间内创建。如果没有声明,将使用默认表空间。 DISTRIBUTE BY 指定表如何在节点之间分布或者复制。 取值范围: HASH (column_name ) :对指定的列进行Hash,通过映射,把数据分布到指定DN。 时序表当前默认按照所有TAG列进行分布。 TO { GROUP groupname | NODE ( nodename [, ... ] ) } TO GROUP指定创建表所在的Node Group,目前不支持hdfs表使用。TO NODE主要供内部扩容工具使用,一般用户不应该使用。 PARTITION BY 指定时序表的初始分区。时序表的分区键必须是TSTIME列。 TTL(Time To Live)指明该表的数据保存周期,超过TTL周期的数据将被清理。Period指明按照时间划分的周期对数据进行分区,分区的大小可能对查询性能有影响,同时每隔周期时间会创建一个新的周期大小的分区。TTL和Period值为Interval类型,例如:“1 hour”, “1 day”, “1 week”, “1 month” ,“1 year”, “1 month 2 day 3 hour”... Storage_parameter存储参数中的orientation指明是否为时序存储方式,只有当orientation为timeseries时存储方式才支持Key Value存储。 时序表不需要手动指定DISTRIBUTE BY和PARTITION BY,默认按照所有tag列分布,同时以TSTIME列为分区键,创建具有自动分区管理功能的分区表。
  • 功能描述 在当前数据库中创建一个新的空白时序表,该表由命令执行者所有。 IoT数仓提供创建时序表DDL语句。创建时序表DDL需要提供时序表基于Key Value存储所需的维度属性(tstag)、指标属性(tsfield)以及时间(tstime)属性的相关信息。同时作为 时序数据库 ,允许指明数据的生命周期TTL(Time To Live)以及分区创建时间周期(Period)来提供自动分区创建和自动分区删除的能力。创建时序表需要将orientation属性设置为timeseries。
共100000条