什么是数据仓库

仓库就是放东西, 数据仓库就是放数据的,各种数据,肯定是大型的,小型的肯定的没必要了就。这里的大型主要包括业务上的大,以及体积上的大。

数据本来是存储在数据库中的,特别是针对业务的数据库,Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL,这些通常是业务中常用的数据库,具有事务、一致等特性,可以支持业务的顺利进行,也就是所谓的OLTP。随着业务持久进行,以及新的业务生成,很多大的机构想做点数据挖掘的事情,因此,会考虑将更多的数据放到一起来进行挖掘,进行分析以便更好的支撑现有业务,如银行、淘宝等机构,想通过数据分析让存款更多,让销售更好,总之一个字,为了“钱”。以往的数据库在小体量上是完全可以进行数据挖掘和数据分析的,但是随着长时间的数据积累,业务的扩增,特别是细粒度的数据采集,以往的数据库在处理这些数据上有点吃力了,为此了出现了hadoop生态,如HDFS、HIVE、Spark等,就是为了更大的数据处理能力而产生的。这就是所谓的OLAP。

数据仓库与数据库面对的主题不一样,数据库主要针对业务进行设计,为的是存储业务中产生的数据,数据仓库主要是针对业务分析进行,为的是分析大量的历史数据,提取有用信息。

数据仓库与数据库的设计模式也不一样,数据库主要使用ER模型来进行设计,保证事务一致性,数据仓库则使用维度建表,使用星型模型或者雪花模型,以事实表为主,维度为辅。

目前,接触的若干大数据分析业务中,主要是面向数据仓库的,以往的方式都是基于原始的数据库进行设计和分析,然后通过数据可视化来进行一些展示功能,此方法比较快,效率高,主要是由于数据源单一,业务简单,分析的主题也比较单一。

随着接触大数据分析项目的深入,我感觉到一些时候的分析结果比较缓慢,尝试现有大数据环境是有必要了。因此才决定尝试大数据Hadoop环境来进行数据仓库的建设,来进行数据分析业务。

目前的选型主要是Hive和Clickhouse,从个人角度而言比较偏向Clickhouse,其性能也是十分了得。但是基于Hadoop的生态更加完整,从数据抽取的Sqoop\Flume,到存储的Hdfs\Hive,然后再到分析的Spark\SparkSql\HQL,具备十分完善的生态链。从长远来看,在大型项目上使用Hadoop生态还是很有必要的。

数据仓库设计包含五个方向:主题、量度、数据粒度、维度、事实表。

  • 主题:首先是主题域,就是多个相似主题的集合,如分析用户访问信息的时候,访问分析即可为一个主题域,访问设备数量、访问用户数量、访问量则为具体的主题。
  • 量度:如设备数量,访问量,以一个设备ID或者mac记作一个设备,以一次点击为一次访问,是具体的指标度量。
  • 数据粒度:是数据的最小组成单位,如一条记录,还是一小时合计一条数据,还是一个月的综合为一条数量。通常默认情况下,以最小粒度为准。
  • 维度:如分析商品销售量的时候,那么商品类型就是一个维度,销售网点也是一个维度,可以理解为要分析的影响因素。
  • 事实表:就是记录,如销售记录。
    针对这个五个内容,通常采用星型结构来设计,如下图所示


    image.png

从数据仓库的分层设计来看,数据仓库主要分为三层,首先是原始数据层ODS;然后是DW层,这里通常也会再分两层DWD和DWS,DWD比较接近原始数据,是原始数据的预处理结果,DWS比较接近应用层,是DWD层数据的初步处理结果,最后是ADS层,就是应用层,基本上这层可以支撑很快的报表、统计等需求。

以后将要入坑数仓,请各位多多指教!如有不对的地方请留言!
谢谢你这么有耐心看这么久:)

推荐阅读更多精彩内容

  • 目录一、什么是数据仓库二、数据集成:ETL三、主流的数据仓库简介 一、什么是数据仓库 我们先从一个故事开始:在很久...
    回锅肉不回锅了阅读 331评论 2 0
  • 什么时候需要用到数据仓库? 一个公司里面不同项目可能用到不同的数据源,有的存在MySQL里面,又的存在MongoD...
    dy2903阅读 17,240评论 0 7
  • 数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策...
    ItStar阅读 115评论 0 1
  • 以前,我经常给一些想知道我过去的朋友们分享我的经历。上个星期,王茹老师让我们写一篇关于我的故事的文章。 ...
    徐心老师阅读 38评论 1 2
  • 相见欢---王侯性,帝王命的哀痛; 在封建时期的古代,皇帝代表权利的巅峰,那把沁进鲜血的龙椅,更是像海妖所唱的歌声...
    至沅阅读 64评论 0 5