阿里巴巴大数据之路-维度设计
维度设计
维度设计基础
维度的基本概念
维度是维度建模的基础和灵魂。
将度量称为“事实” ,将环境描述为“维度”
维度所包含的表示维度的列,称为维度属性
- 查询约束条件
- 分组和报表标签生成的基本来源
- 据易用性的关键
维度使用主键标识其唯一性
代理键
- 不具有业务含义的键
- 一般用于处理缓慢变化维
- 前台应用系统:商品ID代理键
自然键
- 具有业务含义的键
- 数据仓库系统:商品ID自然键
维度的基本设计方法
选择维度或新建维度
- 维度的唯一性
确定主维表
- 一般是 ODS 表
- 直接与业务系统同步
确定相关维表
- 与主维表存在关联关系
确定维度属性
二个阶段
- 第一从相关维表中选择维度属性或生成新的维度属性
- 第二从主维表 中选择维度属性或生成新的维度属性
确定维度属性提示
尽可能生成丰富的维度属性
尽可能多地给出包括一些富有意义的文字性描述
- 一般是编码和文字同时存在
区分数值型属性和事实
- 查询约束条件或分组统计为维度
- 参与度量的计算为事实
- 数值型字段是离散值多为维度
- 数值型宇段是连续值多为事实
尽量沉淀出通用的维度属性
- 提高下游使用的方便性
- 减少复杂度
- 避免下游使用解析时各自逻辑口径不一致
维度的层次结构
- 最底层代表最低级别的详细信息
- 最高层代表最高级别的概要信息
- 多为嵌入式层次结构
规范化和反规范化
雪花模式
- 属性层次被实例化为一系列维度,而非单一的维度
- 多用于联机事务处理系统( OLTP )底层结构
- 节约存储,减少数据冗余
- 雪花模型图
单一维
- 将雪花模型进行单一维度宽表化处理
- 多用于OLTP 系统:空间换分析查询性能
- 方便、易用且性能好
- 单一维度反规则化图
一致性维度和交叉探查
交叉探查定义
- 日志数据域:统计了商品维度一天的 PV 和UV
- 易数据域,:统计了商品维度的一天的下单 GMV
- 将不同数据域的商品的事实合并在一起进行数据探查,如计算转化率,成为交叉探查
交叉探查问题
- 不同数据域使用维度不一致
维度一致性表现
共享维表
- 公共维度交叉探查
一致性上卷
- 一个维度属性是另 一个维度属性的子集
- 两个维度的公共维度属性结构和内容相同
交叉属性
- 两个维度具有部分相同的维度属性
维度设计高级主题
维度整合
命名规范的统一
- 表名 、 字段名等统一
字段类型的统一
- 相同和相似字段的字段类型统一
公共代码及代码值的统一
- 公共代码及标志性宇段的数据类型、命名方式等统一
业务含义相同的表的统一
物理实现原则
- 将业务关系大、源系统影响差异小的表进行整合
- 将业务关系小、源系统影响差异大的表进行分而治之
集成方式
采用主从表的设计方式
两个表或多个表都有的字段放在主表(主要基本信息)
从属信息分别放在各自的从表中
主表主键
复合主键(建议采用)
- 源主键和系统或表区别标志
唯一主键
- 源主键和系统或表区别标志生成标识
直接合并
共有信息和个性信息都放在同一个表中
如果表字段的重合度较低,则会出现大量空值,对于存储和易用性会有影响,需谨慎选择。
不合并
- 源表的表结构及主键等差异很大
不同维度类目属性无法统一,引出如何设计维度?
二种方案
- 方案 1 是将维度的不同分类实例化为不同的维度,同时在主维度中保存公共属性
- 方案 2 是维护单一维度,包含所有可能的属性
选择方案三个原则
扩展性
- 当源系统、业务逻辑变化时,能通过较少的成本快速扩展模型,保持核心模型的相对稳定性
- 高内聚、低耦合思想指导
效能
- 性能和成本方面取得平衡
- 牺牲一定的存储成本,达到性能和逻辑的优化
易用性
- 模型可理解性高、访问复杂度低
- 用户能够方便地从模型中找到对应的数据表,并能够方便地查询和分析。
水平拆分
两个依据
第一:维度的不同分类的属性差异情况
当维度属性随类型变化较大时
建议采用方案 1:所有可能维度建立在一个维度不切实际
定义一个主维度用于存放公共属性
- 公共属性一般比较稳定,保证了核心维度的稳定性
同时定义多个子维度包含各自的特殊属性
- 通过扩展子维度的方式,保证了模型的扩展性
第二:业务的关联程度
- 相关性较低的业务,耦合在一起弊大于利
垂直拆分
- 主表:存放稳定 、 产出时间早、热度高的属性
- 从表:存放变化较快、产出时间晚、热度低的属性
历史归档
同前台归档策略(算法归档)
问题点
- 前台归档策略复杂,实现成本较高
- 策略可能会经常变化 ,导致数据仓库归档算法也要随之变化
- 维护和沟通成本较高
适用场景
- 前台归档策略逻辑较为简单
- 且变更不频繁的情况
同前台归档策略(binlog解析)
处理方式
- binlog日志解析获取每日增量,通过增量 merge方式获取最新的全量数据
- 可以使用增量日志的删除标志 , 作为前台数据归档的标志
适用场景
- 物理删除只有在归档时才执行,应用中的删除只是逻辑删除
数仓自定义策略
- 原则是尽量比前台应用晚归档、少归档
- 避免出现数据仓库中已经归档的数据再次更新的情况
维度变化
缓慢变化维
重写维度值
- 不保留历史数据
- 始终取最新数据
插人新的维度行
- 保留历史数据
- 维度值变化前的事实和过去的维度值关联
- 维度值变化后的事实和当前的维度值关联
添加维度列
- 保留历史数据
- 新增维度列:新维度值、旧维度值
快照维表
每日一份维度快照
优劣分析
- 简单而有效,开发和维护成本低
- 使用方便,理解性好
- 存储的极大浪费
极限存储
历史拉链表存储
拉链表处理
透明化
- 查询视图操作或语法树解析
分月做历史拉链表
- 每月初重新分区拉链表处理
- 减少分区存储
优劣分析
产出效率很低,大部分极限存储通常需要t-2
变化频率高的数据并不能达到节约成本的效果
结合劣势处理
- 在做极限存储前有一个全量存储表 ,全量存储表仅保留最近一段时间的全量分区数据
- 对于部分变化频率频繁的宇段需要过滤
微型维度
将一部分不稳定的属性从主维度中移出
将它们放置到拥有自己代理键的新表中来实现的
处理逻辑举例
- 用户 VIP 等级:8 个值
- 用户信用评价等级:18 个值
- 两者组合生成:代理键 1~ 144
未使用&劣势分析
- 局限性:计算所有可能值的组合加载,必须是枚举
- ETL 逻辑复杂:维护开发成本高
- 破坏了维度的可浏览性
特殊维度
递归层次
层次结构扁平化
所属层级及结构铺平化结构处理
存在问题
- 钻或下钻之前,需知类目层级
- 向下钻取,填充向上类目无法统计
- 固定层级结构,扩展性差
层次桥接表
- 加工逻辑复杂,使用逻辑复杂
行为维度
采用算法计算得到
- 最近一段时间消费地点
- 行为维度\事实衍生的维度”
行为维度划分
另一个维度的过去行为
- 买家最近一次访问淘宝的时间
- 最近一次发生淘宝交易的时间等
快照事实行为维度
- 买家从年初截至当前的淘宝交易金额
- 买家信用分值
- 卖家信用分值
分组事实行为维度
将数值型事实转换为枚举值
- 买家从年初截至当前的淘宝交易金额按照金额划分的等级
- 买家信用分值按照分数划分得到的信用等级等
复杂逻辑事实行为维度
通过复杂算法加工或多个事实综合加工得到
- 买家主营类目
- 商品热度根据访问、收藏、加人购物车、交易等情况综合计算得到
行为维度两个处理原则
- 第一 ,避免维度过快增长
- 第二,避免稠合度过高
多值维度
第一种处理方式是降低事实表的粒度
- 子订单粒度
- 采用分摊到子订单的方式
第二种处理方式是采用多字段
- 通过预留宇段的方式
第三种处理方式是采用较为通用的桥接表
- 灵活高、扩展性更好,但逻辑复杂、开发和维护成本较高
- 双重计算的风险
多值属性
维表中的某个属性字段同时有多个值,称之为“多值属性”
常见三种处理方式
第一种处理方式是保持维度主键不变,将多值属性放在维度的一个属性字段中
- 通过 k-v 对的形式放
- 扩展性好,但数据使用较为麻烦
第二种处理方式也是保持维度主键不变,但将多值属性放在维度的多个属性字段中
- 数量不固定,则可以采用预留字段的方式
- 扩展性较差
第三种处理方式是维度主键发生变化, 一个维度值存放多条记录
- 扩展性好,使用方便
- 考虑数据的急剧膨胀情况
杂项维度(Junk Dimension)
杂项维度是由操作型系统中的指示符或者标志宇段组合而成的,一般不在一致性维度之列
举列说明
- 淘宝交易订单的交易类型宇段
- 话费充值、司法拍卖、航旅等类型
- 支付状态、物流状态
- 直接保存在交易表中
将这些字段建立到一个维表中,在事实表中只需保存一个外键即可
总结:
阿里大数据之道里面说了这么多,关于维度建设的核心思想两点:1、主从维表的确定的。2、主从表维度的稳定性,使用度广,脏乱差的数据从表处理。
大家在实践过程中根据自己的应用差异定义主从维表的逻辑,再根据统计与分析逻辑确定维表的更新机制以及维度结构。
阿里巴巴大数据之路-维度设计相关推荐
- 基于OneData的数据仓库建设(阿里巴巴大数据之路)
目录 1- 指导思想 2- 数据调研 2.1- 业务调研 2.2- 需求调研 3- 架构设计 3.1- 数据域的划分 3.2- 构建总线矩阵 4- 指标体系搭建 4.1- 基本概念 4.2- 操作细则 ...
- 阿里巴巴大数据之路读书分享
阿里巴巴大数据之路读书分享 文章目录 阿里巴巴大数据之路读书分享 前言 阿里巴巴大数据系统的体系架构图及介绍 数据采集层 数据采集 数据传输 数据计算层 离线数据开发 实时数据开发 数据服务层 数据应 ...
- 阿里巴巴大数据之路——数据模型篇
阿里巴巴大数据之路--数据模型篇 一.概述 1.什么是数据模型? 数据模型就是数据的组织和存储方法.主要关注的是从业务.数据存取和使用角度合理存储数据. 2.典型数据仓库建模方法论 ER模型 纬度模型 ...
- 阿里巴巴大数据之路读书笔记——用户画像的定义
用户画像 在阿里巴巴旗下的淘宝网.虾米音乐上都不乏个性化推荐场景,淘 宝.天猫平台上的众多商家则需要通过用户调研和产品研发来把握产品 的目标人群和人群偏好,从而对用户投其所好.对用户有深刻的理解是 网 ...
- 《阿里巴巴大数据之路》记录--数据模型篇
维度设计 维度整合 数仓优化经常通过维度的整合和拆分 步骤:确定粒度,选择维度,确定主维度,确定相关维度,确定维度属性 水平整合:数据源来自不同数据集.比如不同的部门的不同数据集,但是都会有商品价格, ...
- 阿里巴巴大数据之路-元数据
元数据 元数据概述 元数据定义 元数据( Metadata )是关于数据的数据 打通了源数据.数据仓库.数据应用,记录了数据从产生到消费的全过程 主要记录数据仓库中模型的定义.各层级间的映射关系.监控 ...
- 福利直播 | 12年阿里巴巴大数据之路亲历者详解数据中台
疫后新生! 春暖花开之时,生存和发展成为众多企业面临的至急难题. 业务停摆已久,对内如何提升效率,对外如何运营获客? 重新按下启动键,谁能更快补上落后的进度,先人一步? 与自己较量,与对手竞速,在看得 ...
- 大数据之路读书笔记-10维度设计
大数据之路读书笔记-10维度设计 文章目录 大数据之路读书笔记-10维度设计 10.1 维度设计基础 10.1.1 维度的基本概念 10.1.2 维度的基本设计方法 10.1.3 维度的层次结构 10 ...
- 品《阿里巴巴大数据实践-大数据之路》一书(上)
7月有人推荐阿里巴巴刚出的这本书<阿里巴巴大数据实践-大数据之路>,到亚马逊一看才是预售状态,拍下直到8月才拿到. 翻看目录一看,欢喜的很,正好出差两天就带在身边,由于在机场滞留超过12个 ...
- 《大数据之路:阿里巴巴大数据实践》
<大数据之路:阿里巴巴大数据实践>语录 目录 一.数据采集 1 ◆日志采集 1 ▼浏览器的页面日志采集 1 ▼无线客户端的日志采集 2 (1) 页面事件 3 (2) 控件点击事件 3 (3 ...
最新文章
- centos6.5下载卸载mysql,centos 6.5卸载Mysql
- Flask----SQLAlchemy
- PHP基本连接数据库
- Redis操作Set的相关API
- 参数名称 java_java – 具有重要名称的WSDL中的参数名称
- 技术生态两手抓,打造面向未来的企业级领先数据库
- androidstudio自带git用法_Android Studio使用Git版本控制github
- 反编译DLL。并且修改DLL内容
- 使用win10远程控制ubuntu16.04
- 资管新规 2018年4月27日
- JavaWeb项目启动时,自动执行指定方法
- 解决win10新装系统无法登录微软账户及microsoft store
- windows11搜索按钮回退
- Module parse failed: Unexpected token(双问号无法识别)
- 【matlab】:matlab的linspace函数解析
- 三星礼包 android,SAMSUNG 三星 Galaxy S8 智能手机 移动合约版(伪开箱)
- 社区计算机义务维修策划书,义务维修电脑策划书.doc
- antd vue表单验证_ant design vue框架中自定义表单或单个表单框验证
- 数通学习笔记1 - 数据通信网络基础
- linux服务器jdk版本查看_linux如何查看jdk版本