如何设计数据仓库

“设计”——暗含了可以预先对组成单元进行规划的意思,“兵马未动,粮草先行”体现了前人在规划事情的聪明才智。但是数据仓库的需求只有在已经装载了部分数据并开始使用的时候才能弄清楚,因此,过去很有效的设计方法在设计数据仓库时并不能满足需要。数据仓库是在启发方式下建造的,过程中后一个阶段开发完全依赖于上一个阶段获得的结果。下面对设计数据仓库的几个主要过程进行分享。


设计师的手稿

1.从操作型数据开始

什么是操作型数据?操作型数据就是企业在生产运行中产生的数据。

在进行数据仓库设计时首先要考虑的问题是如何将数据放置在数据仓库中。操作型系统在建立的时候并没有考虑数据将来如何进行集成,各个系统都建立了自己的数据结构,在数据集成的时候就会出现各式各样的数据没有统一的标准。这是个复杂而又必须解决问题。


数据各自为政

1.1.数据集成过程中首先要解决数据编码不一致的问题。假设将旅客服务系统数据和旅客行为系统数据进行关联,发现旅客服务系统中性别是英文简称“m,f”表示,在旅客行为系统中性别是中文“男,女”,这两个系统在表示性别时采用了不同的编码方式。将旅客性别数据集成到数据仓库时,不管采用哪一种编码方式,进入数据仓库的数据需要统一成为同一种编码格式。


统一编码

1.2.数据集成的过程需要统一度量单位。不同的系统可能在表示同一属性的时候采用了不同的计量单位,进入数据仓库的数据需要转换成同一种计量单位。数据仓库建立是服务于企业所有的系统,将不必要的数据计算开销在数据抽取、装载、清洗过程中完成,节约数据仓库计算资源。在设计数据仓库的时候尽量让清洗的计算在数据抽取的时候就完成,不建议将过多的计算推移到数据仓库中。


统一度量单位

1.3.集成过程中要对字段语义进行理解。例如同一个字段在四个应用中有四个不同的名字。为了转换数据使其正确的进入仓库,就必须建立对各个不同源字段到数据仓库字段的映射。


统一字段名称

将操作数据集成到数据仓库是个非常复杂的过程。在真实过程中除了将数据完整的同步到数据仓库中的需求,在某些需求下集成到数据仓库并非明细数据而是一个汇总数据。我们在后面会具体列出数据集成过程中需要考虑的问题列表。

2.设计数据仓库的数据模型

数据仓库起源于数据模型的设计。在企业中所有的数据模型都是建立在操作型数据模型之上,我们可以通过以下步奏设计数据仓库模型。

2.1.去除纯用于操作型环境中数据。比如去掉控制系统字体大小的样式表内容,因为此类数据对后面的业务支持分析并没有多大的意义。

2.2.增加时间元素。为加入到数据仓库的数据增加时间元素,标注该数据的时间版本。随着时间增长,企业经营的规模增加,原有数据类型不能符合现有业务的需求,需要进行修改,此时在数据仓库中基于原有字段增加一个新的数据字段,通过时间版本可以快速区分老版本和新版本。

2.3.在数据仓库中将操作型系统中的数据转变为“人工关系”,也就是建立起数据仓库中表与表之间的关系。数据仓库对外服务的时候,某一查询请求数据可能来自多张表,通过建立起的表间关系可以将多张表的数据串联成为一个集合发送给调用端。

2.4.对企业数据模型进行稳定性分析(根据各个数据属性是否经常变化的特性将这些属性分组)。比如经常变化的,不时变化的、很少变化的。通过稳定性分析,我们可以根据不同访问频次将数据分开存放,提高数据仓库的响应效率。


稳定性分析

2.5.数据模型的设计非常重要,通常数据模型通过高层、中层和底层三个层次进行设计。下面详细讲解这三层是如何实现的。

2.5.1.高层建模即设计ER图,是最高的抽象设计,描述数据仓库范围的主题域,以及描述主题域之间的关系。高层设计通盘考虑整个公司业务环境,站在领导的角度将公司的业务环境划分为不同的主题域。比如可以将公司的业务环境划分为商务、运行、管理等主题域。如果建立的是商务数据中心则可以划分供应商、顾客、商品和仓储等主题域。建立完成主题域之后要明确主题域和主题域之间的连接关系。


高层设计ER图

2.5.2.中层建模是对高层模型中标识出的每个主题域进行详细设计建模。对每个主题域中包含的具体实体进行设计,并且明确实体与实体之间的对应关系。这个步奏涉及到具体每一个主题域包含了多少实体,这些实体特征和属性,以及实体与实体之间的关系。


中层设计

2.5.3.底层建模是物理模型建立,建立数据具体存储模型。设计上主要优化数据存储和读取的性能。比如数据库存储的分库分区或者使用集群解决方案,目的是降低单台机器的压力,提升数据仓库对请求的响应效率。

3.为了性能适度牺牲范式设计

设计规范化,通常认为的是设计要满足范式,在关系型数据库设计时最低的设计标准是要满足第三范式。

为什么要规范化数据仓库的设计?总结下来至少有以下四点优点:1.降低数据存储所占有的磁盘空间。2.方便对数据的管理。3.将易变和不易变的数据进行区分管理。4.容易进行修改。

但是严格遵循规范化设计在应用高频访问大数据量的情况下也会有弊端,至少会造成两个问题:1.数据访问I/O次数多,严重影响数据访问的效率。2.索引建立复杂而且索引数据量庞大。

解决由于严格遵循规范化导致的性能瓶颈,可以在适当的地方反向规范化。具体可按照以下三个步骤做:

第一步,将经常同时访问的两个不同表的数据可以进行合并。


创建数据组,将经常同时访问的数据放到一起

第二步,对于某些经常访问的(不变的)基础数据表可以冗余存放到不同表中,取消基础数据表。


采用数据冗余

第三步,对于同一张表中某一个字段访问特别多,可以将该字段抽离出该表。


分离高频访问字段

4.使用Zachman方法设计数据仓库

Zachman框架是一种逻辑结构,它是为信息技术企业提供一种可以理解的信息表述。可以对企业信息按照要求分类并从不同角度进行表示。

Zachman框架吸收了传统方法中的一些精髓。他根据抽象规则定义企业信息的多个方面。该框架采用六行六列矩阵布局,六行包括范围、企业模式、系统模式、技术模式、组建和功能系统,六列分别为数据(什么?)、功能(怎样?)、网络(哪里?)、角色(谁?)、时间(何时?)和动机(为何?)。Zachman框架的6行6列整理出的表格如下:


Zachman样表

Zachman在如何使用呢?它的每一个单元格具体填写什么呢?根据下图填写完成里面的内容,可以保证在进行数据仓库建设的时候企业的所有方面都得到了考虑。


Zachman内容填写

Zachman指导数据仓库的建设。Zachman框架可以挖掘出数据仓库建立的需求内容,然后针对需求内容建立数据模型,最后将业务系统的数据集成到数据仓库的一个完整过程。

小结

通过上面的步骤我们一步一步的将业务系统集成到数据仓库中,取得了一些成果。但是我们仅仅分享了数据仓库建设的几个主要步骤,数据仓库建设过程中还有很多细节由于时间我们并没有分享。另外本文还介绍了Zachman分析方法,在数据仓库设计的时候避免遗漏对企业问题的考虑,推荐使用该方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容