从业务库到可视化大屏:用华为云 CDM + DWS + DLV 搭建实时数据链路

举报
yd_280727371 发表于 2026/10/24 09:13:34 2026/10/24
【摘要】 一、背景与痛点公司电商系统的订单、用户、商品数据全在 MySQL 里,日常运营需要看各种报表:今日订单量、GMV 实时走势各品类销售占比用户地域分布直接在 MySQL 上跑分析 SQL,问题很明显:锁表风险:大查询扫全表,业务写入被阻塞查询慢:多表 JOIN + 时间聚合,动辄十几秒维度单一:MySQL 不适合做多维分析,Cube 展开困难核心诉求:把分析流量从业务库剥离,用专门的 OLAP...

一、背景与痛点

公司电商系统的订单、用户、商品数据全在 MySQL 里,日常运营需要看各种报表:
  • 今日订单量、GMV 实时走势
  • 各品类销售占比
  • 用户地域分布
直接在 MySQL 上跑分析 SQL,问题很明显:
  1. 锁表风险:大查询扫全表,业务写入被阻塞
  2. 查询慢:多表 JOIN + 时间聚合,动辄十几秒
  3. 维度单一:MySQL 不适合做多维分析,Cube 展开困难
核心诉求:把分析流量从业务库剥离,用专门的 OLAP 引擎承载,并且能可视化展示。

二、方案设计

整体架构:
MySQL(业务库)
   ↓ (定时全量/增量同步)
CDM(云数据迁移)
   ↓
DWS(数据仓库服务,OLAP 引擎)
   ↓ (SQL 聚合查询)
DLV(数据可视化)
   ↓
大屏展示
组件选型与职责:

组件
角色
为什么选它
CDM
数据集成
可视化配置,支持 MySQL→DWS 增量同步,不用写代码
DWS
数据仓库
兼容 PostgreSQL,分布式 MPP 架构,分析性能强
DLV
可视化
拖拽式大屏,内置多种图表,支持实时刷新
避坑点:DWS 是 OLAP 引擎,不要拿它当业务库用(高并发小事务性能不如 MySQL)。职责分离是关键。

三、实操步骤

3.1 准备 DWS 集群

  1. 进入 DWS 控制台 → 创建集群
  2. 节点类型选 dwsk2.xlarge(4U32G),3 节点起步
  3. 数据库版本选最新稳定版(如 9.1.x)
  4. 网络:与 MySQL 所在 VPC 打通(同 VPC 或对等连接)
  5. 创建管理员用户 dbadmin,记录密码
创建完成后,用 DBeaver 或 Data Studio 连接测试:
-- 连接信息
-- Host: dws-cluster-xxxx.cn-north-4.dws.myhuaweicloud.com
-- Port: 8000
-- Database: postgres
-- User: dbadmin

SELECT version();  -- 验证连接

3.2 在 DWS 中建表

根据 MySQL 中的订单表结构,在 DWS 中创建对应的事实表和维度表:
-- 维度表:商品
CREATE TABLE dim_product (
    product_id   BIGINT PRIMARY KEY,
    product_name VARCHAR(200),
    category     VARCHAR(50),
    brand        VARCHAR(50),
    price        DECIMAL(10,2)
)
DISTRIBUTE BY HASH(product_id);

-- 维度表:用户
CREATE TABLE dim_user (
    user_id   BIGINT PRIMARY KEY,
    city      VARCHAR(50),
    province  VARCHAR(50),
    reg_date  DATE
)
DISTRIBUTE BY HASH(user_id);

-- 事实表:订单
CREATE TABLE fact_order (
    order_id     BIGINT,
    user_id      BIGINT,
    product_id   BIGINT,
    order_amount DECIMAL(10,2),
    order_time   TIMESTAMP,
    status       SMALLINT
)
DISTRIBUTE BY HASH(user_id)
PARTITION BY RANGE (order_time)
(
    PARTITION p202601 START ('2026-01-01') END ('2026-04-01'),
    PARTITION p202602 START ('2026-04-01') END ('2026-07-01'),
    PARTITION p202603 START ('2026-07-01') END ('2026-10-01'),
    PARTITION p202604 START ('2026-10-01') END ('2027-01-01')
);
关键设计:DWS 中 DISTRIBUTE BY 决定数据分布方式,事实表通常用关联键做 Hash 分布,避免跨节点 JOIN 时的数据重分布。

