• 实时数据仓库==(总结)


    实时数据仓库(总结)

    1. 开源实时数仓和离线数仓的区别

    • API计算引擎

      离线数据仓库主要使用hive sql 和spark sql进行开发

      实时数据仓库主要是使用flink sql开发

    • 数据存储

      离线数据仓库保存在hdfs上

      实时数据仓库的流表的数据保存在kafka中,维表的数据保存在hbase。或者mysql中

    • 数据仓库分层

      离线数据仓库和实时数据仓库分层的规则基本一致,离线数据仓库在构建模型时,会尽量构建公共表,减少重复计算ODS,DWD,DWS,ADS

      实时数据仓库在做模型开发的时候会尽量减少使用中间层,可以降低数据的延迟,

    • 数据延时

      离线一般采用T+1模式,第二天计算前一天的数据,在项目中一般到第二天早上6点左右才能将前一天的数据处理完

      实时的延时一般在秒级别或者在分钟级别

    • 架构

      离线:hive,hadoop,spark,调度,离线涉及的组件比较少,不容易问题,出现问题容易解决

      实时:hive,kadoop,kafka,zookeeper,flink,hbase,mysql,监控,出现问题不好定位,为什么用到这么多组件:目前还没有一个成熟的开源的实时数据仓库的解决方案

    2. 项目架构

    1. 数据源:电商的业务会产生数据,数据保存在数据库中,数据库汇总的数据会不断的插入和更新

    2. 数据采集:使用canal实时监控mysql binlog 日志,将数据实时写到kafka中,数据写入的格式为 canal-json

    3. 数据存储

      • ODS,DWD,DWS的数据保存在kafka中

      • DIM和ADS数据保存在mysql或者hbase中

      • kafka中的数据默认保存7天,但是我们在项目中一般设置为3天

        同时每个分区默认设置两个副本。mysql中的数据量最好不要超过500万条

    4. 数据处理:使用flink sql处理,注意流表和维表关联的问题

    5. 数据应用 BI api:需要使用spring boot 代码对应一个表

    3. 功能模块

    • ODS:

      使用canal采集数据,在flink sql中建表,一个topic对应一个表

    • DWD:

      • 在dwd主要涉及到建模
      • 数据仓库建模使用的是星形建模
      • 事实表建模流程:
        1. 选择业务过程,选择公司的业务线创建表
        2. 声明粒度:确定每一行数据的函数,是每次还是每天,每月
        3. 确定维度:维度是后面进行指标计算的分组条件,比如时间维度,地区维度,用户维度,商品维度
        4. 确定实时:金额,数量
        5. 冗余维度:为了减少关联可以在事实表中将维度表中的信息冗余进来,比如将用户的年龄,籍贯等信息融入到事实表中
      • 支付事实表
      • 订单事实表
    • DIM:维度建模

      1. 维度退化:将多个维度退化成一个维度表
      2. 确定主维度
      3. 确定维度信息
    • ADS:

      1. 基于dwd层或者dws层的事实表统计指标
      2. 将统计好的指标统计到mysql中
      3. 供上层应用使用
      4. 支付类指标
      5. 订单类
  • 相关阅读:
    [iOS开发]NSOperation & NSOperationQueue
    MessageQueue和Looper学习
    “后Optane时代”的替代存储方案有哪些?
    阿里云 服务网格 ASM
    如何找到‘.‘ is not recognized as an internal or external command的根本原因和解决方案
    衡水袁隆平旱稻试验田 国稻种芯·中国水稻节:河北节水增收
    还天天熬夜加班做报表?其实你根本不懂如何高效做报表
    ubuntu安装mysql8.0.35过程和报错处理
    什么是IPD项目管理模式?聊聊IPD下的产品研发流程
    Dubbo3应用开发—协议(Dubbo协议、REST协议 、gRPC协议、Triple协议)
  • 原文地址:https://blog.csdn.net/weixin_48370579/article/details/126339345