大数据时代,人人离不开数据,然而数据是怎么组织治理,如何为咱们的生存服务的呢?作为一个数据从业者,基于我集体的了解文言下。
数据与生存
比照线下时代,数据从两个方面晋升了大家的生存:
- 交易,技术上对应的术语叫联机事务处理(OLTP online transaction processing),数据是交易系统中流淌的血液,他能够对应你在电商上的一个订单、一件商品、一笔领取流水,通常应用数据库进行数据管理
- 剖析,技术上对应的术语叫联机剖析解决(OLAP online analysis processing),数据是剖析零碎的原料,通过数据分析电商上能够给你举荐商品、进行产品定价、销量预测,通常应用数据仓库进行数据管理
本文从上面几个角度给大家介绍下数据仓库。
什么是数仓
数据库(次要指关系型数据库)为交易系统提供底层服务,反对数据的增删查改,且要求高度的范式保障(具备 ACID 个性,即原子性、一致性、隔离性、持久性),实现了疾速的事务响应和吞吐;剖析系统对数据的要求:
- 数据体量微小(能够理解大数据的 4V 实践)
- 数据查问为主,且长久的数据存储(通常不进行删除、更新操作)
- 数据的设计更好的反对剖析决策
数据仓库就是一种面向数据分析决策需要的系统性解决方案,用数据模型形容映射事实世界,面向不同的场景制订数据建设标准,同时确保高效平安稳固的数据生产。
数据模型
后面提到数据模型是对事实世界的映射,常见的模型有:层次模型、网状模型、关系模型:
- 关系模型,对应关系型数据库,用表格形式映射事实世界;通过表、行、字段等示意了显示世界中的对象、对象属性、对象之间的关系;构造简略、级联查问效率低
- 网状模型,对应图数据库,结构复杂,不不便保护;典型的数据库有 neo4j titan 等,在社交网络分析中有肯定利用场景
- 层次模型,用树来映射事实世界;查找不便、构造板滞
目前利用最宽泛的是关系模型,具体到数据仓库有有两种建模形式:
Inmon 企业信息工厂架构 vs Kimball 总线体系结构
建模形式 | 范式建模 | 维度建模 |
---|---|---|
特点 | 更像数据库 少冗余 字段只依赖主键 | 一系列的事实表 + 维度表,构造上冗余较多,绝对灵便 |
建设形式 | 自顶而下的建设形式 | 自下而上形式构建 |
业务适应 | 适应业务变动偏弱 | 较好适应业务变动 |
模型 | 3NF 范式模型 | 星型模型或者雪花模型 |
目前支流互联网的数据仓库建设都抉择维度模型,或者在公共数据域采纳绝对固定的范式建模,在数据应用层采纳更灵便的维度模型。
维度模型
维度模型中最重要的两个概念:
- 维度—看世界、事务的角度;档次维、变动维、角色扮演维、分类维、其余类
- 事实—对世界、事务的度量
维度模型常见建模形式:
- 星型模型(上图就是典型的星型模型)
- 雪花模型(事实 - 维度 - 子维度组合)
- 星座模型(多事实多维度)
- 数据立方体 cube(预处理 疾速剖析应用)
维度模型的设计
通过数据来映射事实世界,进行维度建模的时候通常遵循上面的设计流程:
从业务需要登程,将业务流程进行拆分,颗粒度细到咱们能够用维度 + 事实来形容事物,将事实世界中事物形象为具体的表、字段,并通过示例数据、业务规定进行辅助阐明
数仓的分层
通过维度模型咱们构建了事实事物的数据映射后,事物倒退的过程中咱们一直的进行数据采集,最终的数据量是十分微小的(4V 的 volume),通常这种数据是无奈间接进行剖析应用的,咱们须要对数据进行逐层的收敛聚合,于是产生了数仓分层的概念。
在介绍数仓分层之前咱们先介绍下数据仓库的管理工具 Hive
数据仓库与 hive
hive 基于 hadoop 的数据仓库工具,用来进行数据提取、转化、加载,能够存储、查问和剖析存储在 hadoop 中的大规模数据的机制;hive 将 hdfs 中结构化的数据文件映射为一张张数据库表,提供 sql 查问性能,将 sql 转换为 mr 计算(交叉了 hadoop 的整个体系,给用户相熟的 SQL 形式进行数据的解决和交互)
hadoop 三大模块:hdfs 分布式存储、yarn 调度零碎、mr 计算零碎。应用 hadoop 体系构建数据仓库能够反对大容量、分布式的存储和计算
数仓分层及复用
常见的数仓分层:
- 根底层 /ods 层数据,个别是通过 datasink 的技术将 oltp 零碎中记录的数据、日志等转移到数仓,数据的转移有离线、实时等多种解决计划,具体参考数据时效性要求、数据容量以及解决老本
- 仓库层,以事实表 + 维度表的形式进行数据的治理,其中的事实表又辨别原子事实表、汇集事实表(di)、累积事实表(df)
- 主题层 / 应用层,依照业务主题进行数据组织,必要状况会应用宽表进行事实和维度的组合,主题层也会依照剖析的需要进行数据的预聚合,造成一系列的指标表
在数据分层设计的时候要确保:
- 尽量的数据复用,即同层外部确保数据少冗余
- 层之间的边界确定,思考数据的容量、解决的老本、查问的要求等
为了晋升数据处理的速度在引擎层面、计算层面也有一些晋升的技术:
- 引擎层:通过 spark 进行更疾速的计算(代替 MR);通过 flink 计算引擎提供实时的数据流解决能力
- 存储层:druid、clickhouse、hbase 等 kv、列式存储技术在数据查问、剖析场景提供更快的处理速度
以上介绍数据仓库的一些基本概念,下一篇咱们介绍如何应用 hive sql 查问获取数据仓库中的数据。
对于作者:
大家好,我是数据展博,致力于在生存和工作中更好的了解数据、利用数据,让数据谈话,用数据赚钱、数据使生存更美妙。