数据系统架构-3.数据仓库设计

3.数据仓库设计

数据仓库是为了让人人都可以低成本的使用数据,按照一定标准打造的全量数据资料的集合。

目标

在这里插入图片描述

  • 数据仓库设计的目标,就是把过去已经发生的非结构化的日志数据转成结构化的数据与后端关系型的数据库里的数据资源进行有效的整合和存储;
  • 数据按照特定的逻辑生成不同层级的数据表,以供业务分析人员低成本的使用数据;
  • 良好的数仓设计可以保证逻辑的复用、节约计算资源、保证数据质量,降低数据分析成本,提高数据使用效率与价值。

开发原则

  • 避免烟囱式数据开发,优先根据主题域设计对应的数据仓库表
  • 统计数据严禁从底层数据表直接统计
  • 统一库、表、SQL规范
  • 数仓地图、逻辑文档的沉淀与推广,形成共识

数仓设计

数据仓库与传统的关系型数据库,由于应用场景与实现技术的差异,数据仓库在设计的时候大多数都是违反关系型数据库三范式进行设计的开发的。

分层

在这里插入图片描述

ODS:数据来源层,主要包含业务数据库快照数据(rawdb)、埋点数据(rawdata)、其他业务等数据。

TMP:临时层,数据处理的辅助处理层,服务于DW、DM层,主要是一些中间结果临时存储的数据,包括:计算任务的中间结果数据、ODS层轻度综合和汇总统计的数据等,定期清理。

DIM:维度数据层,主要包含一些字典表、维度数据。实例:品类字典表、城市字典表、终端类型表

DW:data warehouse,存储经过标准规范化处理(即数据清洗)后的运营数据,是基础事实数据明细层。实例:后端日志明细表、前端埋点日志明细表、mysql各业务数据经过ETL处理后的表。

DM:data market(也叫DWS:data warehouse service),数据主题层或者宽表层,按部门按专题进行划分,支持OLAP分析、数据分发等,其信息主要来源于DW 或TMP层汇总数据。实例:新激活用户业务分析表、日活用户业务分析表、历史激活用户业务分析表、用户行为轨迹表、红包业务表、交易品类来源多维表、商业广告多维分析报表

ADS:application database service,应用数据层, 面向具体应用的表,要创建在这层,可导入hbase或mysql等使用。实例:按天、小时、5分钟粒度计算汇总的结果存入mysql、hbase的报表

模型

  • 星型模型:核心是一个事实表及多个非正规化描述的维度表组成。
  • 雪花模型:是星型模型的扩展,不同的是维度表被规范化,进一步分解到附加表中
  • 大星座模型:由多个事实表组合,维表是公共的,可以被多个事实表共享。星座模型是数据仓库最常使用的模型。

数据仓库规范

库规范

数据库命名(集群名_公司名_数据分层_部门)

表规范

ODS

  • raw_业务数据库表名(保持一致)_更新方式(如果增量同步加“_inc”,全量“_full”)_时间粒度
  • log_前端/后端日志_更新方式(如果增量同步加“_inc”,全量“_full”)_时间粒度

TMP

  • tmp_数据层类型(dw|dm)_{业务过程描述}

DIM

  • dim_维度类型(cate|city|channel|group)

DW

  • 日志:dw_log_{业务主题域}_{业务过程描述}_更新方式_时间粒度
  • 业务数据库:dw_数据库类型(mysql|hbase|wtable|redis){业务主题域}{业务过程描述}_更新方式_时间粒度
  • 多数据源:dw_{业务主题域}_{业务过程描述}_更新方式_时间粒度

DM

  • dm_{数据主题域}_{业务过程描述}_更新方式_时间粒度

ADS

  • ads_{业务过程描述}_更新方式_时间粒度

数据主题域

  • 交易:trade
  • 收入:income
  • 推送:push
  • 流量:traffic
  • 营销:market
  • 服务:service
  • 商业广告:biz
  • 渠道:channel
  • 地址:address
  • 财务:finance
  • 风控:spam
  • 竞品:compete
  • ……

更新方式命名规范:

  • 增量:inc
  • 全量:full
  • ……

分区表表名时间粒度命名规范:

  • 小时(hour):1h
  • 天(day):1d
  • 周(week):1w
  • 月(month):1m
  • 季度(quarter):1q
  • 年(year):1y

