提交 8842409a 作者: 张鹏

数仓建设内容

上级 3559a362
......@@ -334,8 +334,10 @@ Apache Druid 特点:
该方案中,[Apache Kylin](http://kylin.apache.org/cn/) 是 On [Apache Druid](https://druid.apache.org/docs/latest/design/index.html) 的,之所以做出这个选择,主要出于:
- 学习成本高
- 维护HBase的成本高
- HBase作为Kylin的存储方案时,Kylin无法被需要的下游服务直接读取数据
- 需求场景中实时分析要求高,HBase更适合离线非实时分析
新生代的 [Apache Druid](http://druid.io/docs/0.10.0/design/index.html) 有如下特性值得我们注意:
......@@ -352,7 +354,118 @@ Apache Druid 特点:
- DWS 汇总层
- ADS 应用数据层
>注:特定业务场景下,明细数据层和汇总数据层可并行计算处理
>注:特定场景下,如上层ODS数据规划合理时,明细数据层和汇总数据层可并行计算处理
## 6. 数据建模
### 6.1 数据仓库发展阶段
数据仓库的发展大致经历了这样的三个过程:
![image](./pics/数据仓库发展的三个阶段.jpg)
- 简单报表
>系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具
- 数据集市
>主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据
- 数据仓库
>主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持
### 6.2 建设数据模型的意义
数据仓库的建设和数据集市、简单报表建设的主要区别就在于数据模型的支持。
- 进行全面的业务梳理,改进业务流程
>
- 建立全方位的数据视角,消灭信息孤岛和数据差异
>
- 解决业务的变动和数据仓库的灵活性
>
- 帮助数据仓库系统本身的建设
>
尤其是基于当前微服务架构平台中多产品线同时研发的状况下,数据模型的建设,对于建设以数据中台为中心的业务中台,有着不可或缺的决定性的意义。
### 6.3 数仓模型建设层次
一般来说,数据仓库模型建设分为以下几个层次:
![image](./pics/数据仓库模型的层次划分.jpg)
在整个数据仓库的建模过程中,一般需要经历四个过程:
- 业务建模,生成业务模型,主要解决业务层面的分解和程序化
- 领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领域概念模型
- 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化
- 物理建模,生成物理模型,主要解决逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题
### 6.4 数仓建模阶段划分
![image](./pics/数仓建模阶段划分.jpg)
#### 6.4.1 业务建模
- 划分整个公司的业务,一般按照业务部门划分,进行各个部门之间业务工作的界定,理清各业务部门之间的关系
- 深入了解各个业务部门具体业务流程并将其程序化
- 对业务部门的工作流程和方法提出改进并程序化
- 数据建模的范围界定,整个数仓项目的目标和阶段划分
#### 6.4.2 领域概念建模
- 抽取关键业务概念,并将之抽象化
- 将抽取出的业务概念分组,按照业务主线聚合类似的分组概念
- 细化分组概念,理清分组概念内的业务流程并抽象化
- 理清分组概念之间的关联,形成完整的领域概念模型
#### 6.4.3 逻辑建模
- 业务概念实体化,并考虑其具体的属性
- 事件实体化,并考虑其属性内容
- 说明实体化,并考虑其属性内容
#### 6.4.4 物理建模
- 针对特定物理化平台,做出技术规划和调整
- 出于性能指标考虑,做出相应调整
- 针对管理需要,结合平台,做出相应调整
- 生成脚本并迭代完善
参考 [数据仓库建设中的数据建模方法](https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0803zhousb/index.html)
[PDMan 国产免费建模工具](https://my.oschina.net/skymozn/blog/1821184)
[开源建模工具 OpenSystemArchitect](http://www.codebydesign.com/ )
Data-Infomation-Knowledge-Wisdom
数据-信息-知识-智慧
hadoop - spark
hive 利用 MapReduce作为计算引擎
Presto自己开发计算引擎
Druid自己开发索引和计算引擎
spark是开源的类hadoop mapreduce通用的并行计算框架,同样也是基于分布式计算,拥有Hadoop MapReduce的所有优点
不同的是,Sparck任务的中间计算结果可以缓存在内存中,因此Spark的速度更快。开发语言采用Scala,因此直接在上面做数据处理和分析的开发成本会比较高。适合非结构化的数据查询处理。Spark可以对任何Schema进行灵活操作,适合处理规模更大的批处理任务。
Ad hoc 是一个拉丁文常用短语。这个短语的意思是“特设的、特定目的的、即席的、临时的、将就的、专案的”。这个短语通常用来形容一些特殊的、不能用于其它方面的,为一个特定的问题、任务而专门设定的解决方案
Apache Drill 通过开源的方式实现了谷歌的Dremel。Drill架构的整个思想还是通过优化查询引擎,进行快速全表扫描,以快速返回结果。
Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务运行。Hive并不适合那些需要低延迟的应用。因为内部的MapReduce非常慢。所有尝试Hive的公司,最后都会转到Impala的应用。
Impala 是实时交互SQL大数据查询工具,可以直接从HDFS或HBase中用select,join和统计函数查询数据,降低了延迟。
Presto 主要解决SQL查询引擎的问题,将SQL查询转换成分布式任务。Presto不优化存储结构,而是直接访问HDFS或者其他数据存储层。
简单查了一下Impala和Presto的查询效率,貌似Impala在速度上要优于Presto,但数据源支持不如Presto多
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论