3.3 配置 CDM 迁移任务

  1. 进入 CDM 控制台 → 集群管理 → 创建集群(2U8G 足够)
  2. 创建连接:
    • 源连接:MySQL,填写业务库地址、端口、用户名、密码
    • 目的连接:DWS,填写集群地址、端口、数据库名、用户名、密码
  3. 创建迁移作业:
全量迁移(首次):
  • 源表:order_db.fact_order
  • 目的表:fact_order
  • 迁移模式:全量
  • 抽取并发数:4
增量同步(后续定时):
  • 迁移模式:增量
  • 增量字段:order_time
  • 调度周期:每 5 分钟执行一次
  • 过滤条件:order_time >= ${last_execution_time}
避坑点:增量同步依赖时间戳字段,确保 MySQL 中该字段有索引,否则每次全表扫描会很慢。

3.4 在 DWS 中构建分析视图

数据同步后,创建聚合视图供 DLV 调用:
-- 实时 GMV 和订单量
CREATE VIEW v_order_realtime AS
SELECT
    DATE_TRUNC('hour', order_time) AS hour,
    COUNT(*) AS order_count,
    SUM(order_amount) AS gmv
FROM fact_order
WHERE order_time >= CURRENT_DATE
GROUP BY DATE_TRUNC('hour', order_time);

-- 品类销售占比
CREATE VIEW v_category_sales AS
SELECT
    p.category,
    COUNT(*) AS order_count,
    SUM(f.order_amount) AS total_amount
FROM fact_order f
JOIN dim_product p ON f.product_id = p.product_id
WHERE f.order_time >= CURRENT_DATE - INTERVAL '7 days'
GROUP BY p.category;

-- 用户地域分布
CREATE VIEW v_user_region AS
SELECT
    u.province,
    COUNT(DISTINCT f.user_id) AS user_count,
    SUM(f.order_amount) AS total_amount
FROM fact_order f
JOIN dim_user u ON f.user_id = u.user_id
WHERE f.order_time >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY u.province;

3.5 用 DLV 搭建可视化大屏

  1. 进入 DLV 控制台 → 新建大屏
  2. 选择模板:选「数据大屏」→「通用模板」
  3. 添加数据源:选择 DWS,填写连接信息
  4. 拖拽组件并绑定数据:

组件
绑定视图
展示方式
数字翻牌
v_order_realtime
今日 GMV 累计
折线图
v_order_realtime
按小时订单趋势
饼图
v_category_sales
品类销售占比
地图
v_user_region
用户地域热力图
  1. 配置自动刷新:每 60 秒刷新一次
  2. 发布大屏,生成分享链接
配图建议:DLV 大屏编辑界面截图 + 最终大屏效果截图,社区对可视化类文章配图要求高。

四、验证结果


验证项
结果
CDM 增量同步延迟
5 分钟内数据可达 DWS
DWS 查询性能
千万级订单表聚合查询 < 2s
DLV 大屏刷新
60s 自动刷新,数据准确
MySQL 业务库影响
分析查询完全剥离,业务写入无阻塞
效果对比:
  • 之前:运营在 MySQL 上跑报表,单次查询 15-30s,且影响下单
  • 现在:大屏实时展示,查询走 DWS,MySQL 零压力

五、总结与可扩展

这套方案解决了三个核心问题:
  • 数据孤岛:业务数据集中到 DWS,统一分析口径
  • 查询性能:OLAP 引擎 + 分区表,聚合查询秒级返回
  • 决策效率:DLV 大屏实时展示,运营不用等报表
后续可扩展方向:
  1. 实时流处理:引入 DIS(数据接入服务)+ CloudStream,实现秒级实时计算
  2. 数据质量监控:用 DataArts Studio 做数据质量校验和告警
  3. 多维分析:在 DWS 中构建星型模型,支持任意维度钻取
  4. 历史归档:冷数据转 OBS 对象存储,降低 DWS 存储成本
  5. 权限管控:通过 DWS 行级权限 + DLV 数据脱敏,保障数据安全


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。