维度(dimension):常用于where查询条件,是人们观察数据的特定角度,是考虑问题时的一类属性。
度量(measure):即按照维度标记,用于描述事实本身的数据。
事实(Fact):由measure信息组成并按照维度划分的表称为Fact表
常用的数据模型包括星型模型和雪花型模型。
事实表与维表:
数据流:
数据采集 --- 数据接入 --- 数据存储 --- 数据建模 --- 数据开发
建设方式:
自上而下, 自下而上。
需求调研 - 业务建模 - 主题划分
结构设计 - 逻辑建模 - 层次结构划分 (分为四层(base ods , mds ,应用数据层 ), 多维建模,大宽表)
结构落地 - 物理建模 - 最终设计文档 (基于hive建模,具体的表结构, 或者目录+parquet)
根据业务需求,选择相应的建模方法进行建模,建模方法如下。
建模方法:
实体建模(ER)
维度建模 (数据预处理复杂,表连接查询速度慢)
DataVault
Anchor模型
面向主题的3NF模型。
数据仓库之父Immon的方法从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,它与OLTP系统中的3NF的区别,在于数据仓库中的3NF上站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象,它更多的是面向数据的整合和一致性治理,正如Immon所希望达到的:“single version of the truth”。
维度模型是数据仓库领域另一位大师Ralph Kimall所倡导,他的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling,中文名《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。
典型的代表是我们比较熟知的星形模型,以及在一些特殊场景下适用的雪花模型。
步骤:
选择分析决策的业务过程。
选择粒度
选择维度
选择事实 -分析需要衡量的指标。
DataVault是Dan Linstedt发起创建的一种模型方法论,它是在ER关系模型上的衍生,同时设计的出发点也是为了实现数据的整合,并非为数据决策分析直接使用。它强调建立一个可审计的基础数据层,也就是强调数据的历史性可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时也基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型应对源系统变更的扩展性。
它主要由:Hub(关键核心业务实体)、Link(关系)、Satellite(实体属性) 三部分组成 。
相关书籍: Data Vault modeling Guide
Anchor模型是由Lars. Rönnbäck设计的,初衷是设计一个高度可扩展的模型,核心思想:所有的扩展只是添加而不是修改,因此它将模型规范到6NF,基本变成了K-V结构模型。
Anchor模型由:Anchors 、Attributes 、Ties 、Knots 组成,相关细节可以参考《AnchorModeling-Agile Information Modeling in Evolving Data Environments》
数据监控 - 保证数据稳定
规范设计 -开发一致性
开发模板和工具 - 提升开发效率 (补数,对数)
元数据--- 解决数据易用
调度系统 - 解决程序依赖
数据未生成
数据总条数异常
某渠道或来源数据异常
数据格式异常
同比环比异常
根据azakaban报警信息
任务执行完后验证(同比,环比,验证,报警)
命名规范
数据目录结构规范
程序目录规范
处理流程规范
日期获取,同比环比日期获取
删除文件操作
结果数据入库
补数工具
对数工具
基础元数据
业务元数据(表结构描述为文档)
调度系统:
azkaban调度
业务建模 - 主题划分
层次划分
BASE层: 存储每天的增量数据和变更数据,如Canal接收的业务变更日志, 按天创建分区。
ODS层: 明细数据 (数据清洗,转换,字段拆分 ),轻粒度的汇总。抽象出来一些通用的维度:时间、ip、id,并根据这些维度做一些统计值。
MDS:分主题: 宽表,维表+事实表
RPT: 生成特征, 应用的数据 , OLAP 决策分析,数据挖掘。
(一个维表可以给多个事实表使用)
数据仓库使用kylin做多维数据分析。
数据仓库可视化:zeppelin + kylin 做可视化。
数据仓库定义:
面向主题: 用户主题(用户留存分析,用户画像,会员分析),行为主题,订单主题,库存主题
集成数据使用于OLAP离线分析场景
用于决策分析,数据挖掘,报表统计
数据仓库架构:
数据接入:
部署:
Apache(社区版) (目前使用)
CDH (Cloudera)
HDP (Hortonworks)
日常监控、数据对账、性能监控。
(日常监控最重要)
日常监控内容:
数据落地监控
数据掉0监控:实际扩展一下就是数据量阈值监控,少于某个量就告警
重复数据监控:很多表一定要监控重复数据的,这点至关重要。
关键指标监控
数据同比环比监控
这是一些常用的监控,可以做一个规则引擎,上面提到的都做到规则里面,哪个表需要了就配置一下, 然后执行引擎去执行。
规则引擎:
Sql模板 :提前配置好大部分的sql模板,然后需要监控哪张表了就在这张表配置一下就行。
元数据:Hive表的行数都是在元数据库中有存放的,我们可以直接通过Hive的元数据来抓取表的每天的数据量的。
自定义模板
执行引擎:
1.sql执行:
提前配置好大部分的sql模板,然后需要监控哪张表了就在这张表配置一下就行。
具体的执行引擎的话可以考虑presto或者spark sql,特别大的任务可以考虑hive。
2.直接获取数据量
Hive是有元数据管理的,它的元数据库中是记录Hive的所有表的记录数的,这些记录数可以直接用作数据量相关的监控,比如数据掉零、数据量环比同比、数据量趋势等。
联系客服