云服务器内容精选

  • 场景介绍 时序表继承普通表的行存和列存语法,降低了用户学习成本,易理解和使用; 时序表具备数据生命周期管理的能力,每天各种维度的数据爆炸式增长,需要定期给表增加新的分区,避免新数据无法存储。而对于很久之前的数据,其价值较低且不经常访问,可以定期删除无用的数据。因此时序表需要具备定时增加分区和定时删除分区的能力。 本实践主要讲解如何快速创建适合自己业务的时序表,并对时序表进行分区管理,从而真正发挥时序表的优势。将对应的列指定为合适的类型,能够帮助我们更好的提高导入、查询等场景的性能,让业务场景运行的更加高效。如下图所示,以发电机组数据采样为例: 图1 发电机组数据采样示意图
  • 创建时序表(手动设置分区边界) 手动指定分区边界的起始值,例如手动设置默认的分区边界时间P1为“2022-05-30 16:32:45”、P2为“2022-05-31 16:56:12”,创建时序表GENERATOR1如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE TABLE IF NOT EXISTS GENERATOR1( genset text TSTag, manufacturer text TSTag, model text TSTag, location text TSTag, ID bigint TSTag, voltage numeric TSField, power bigint TSField, frequency numeric TSField, angle numeric TSField, time timestamptz TSTime) with (orientation=TIMESERIES, period='1 day') distribute by hash(model) partition by range(time) ( PARTITION P1 VALUES LESS THAN('2022-05-30 16:32:45'), PARTITION P2 VALUES LESS THAN('2022-05-31 16:56:12') ); 查询当前时间: 1 2 3 4 select now(); now ------------------------------- 2022-05-31 20:36:09.700096+08(1 row) 查询分区以及分区边界: 1 2 3 4 5 6 7 8 SELECT relname, boundaries FROM pg_partition where parentid=(SELECT oid FROM pg_class where relname='generator1') order by boundaries ; relname | boundaries -------------+---------------------------- p1 | {"2022-05-30 16:32:45+08"} p2 | {"2022-05-31 16:56:12+08"} p1654073772 | {"2022-06-01 16:56:12+08"} p1654160172 | {"2022-06-02 16:56:12+08"} ......
  • 步骤五:准备DWS对接Flink工具dws-connector-flink dws-connector-flink是一款基于DWS JDBC接口实现对接Flink的一个工具。在配置 DLI 作业阶段,将该工具及依赖放入Flink类加载目录,提升Flink作业入库DWS的能力。 浏览器访问https://mvnrepository.com/artifact/com.huaweicloud.dws。 在软件列表中选择最新版本的DWS Connectors Flink,本实践选择DWS Connector Flink 2 12 1 12。 单击“1.0.4”分支,实际请以官网发布的新分支为准。 单击“View ALL”。 单击dws-connector-flink_2.12_1.12-1.0.4-jar-with-dependencies.jar,下载到本地。 创建OBS桶,本实践桶名设置为obs-flink-dws,并将此文件上传到OBS桶下,注意桶也保持与DLI在一个区域下,本实践为 华北-北京四。 图15 上传jar包到OBS桶
  • 步骤二:创建绑定ELB的DWS集群和目标表 创建独享型弹性负载均衡服务ELB,网络类型选择IPv4私网即可,区域、VPC选择与Kafka实例保持一致,本实践为“华北-北京四”。 创建集群,为 GaussDB (DWS)绑定弹性负载均衡 ELB,同时为确保网络连通,GaussDB(DWS)集群的区域、VPC选择与Kafka实例保持一致,本实践为“华北-北京四”,虚拟私有云与上面创建Kafka的虚拟私有云保持一致。 在GaussDB(DWS)控制台的集群管理页面,单击指定集群所在行操作列的“登录”按钮。 本实践以8.1.3.x版本为例,8.1.2及以前版本不支持此登录方式,可以使用Data Studio连接集群。 登录用户名为dbadmin,数据库名称为gaussdb,密码为创建GaussDB(DWS)集群时设置的dbadmin用户密码,勾选“记住密码”,打开“定时采集”,“SQL执行记录”,单击“登录”。 图4 登录DWS 单击“gaussdb”库名,再单击右上角的“SQL窗口”,进入SQL编辑器。 复制如下SQL语句,在SQL窗口中,单击“执行SQL”,创建目标表user_dws。 1 2 3 4 5 6 CREATE TABLE user_dws ( id int, name varchar(50), age int, PRIMARY KEY (id) );
  • 场景描述 了解GaussDB(DWS)的基本功能和数据导入,对某公司与供应商的订单数据分析,分析维度如下: 分析某地区供应商为公司带来的收入,通过该统计信息可用于决策在给定的区域是否需要建立一个当地分配中心。 分析零件/供货商关系,可以获得能够以指定的贡献条件供应零件的供货商数量,通过该统计信息可用于决策在订单量大,任务紧急时,是否有充足的供货商。 分析小订单收入损失,通过查询得知如果没有小量订单,平均年收入将损失多少。筛选出比平均供货量的20%还低的小批量订单,如果这些订单不再对外供货,由此计算平均一年的损失。
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
  • 支持区域 当前已上传OBS数据的区域如表1所示。 表1 区域和OBS桶名 区域 OBS桶名 华北-北京一 dws-demo-cn-north-1 华北-北京二 dws-demo-cn-north-2 华北-北京四 dws-demo-cn-north-4 华北-乌兰察布一 dws-demo-cn-north-9 华东-上海一 dws-demo-cn-east-3 华东-上海二 dws-demo-cn-east-2 华南-广州 dws-demo-cn-south-1 华南-广州友好 dws-demo-cn-south-4 中国-香港 dws-demo-ap-southeast-1 亚太-新加坡 dws-demo-ap-southeast-3 亚太-曼谷 dws-demo-ap-southeast-2 拉美-圣地亚哥 dws-demo-la-south-2 非洲-约翰内斯堡 dws-demo-af-south-1 拉美-墨西哥城一 dws-demo-na-mexico-1 拉美-墨西哥城二 dws-demo-la-north-2 莫斯科二 dws-demo-ru-northwest-2 拉美-圣保罗一 dws-demo-sa-brazil-1
  • 步骤四:车辆分析 执行Analyze 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。执行计划生成器会使用这些统计数据,以生成最有效的查询执行计划。 执行以下语句生成表统计信息: 1 ANALYZE; 查询数据表中的数据量 执行如下语句,可以查看已加载的数据条数。 1 2 SET current_schema= traffic_data; SELECT count(*) FROM traffic_data.gcjl; 车辆精确查询 执行以下语句,指定车牌号码和时间段查询车辆行驶路线。GaussDB(DWS) 在应对点查时秒级响应。 1 2 3 4 5 6 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm = 'YD38641' and gcsj between '2016-01-06' and '2016-01-07' order by gcsj desc; 车辆模糊查询 执行以下语句,指定车牌号码和时间段查询车辆行驶路线,GaussDB(DWS) 在应对模糊查询时秒级响应。 1 2 3 4 5 6 7 SET current_schema= traffic_data; SELECT hphm, kkbh, gcsj FROM traffic_data.gcjl where hphm like 'YA23F%' and kkbh in('508', '1125', '2120') and gcsj between '2016-01-01' and '2016-01-07' order by hphm,gcsj desc;
  • 迁移后数据一致性验证 使用gsql连接DWS的test01集群。 gsql -d test01 -h 数据库主机IP -p 8000 -U dbadmin -W 数据库用户密码 -r; 查询test01库的表。 1 select * from pg_tables where schemaname= 'public'; 图11 查询test01库的表 查询每个表的数据是否齐全,字段是否完整。 1 2 select count(*) from table name; \d+ table name; 图12 查询表字段 图13 查询表数据 抽样检查,验证表数据是否正确。 1 select * from persons where city = ‘Beijing' order by id_p; 图14 验证表数据 重复执行2~4查看其它库和表数据是否正确。
  • 创建GaussDB(DWS)集群 参见创建集群进行创建,区域可选择“华北-北京四”。 确保GaussDB(DWS)集群与 CDM 集群在同一区域,同一个VPC下。 参见使用gsql客户端连接集群连接到集群。 创建迁移前数据检查的目标数据库test01和test02,确保与原MySQL的数据库同名,数据库编码一致。 1 2 create database test01 with encoding 'UTF-8' dbcompatibility 'mysql' template template0; create database test02 with encoding 'UTF-8' dbcompatibility 'mysql' template template0;
  • 场景描述 图1 迁移场景 主要包括云上和云下的MySQL数据迁移,支持整库迁移或者单表迁移,本文以云下MySQL的整库迁移为例。 云下MySQL数据迁移: CDM通过公网IP访问MySQL数据库,CDM与GaussDB(DWS)在同一个VPC下,CDM分别与MySQL和DWS建立JDBC连接。 云上RDS-MySQL数据迁移: RDS、CDM和GaussDB(DWS)均在同一个VPC下,CDM分别与MySQL和DWS建立JDBC连接。如果云上RDS与DWS不在一个VPC,则CDM通过弹性公网IP访问RDS。
  • 免费体验 数据分析实验室是华为云官方实验平台,实验环境为华为云现网环境,整个实验过程完全免费。供您在最短时间内体验GaussDB(DWS)真实环境,快速上手。 开发者可通过表1实验手册指导,使用环境中预置的华为云账号,一键创建GaussDB(DWS)实验环境,在云端体验GaussDB(DWS)的数据导入、访问 MRS 集群、多维度分析、权限管理、JDBC开发、性能调优等场景。 表1 实验列表 场景 实验名称 实验描述 预计时长 导入分析 快速入门 一键式创建GaussDB(DWS)集群,上传csv本地数据到 云存储 OBS桶,通过创建OBS外表实现数据导入并简单分析。 1h 零售业经营多维度分析 环境已预置样例数据在OBS桶,通过创建OBS外表导入样例数据,再使用聚合函数、group by、order by、视图进行多维度分析。 1.5h SQL on Hadoop 导入MRS-Hive数据源 创建 数据仓库 集群GaussDB(DWS),并导入MRS的Hive数据,实现跨集群进行大数据融合分析。 1.5h 二次开发 使用Java进行二次开发 使用JDBC驱动连接GaussDB(DWS)进行二次开发,熟悉简单的适配DWS的Java开发用例。 1.5h 数据迁移 从老DWS集群迁移数据到新DWS集群 本实验指导用户创建数据仓库集群GaussDB(DWS)并将老GaussDB(DWS)整库迁移到新的GaussDB(DWS)。同时,针对使用自增序列导致的性能问题场景,指导用户排查原因并提供优化方法。 2~3h 基于gds实现跨集群数据互联互通 本实验通过部署GDS服务器,使用GDS导入导出的并发能力,实现双DWS集群之间1500万行数据分钟级迁移。 2h 安全管理 权限管理 通过实验创建不同用户,不同Schema,基于权限管理实现数据的隔离和互访,了解用户、角色的关系,了解grant的基本用法,了解基于角色的权限管理(RBAC)。 1.5h 使用数据脱敏实现卡号等隐私信息屏蔽 本实验通过创建数据仓库服务GaussDB(DWS)并使用DWS的数据脱敏功能,针对不同用户设置部分数据列的屏蔽,实现敏感数据脱敏,确保数据安全。 1h 高级特性 冷热数据管理 指导用户创建数据仓库集群GaussDB(DWS),并创建冷热分区表实现冷热数据分区管理,不仅可以提高数据分析性能还能降低业务成本。 1h 调优 性能调优 指导用户使用GaussDB(DWS)进行性能调优。通过本实验掌握通过EXPLAIN语句查询执行计划的方法,了解GaussDB(DWS)几种常见的SQL调优手段。 2h 云原生3.0 云原生3.0数仓-存算分离 本实验指导用户创建GaussDB(DWS)新一代Serverless云原生数仓,并体验Serverless存算分离架构下的极致查询。 2h 云原生3.0数仓-湖仓一体 本实验指导用户创建GaussDB(DWS)新一代Serverless云原生数仓,通过EXTERNAL SCHEMA访问MRS的Hive数据,体验湖仓一体、存算分离等极致查询的高级特性。 2h
  • 查看冷热表数据分布 查看单表数据分布情况。 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)
  • 创建冷热表 创建列存冷热数据管理表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;
  • 冷热数据切换 切换冷数据至OBS表空间。 自动切换:每日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)