数据仓库多维数据模型的设计

上传人:hs****ma 文档编号:432586876 上传时间:2023-09-21 格式:DOCX 页数:14 大小:103.78KB
返回 下载 相关 举报
数据仓库多维数据模型的设计_第1页
第1页 / 共14页
数据仓库多维数据模型的设计_第2页
第2页 / 共14页
数据仓库多维数据模型的设计_第3页
第3页 / 共14页
数据仓库多维数据模型的设计_第4页
第4页 / 共14页
数据仓库多维数据模型的设计_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《数据仓库多维数据模型的设计》由会员分享,可在线阅读,更多相关《数据仓库多维数据模型的设计(14页珍藏版)》请在金锄头文库上搜索。

1、1.1、主题(Subject)主题就是指我们所要分析的具体方面。例如:某年某月某地区某机型某款 App 的安装 情况。主题有两个元素:一是各个分析角度(维度),如时间位置;二是要分析的具体量度 该量度一般通过数值体现,如App安装量。1.2、维( Dimension)维是用于从不同角度描述事物特征的,一般维都会有多层(Level:级别),每个Level 都会包含一些共有的或特有的属性(Attribute),可以用下图来展示下维的结构和组成:以时间维为例,时间维一般会包含年、季、月、日这几个Level,每个Level 一般都会有 ID、NAME、DESCRIPTION 这几个公共属性,这几个公共