分区字段: 日期分区统一命名为:dt,格式:yyyy-MM-dd or yyyy-MM or yyyy
**非分区表表名时间粒度后面加:**统一为”_0p”

字段

字段命名规范:seller_id、buyer_id、first_from、order_source、xxx_date、xxx_time

日期字段:<业务主体>_date
时间字段:<业务主体>_time
属性字段:属性自身英文单词;如:status
id 字段:<标识主体>id;
标识字段:is
<标识主体>;如:is_true
指标字段:时间周期+修饰词+原子指标
计次字段:<计数主体>_pv;如:visit_pv
排重计数字段:<计数主体>_uv;如:visit_uv
价格字段:<业务主体>_price;如:pay_price
来源字段:<业务主体>_source;如:order_source
比例字段:<业务主体>_rate;如:gmv_yoy_rate

元数据管理

1.描述哪些数据在数据仓库中;
2.定义要进入数据仓库中的数据和从数据仓库中产生的数据;
3.记录根据业务事件发生而随之进行的数据抽取工作时间安排;
4.记录并检测系统数据一致性的要求和执行情况;
5.衡量数据质量。

脉络地图

在这里插入图片描述

在收集整理了各种日志、业务系统数据之后,我们创建了自己的数据仓库,根据数据仓库的元信息等等,我们应该生成一个数据仓库核心脉络地图,以供其他人员清洗明了的掌握数据仓库的核心表逻辑与结构。当开发一个数据统计需求时,我们可以快速的定位到自己所需使用的表并清晰明了表中数据的逻辑,做到表可用、表敢用、大大降低数据仓库使用沟通成本。

实时数仓

随着技术的发展,大数据处理不断的朝着SQL化,批流合一的方向发展。我们处理数据的速度越来越快,与之对应的就是我们可以带来更快的数据产出,投入到对应的分析场景当中,提升数据时效性充分发掘数据价值。实时数仓可以为我们带来以下几个有点:

  • 整体提升数据时效性与价值
  • 接入各类实时分析查询引擎提供实时分析能力,比如 druid
  • 合理平滑的利用计算资源,无需在凌晨大量离线任务启动,造成资源使用高峰、任务堆积等待。

