1.2.2 多维数据库的结构
一种非常受欢迎的数据仓库设计称为“多维数据库”。术语“多维”显得有点神秘,让人联想到爱因斯坦的时空扭曲、平行宇宙,以及简化声音积分的数学公式。底线就是称数据库为多维的实际上有点像是撒谎。它是个时髦的术语,用于数据库时,它与被加速到接近光速的粒子所体现出来的多维特性毫不相关,甚至与爱丽丝在兔子洞里①冒险的那种多维性也没有任何联系。本部分将帮助您理解在数据库环境下“多维性”到底意味着什么。
假设您是一家小型新创公司的总裁。公司需要发展壮大,但用来支持发展壮大的资源很有限。您需要制定决策,但要制定决策,必须掌握特定的信息。
在数据仓库的世界里,用来监视业务的可以汇总的数值称为度量值。查找数值信息时,需要回答的第一个问题是需要查看哪个度量值。可能您会查看销售额、出货数量、总次品量,或者广告活动回馈等。假设让您的私人财务分析师为公司的销售量总计做个报表,您将得到下面的内容(假设数字的单位是百万,如果您喜欢的话)。
113
只看这一个数字会有用,但多少有点沮丧:也许您想要把它拆分为更有参考价值的形式。例如,公司在各个时间段的业绩如何?您要求一个月度分析,下面是新的报表。
|
January |
February |
March |
April |
|
14 |
41 |
33 |
25 |
公司已经运作了4个月,所以在报表的顶部有4个月份的标题。与前面的报表不同,现在有4个值。每个月份都细分了初始值。新的数值的数量和月份的数量相同。这与物理世界的直线距离计算类似:直线的长度就是长度。
可能月度报告仍然无法满足您的需要。公司销售多种产品。每种产品在各个时间段表现如何呢?您要求一个按照产品和月份的新报表。
|
|
January |
February |
March |
April |
|
Road-650 |
|
|
6 |
17 |
|
Mountain-100 |
6 |
16 |
6 |
8 |
|
Cable Lock |
8 |
25 |
21 |
|
新公司销售3种产品,所以报表的左边是3种产品的名称,每种产品都拆分了月度值,同时月份的标题还显示在报表顶部。现在要考虑12个值。数值的数量与产品数量和月份数量的乘积相同。这与在物理世界中计算矩形的面积类似:矩形的面积等于长度乘以宽度。甚至报表看起来都像矩形。
矩形的比喻只在使用的数学方法上类似,而不是报表的形状。报表可能以不同的方式组织,如下所示。
|
Road-650 |
January |
|
|
Road-650 |
February |
|
|
Road-650 |
March |
6 |
|
Road-650 |
April |
17 |
|
Mountain-100 |
January |
6 |
|
Mountain-100 |
February |
16 |
|
Mountain-100 |
March |
6 |
|
Mountain-100 |
April |
8 |
|
Cable Lock |
January |
8 |
|
Cable Lock |
February |
25 |
|
Cable Lock |
March |
21 |
|
Cable Lock |
April |
|
不管是像前面那样在列表中显示数值(这里的数值形成一条直线),或在网格中显示它们(此处则形成一个矩形),如果3种产品每个都有4个月份值,将有12个数值。报表将有12个值,因为产品和月份是相互独立的。每个产品在每个月份都有它的销售值——即使值为0。
回到前面矩形的报表。假设公司在两个不同的州进行产品销售,您想知道每种产品在每个州的每月销售情况。添加公司使用的州名之后,得到一个如下的新报表。
|
|
|
January |
February |
March |
April |
|
WA |
Road-650 |
|
|
3 |
10 |
|
|
Mountain-100 |
3 |
16 |
6 |
|
|
|
Cable Lock |
4 |
16 |
6 |
|
|
OR |
Road-650 |
|
|
3 |
7 |
|
|
Mountain-100 |
3 |
|
|
8 |
|
|
Cable Lock |
4 |
9 |
15 |
|
报表现在有了两个州的标题(label),3个产品的标题(每个都显示了两次),以及4个月份的标题。它可能会有24个值,虽然这些单元格中的某些是空的。可能的数值的数量等于州的数量乘以产品种类的数量再乘以月份的数量。这与计算立方体的体积类似:体积等于立方体的长度乘以宽度再乘以高度。但报表看起来不像立方体——它更像一个矩形。也可以把它重新组织成一个列表。但不管怎样组织报表,它都有3个独立的标题列表,并且报表中可能的值的数量都等于第一个标题列表(例如两个州)中不同项目的数量乘以第二个标题列表(例如3种产品)中不同项目的数量再乘以第3个标题列表(例如4个月份)中不同项目的数量。
因为短语“独立的标题列表”非常冗长,并且用来计算报表中可能值数量的数学方法与计算长度、面积和体积——空间扩展的度量——相同,数据仓库设计者借用了数学中的术语“维度”,而不使用“独立的标题列表”。记住,这是个借用词,数据分析维度与物理维度差别很大。所以报表有三个维度——州、产品和时间,并且报表的数值数目等于第一个维度中的项目的个数乘以第二个维度中项目的个数,如此类推。使用术语“维度”并没有暗指应该怎样在报表中显示标题和数值,甚至也没有暗指它们应该怎样存储到数据 库中。
每次创建一个新维度时,维度中的项目在概念上都是相互关联的——例如它们都是产品或它们都是日期,所以维度中的项目称为维度的“成员”。
现在再把报表复杂化一点。如果想同时看到销售量和销售额,将得到一个如下所示的新报表。
|
|
|
January |
|
February |
|
March |
|
April |
|
|
|
|
U |
$ |
U |
$ |
U |
$ |
U |
$ |
|
WA |
Road-650 |
|
|
|
|
3 |
7.44 |
10 |
24.80 |
|
|
Mountain-100 |
3 |
7.95 |
16 |
42.40 |
6 |
15.90 |
|
|
|
|
Cable Lock |
4 |
7.32 |
16 |
29.28 |
6 |
10.98 |
|
|
|
OR |
Road-650 |
|
|
|
|
3 |
7.44 |
7 |
17.36 |
续表
|
|
|
January |
|
February |
|
March |
|
April |
|
|
|
|
U |
$ |
U |
$ |
U |
$ |
U |
$ |
|
OR |
Mountain-100 |
3 |
7.95 |
|
|
|
|
8 |
21.20 |
|
|
Cable Lock |
4 |
7.32 |
9 |
16.47 |
15 |
27.45 |
|
|
U表示销售量;$表示销售额
因为销售量和销售额与州、产品和时间维度是相互独立的,它们形成了第4个新的维度,您可以称它为度量值维度。报表中数值的数量仍然等于每个维度中成员数量的乘积:2乘以3乘以4乘以2,结果为48。但是这次却没有什么——也没有什么必要有——物理世界的比喻了。记住,单词“维度”是“独立的标题列表”的便捷说法,并且,有4个(甚至20或60个)独立的列表与有3个一样简单,所不同的只是报表更大而已。
在物理世界里,测量的对象根据它有多少个维度而变化。例如,一维英寸是线性英寸,但二维英寸是平方英寸,三位英寸是立方英寸。立方英寸与平方英寸或线性英寸是完全不同的对象。然而在报表中,随着维度的添加,被测量的对象仍然相同,即数值。一个“四维”报表中的数值和一个“一维”报表中的数值并没有什么区别。在报表的世界里,一个额外的维度只是增加了一个独立的拆分度量值的方式。
虽然向报表增加第4个或第5个维度并不意味着让您处于一个超空间中,但并不是说添加一个维度是微不足道的。例如从一个二维报表开始:30个产品和12个月,或者说可能有360个值。向产品维度添加3个新成员将使报表中数值的数量变为396,也就是增加了10%。然而,如果把这3个新成员添加为一个独立的维度——例如一个带有实际、预算和计划的场景维度。向新维度中添加3个成员将使得报表中数值的个数变为1 080,那将是300%的增长。再考虑一下这个极端的例子,如果只有一个有128个成员的维度,报表中可能的数值有128个,但如果把这些成员分为64个不同的维度时——每个维度两个成员——报表将有18 446 744 073 709 551 616个可能的值。
| 回书目 上一节 下一节 |
|
· Linux结课考试自测获奖.. · 上周Linux系统命令的使.. · 上周真题冲刺测试获奖.. · 全国计算机等考四级模.. · 08年3月各大网上书店及.. · 网络工程师模拟测试获.. |
· 全国计算机软考考试指.. · 3月24日WCF聊天活动 积.. · 全国计算机等级考试四.. · 软件项目估计:第2版 · 系统分析师基础知识自.. · 构建可扩展的Web站点的.. |