一,数据仓库的数据模型
1. 数据源
数据源,顾名思义就是数据的来源,互联网公司的数据来源随着公司的规模扩张而呈递增趋势,同时自不同的业务源,比如埋点采集,客户上报等。
2. ODS层
数据仓库源头系统的数据表通常会原封不动地存储一份,这称为ODS(Operation Data Store)层, ODS层也经常会被称为准备区(Staging area),它们是后续数据仓库层(即基于Kimball维度建模生成的事实表和维度表层,以及基于这些事实表和明细表加工的汇总层数据)加工数据的来源,同时ODS层也存储着历史的增量数据或全量数据。
3. DW层
据仓库明细层(Data Warehouse Detail , DWD)和数据仓库汇总层(Data Warehouse Summary, DWS)是数据仓库的主题内容。DWD和DWS层的数据是ODS层经过ETL清洗、转换、加载生成的,而且它们通常都是基于Kimball的维度建模理论来构建的,并通过一致性维度和数据总线来保证各个子主题的维度一致性。
4. DWS层
应用层汇总层主要是将DWD和DWS的明细数据在hadoop平台进行汇总,然后将产生的结果同步到DWS数据库,提供给各个应用。
二,数据采集
数据采集的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。
比较常见的就是用户行为数据的采集
先做sdk埋点,通过kafka实时采集到用户的访问数据,再用spark做简单的清洗,存入hdfs作为数据仓库的数据源之一。
三,数据存储
随着公司的规模不断扩张,产生的数据也越来越到,像一些大公司每天产生的数据量都在PB级别,传统的数据库已经不能满足存储要求,目前hdfs是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。
在离线计算方面,也就是对实时性要求不高的部分,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC/PARQUET文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapReduce要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;而在实时计算方面,flink是最优的选择,不过目前仅支持java跟scala开发。
四,数据同步
数据同步是指不同数据存储系统之间要进行数据迁移,比如在hdfs上,大多业务和应用因为效率的原因不可以直接从HDFS上获取数据,因此需要将hdfs上汇总后的数据同步至其他的存储系统,比如mysql;sqoop可以做到这一点,但是Sqoop太过繁重,而且不
管数据量大小,都需要启动MapReduce来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;阿里开源的dataX是一个很好的解决方案。
五,维度建模
维度建模的基本概念
维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法。这里牵扯到两个基本的名词:维度,事实。
1、维度
维度是维度建模的基础和灵魂,在维度建模中,将度量成为事实,将环境描述为维度,维度是用于分析事实所需的多样环境。例如,在分析交易过程中,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。
2、事实
事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。事实表中一条记录所表达的业务细节被称之为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度;一种是所表示的具体业务含义。
江苏联著实业股份有限公司(Inforcreation Co.,Ltd.)是一家以人工智能认知智能技术为基础的文化科技创新企业,以中文自然语言理解为研究基础,以语义工程为核心技术,突破机器理解瓶颈,打造机器智力定制平台,应用于基于机器智能的智能搜索引擎、基于要素分析的各种质控或风控系统、以及基于趋势分析的各种预测性应用等各类场景。推动认知智能产业的创新发展与转化落地。目前各类产品与服务已覆盖全国29个省(直辖市、自治区)