个人主页
上一篇 《数据系统架构-2.元数据管理》
下一篇 《数据系统架构-4.指标定义系统》

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 决策支持系统的发展 1 1.1 演化 1 1.2 直接存取存储设备的产生 2 1.3 个人计算机/第四代编程语言技术 3 1.4 进入抽取程序 3 1.5 蜘蛛网 4 1.6 自然演化体系结构的问题 5 1.6.1 数据缺乏可信性 5 1.6.2 生产率问题 8 1.6.3 从数据到信息 10 1.6.4 方法的变迁 11 1.7 体系结构设计环境 12 1.7.1 体系结构设计环境的层次 13 1.7.2 集成 14 1.8 用户是谁 15 1.9 开发生命周期 15 1.10 硬件利用模式 16 1.11 建立重建工程的舞台 16 1.12 监控数据仓库环境 17 1.13 小结 19 第2章 数据仓库环境 20 2.1 数据仓库的结构 22 2.2 面向主题 23 2.3 第1天到第n天的现象 26 2.4 粒度 28 2.4.1 粒度的一个例子 29 2.4.2 粒度的双重级别 31 2.5 分割问题 34 2.6 样本数据库 34 2.7 数据分割 35 2.8 数据仓库中的数据组织 37 2.9 数据仓库—标准手册 41 2.10 审计和数据仓库 41 2.11 成本合理性 41 2.12 清理仓库数据 42 2.13 报表和体系结构设计环境 42 2.14 机遇性的操作型窗口 43 2.15 小结 44 第3章 设计数据仓库 45 3.1 从操作型数据开始 45 3.2 数据/过程模型和体系结构设计环境 49 3.3 数据仓库和数据模型 50 3.3.1 数据模型 52 3.3.2 中间层数据模型 54 3.3.3 物理数据模型 58 3.4 数据模型和反复开发 59 3.5 规范化/反规范化 60 3.6 数据仓库中的快照 65 3.7 元数据 66 3.8 数据仓库中的管理参照表 66 3.9 数据周期 67 3.10 转换和集成的复杂性 70 3.11 触发数据仓库记录 71 3.11.1 事件 72 3.11.2 快照的构成 72 3.11.3 一些例子 72 3.12 简要记录 73 3.13 管理大量数据 74 3.14 创建多个简要记录 75 3.15 从数据仓库环境到操作型环境 75 3.16 正常处理 75 3.17 数据仓库数据的直接访问 76 3.18 数据仓库数据的间接访问 76 3.18.1 航空公司的佣金计算系统 76 3.18.2 零售个性化系统 78 3.18.3 信用审核 80 3.19 数据仓库数据的间接利用 82 3.20 星型连接 83 3.21 小结 86 第4章 数据仓库中的粒度 87 4.1 粗略估算 87 4.2 粒度划分过程的输入 88 4.3 双重或单一的粒度? 88 4.4 确定粒度的级别 89 4.5 一些反馈循环技巧 90 4.6 粒度的级别—以银行环境为例 90 4.7 小结 95 第5章 数据仓库和技术 96 5.1 管理大量数据 96 5.2 管理多介质 97 5.3 索引/监视数据 97 5.4 多种技术的接口 97 5.5 程序员/设计者对数据存放位置的控制 98 5.6 数据的并行存储/管理 99 5.7 元数据管理 99 5.8 语言接口 99 5.9 数据的高效装入 99 5.10 高效索引的利用 100 5.11 数据压缩 101 5.12 复合键码 101 5.13 变长数据 101 5.14 加锁管理 102 5.15 单独索引处理 102 5.16 快速恢复 102 5.17 其他的技术特征 102 5.18 DBMS类型和数据仓库 102 5.19 改变DBMS技术 104 5.20 多维DBMS和数据仓库 104 5.21 双重粒度级 109 5.22 数据仓库环境中的元数据 109 5.23 上下文和内容 111 5.24 上下文信息的三种类型 111 5.25 捕获和管理上下文信息 113 5.26 刷新数据仓库 113 5.27 小结 114 第6章 分布式数据仓库 116 6.1 引言 116 6.2 局部数据仓库 118 6.3 全局数据仓库 119 6.4 互斥数据 121 6.5 冗余 123 6.6 全局数据存取 124 6.7 分布式环境下其他考虑因素 126 6.8 管理多个开发项目 127 6.9 开发项目的性质 127 6.10 分布式数据仓库 130 6.10.1 在分布的地理位置间协调开发 131 6.10.2 企业数据分布式模型 132 6.10.3 分布式数据仓库中的元数据 134 6.11 在多种层次上建造数据仓库 134 6.12 多个小组建立当前细节级 136 6.12.1 不同层不同需求 138 6.12.2 其他类型的细节数据 140 6.12.3 元数据 142 6.13 公用细节数据采用多种平台 142 6.14 小结 143 第7章 高级管理人员信息系统数据仓库 144 7.1 一个简单例子 144 7.2 向下探察分析 146 7.3 支持向下探察处理 147 7.4 作为EIS基础的数据仓库 149 7.5 到哪里取数据 149 7.6 事件映射 152 7.7 细节数据和EIS 153 7.8 在EIS中只保存汇总数据 154 7.9 小结 154 第8章 外部数据/非结构化数据与 数据仓库 155 8.1 数据仓库中的外部数据/非结构化数据 157 8.2 元数据和外部数据 158 8.3 存储外部数据/非结构化数据 159 8.4 外部数据/非结构化数据的不同 组成部分 160 8.5 建模与外部数据/非结构化数据 160 8.6 间接报告 161 8.7 外部数据归档 161 8.8 内部数据与外部数据的比较 161 8.9 小结 162 第9章 迁移到体系结构设计环境 163 9.1 一种迁移方案 163 9.2 反馈循环 167 9.3 策略方面的考虑 168 9.4 方法和迁移 171 9.5 一种数据驱动的开发方法 171 9.6 数据驱动的方法 172 9.7 系统开发生命周期 172 9.8 一个哲学上的考虑 172 9.9 操作型开发/DSS开发 173 9.10 小结 173 第10章 数据仓库设计复查要目 174 10.1 进行设计复查所涉及的问题 175 10.1.1 谁负责设计复查 175 10.1.2 有哪些议事日程 175 10.1.3 结果 175 10.1.4 复查管理 175 10.1.5 典型的数据仓库设计复查 176 10.2 小结 185

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值