2、属性不仅适用于时间维,也同样表 现在其它各种不同类型的维。Attributes1.3、分层( Hierarchy)OLAP 需要基于有层级的自上而下的钻取,或者自下而上地聚合。所以我们一般会在维的基础上再次进行分层,维、分层、层级的关系如下图:DimensionTotalMcnnberlMfrmbcrZMemberiTotal每一级之间可能是附属关系(如市属于省、省属于国家),也可能是顺序关系(如天周 年),如下图所示:allallBritish. ColumbiaNew YorkVictoriaTorontoOttawaQllinoiVimcouverNew Yorl|-(Buffjlo|

3、(ChicagnlocatwncounfTyprovince_ or staffOnliirio1.4、量度量度就是我们要分析的具体的技术指标,诸如年销售额之类。它们一般为数值型数据。我们或者将该数据汇总,或者将该数据取次数、独立次数或取最大最小值等,这样的数据称 为量度。1.5、粒度数据的细分层度,例如按天分按小时分。1.6、事实表和维表事实表是用来记录分析的内容的全量信息的,包含了每个事件的具体要素,以及具体发生的事情。事实表中存储数字型ID以及度量信息。 维表则是对事实表中事件的要素的描述信息,就是你观察该事务的角度,是从哪个角度 去观察这个内容的。事实表和维表通过ID相关联,如图所示:

4、PK 时 PHD地域牡Pt地域4mL/lKPFK4P&FK5QflJD地邮 用户ID严SJD 支KID阳隣国 实忖金師1川口维用户ID0刖如Ff: / 用户信息K产晶川产需类型严拈瞩性PK支时ID茨付右式 1如1.7、星形/雪花形/事实星座这三者就是数据仓库多维数据模型建模的模式上图所示就是一个标准的星形模型。雪花形就是在维度下面又细分出维度,这样切分是为了使表结构更加规范化。雪花模式 可以减少冗余,但是减少的那点空间和事实表的容量相比实在是微不足道,而且多个表联结 操作会降低性能,所以一般不用雪花模式设计数据仓库。事实星座模式就是星形模式的集合,包含星形模式,也就包含多个事实表。1.8、企业

5、级数据仓库/数据集市企业级数据仓库:突出大而全,不论是细致数据和聚合数据它全都有,设计时使用事实 星座模式数据集市:可以看做是企业级数据仓库的一个子集,它是针对某一方面的数据设计的数 据仓库,例如为公司的支付业务设计一个单独的数据集市。由于数据集市没有进行企业级的 设计和规划,所以长期来看,它本身的集成将会极其复杂。其数据来源有两种,一种是直接 从原生数据源得到,另一种是从企业数据仓库得到。设计时使用星形模型2.1、确定主题主题与业务密切相关,所以设计数仓之前应当充分了解业务有哪些方面的需求,据此确 定主题。2.2、确定量度在确定了主题以后,我们将考虑要分析的技术指标,诸如年销售额之类。量度是

6、要统计 的指标,必须事先选择恰当,基于不同的量度将直接产生不同的决策结果。2.3、确定数据粒度考虑到量度的聚合程度不同,我们将采用“最小粒度原则”,即将量度的粒度设置到最 小。例如如果知道某些数据细分到天就好了,那么设置其粒度到天;但是如果不确定的话 就将粒度设置为最小,即毫秒级别的。2.4、确定维度设计各个维度的主键、层次、层级,尽量减少冗余。2.5、创建事实表事实表中将存在维度代理键和各量度,而不应该存在描述性信息,即符合“瘦高原则”即要求事实表数据条数尽量多(粒度最小),而描述性信息尽量少。3、数据仓库-全量表全量表:保存用户所有的数据(包括新增与历史数据) 增量表:只保留当前新增的数据

7、 快照表:按日分区,记录截止数据日期的全量数据 切片表:切片表根据基础表,往往只反映某一个维度的相应数据。其表结构与基础表结 构相同,但数据往往只有某一维度,或者某一个事实条件的数据3.1、更新插入算法更新插入(主表)算法适用于保留最新状态表的处理。 案例:银行账户余额表,全表表大约8000 万,非结息日每日变动100 万,结息日变动 2000 万。非结息日:它是指根据主键(或指定字段)进行数据对比,如果增量表存在记录,则更新 原全量表,否则插入数据。ETL更新的优化? Merge?结息日:新建空表,它是指根据主键(或指定字段)进行数据对比,首先插入原全量表与 增量表无法匹配的非变更数据,再次

8、插入可以匹配的增量表数据,最后补齐增量表与全量表 无法匹配的增量数据。3.2、直接追加算法直接追加算法是指增量数据直接追加到目标表中,此算法适合流水、交易、事件、话单 等增量且不修改的数据。由于历史信息表数据量过于庞大,往往在数据库设计中将引入分区表的逻辑来处理,具 体实现逻辑自查。3.3、全量历史表算法拉链表。4、数据仓库-拉链表拉链表:数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录 历史。记录一个事物从开始,一直到当前状态的所有变化的信息。我们先看一个示例,这就是一张拉链表,存储的是用户的最基本信息以及每条记录的生 命周期。我们可以使用这张表拿到最新的当天的最新数据以

9、及之前的历史数据。酬日刖用户惋号孑尬号鸥t strt dotei end dtieO17-Ol-OL0011111112017-01-019995-12-512017-01-OL0G22222222017-01-012017-01-012017-01-010022333532&17-01-02999912-11J017-01-0100 i3333332017-01-019999-12-312C17-01-OL0044444442017-01-012017-01-012017-01-C1004432432Z&17-01-022017-C1-0Z2017-01-010G44324i22017-01

10、-039959-12-11J017-01-020052017-01-0220L7-C1-022017-01-0200 S1151152017-01-039939-12-312017-01-030062017-01-039993-12-31在数据仓库的数据模型设计过程中,经常会遇到下面这种表的设计:1、有一些表的数据量很大,比如一张用户表,大约10 亿条记录, 50 个字段,这种表, 即使使用ORC压缩,单张表的存储也会超过100G (在HDFS使用双备份或者三备份的话就 更大一些)。2、表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的 状态等等。3、需要查看某一个

11、时间点或者时间段的历史快照信息,比如,查看某一个订单在历史 某一个时间点的状态。4、表中的记录变化的比例和频率不是很大,比如,总共有10亿的用户,每天新增和发 生变化的有200万左右,变化的比例占的很小。那么对于这种表我该如何设计呢?下面有几种方案可选:方案一:每天只留最新的一份(比如我们每天用Sqoop抽取最新的一份全量数据到Hive 中)。方案二:每天保留一份全量的切片数据。 方案三:使用拉链表。4.1、为什么使用拉链表现在我们对前面提到的三种进行逐个的分析。方案一这种方案就不用多说了,实现起来很简单,每天drop掉前一天的数据,重新抽一份最 新的。优点很明显,节省空间,一些普通的使用也很

12、方便,不用在选择表的时候加一个时间分 区什么的。缺点同样明显,没有历史数据,先翻翻旧账只能通过其它方式,比如从流水表里面抽 方案二每天一份全量的切片是一种比较稳妥的方案,而且历史数据也在。 缺点就是存储空间占用量太大了,如果对这边表每天都保留一份全量,那么每次全量中 会保存很多不变的信息,对存储是极大的浪费。当然我们也可以做一些取舍,比如只保留近一个月的数据?但是,需求是无耻的,数据 的生命周期不是我们能完全左右的。拉链表在使用上基本兼顾了我们的需求。 首先它在空间上做了一个取舍,虽说不像方案一那样占用量那么小,但是它每日的增量 可能只有方案二的千分之一甚至是万分之一。其实它能满足方案二所能满

13、足的需求,既能获取最新的数据,也能添加筛选条件也获取 历史的数据。所以我们还是很有必要来使用拉链表的。4.2、拉链表的实现下面我们来举个栗子详细看一下拉链表。我们先看一下在Mysql关系型数据库里的user表中信息变化。在 2017-01-01 这一天表中的数据是:注册日掘啣L号詔2017*01-010011111112017-01-010022222222017-01-1003K33332017-01-01004444444在 2017-01-02这一天表中的数据是, 用户002和004资料进行了修改, 005是新增用户:讦斶日朋用户擄号壬机毒码2017-01-0100J.J017-01-0

14、1002213333(由22222囚吸器灵出)2017-01-0100S33-33530M4432(ffl 444444432+32)2017-01-02005555加(2017-D2帝斤陌)在 2017-01-03 这一天表中的数据是, 用户 004 和 005 资料进行了修改,006 是新增用 户:胡日剧用户端号却号殆备注2017-01-01D01linn2017-01-010022G17 01-01ODS33333320171-0100464321(4324325x654321)伽WQ2DOS115115由 555115115)2017-01-0300G尿 &666如果在数据仓库中设计成历史拉链表保存该表,则会有下面这样一张表,这是最新一天(即 2017-01-03)的数据:翊日期用户漏苔t start d占快t wfiH017-Cl-Ol0011111112017-0VD19999-12-3120L7-CI-010022222222017-01-012O17-Q1-0X2017-01

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号