一、从关系表和电子表格到数据立方体
数据仓库和数据仓库技术基于多维数据模型。这个模型把数据看成是数据立方体形式。多维数据模型围绕中心主题组织,该主题用事实表表示。事实是数值度量的。
数据立方体允许以多维数据建模和观察,它由维和事实定义。
维是关于一个组织想要记录的视角或观点,每个维都有一个表与之相关联,称为维表。
事实表包括事实的名称或度量,一个n维的数据立方体叫做基本方体。给定一个维的集合,可构造一个方体的格,每个都在不同的汇总级或不同的数据子集显示数据,方体的格称为数据立方体。0维方体存放在最高层的汇总,称作顶点方体;存放在最底层汇总的方体则称为基本方体。
二、数据仓库的概念模型
最流行的数据仓库概念模型:多维数据模型。这种模型可以是星型模式、雪花模式、或事实星座模式的形式存在。
(1)星型模式(star schema):事实表在中心,周围围绕地连接着维表(每一维),事实表含有大量数据,没有冗余。
维表location 中 city 和 country 属性重叠即属性冗余(造成空间浪费和数据不一致性)
(2)雪花模式(snowflake schema):是星型模式的变种,其中某些维表是规范化(将冗余字段用新的表来表示)的,因而把数据进一步分解到附加表中,结果,模式图形成类似于雪花的形状。
(3)事实星座模式(fact constellations):多个事实表共享维表,这种模式可看做星型模式集,因此称为星系模式(galaxy schema,星型模式的集合),或者事实星座(fact constellation)
三、一种数据挖掘查询语言:DMQL
DMQL首先包括定义数据仓库和数据集市的语言原语,这包括两种原语定义:一种是立方体定义,一种是维定义
(1)立方体定义(事实表)
define cube<cube_name>[<dimension_list>]:
<measure_list>
(2)维定义(维表)
define dimension <dimension_name> as
(<attribute_or_subdimension_list>)
(3)特殊案例(共享维表的定义)
第一次作为维表定义''cube definition ''
然后:define dimension<dimension_name> as
<dimension_name_first_time>in cube
<cube_name_first_time>
实例:使用DMQL定义星型模式
define cube sales_star[time,item,branch,location]:
dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)
define dimension time as (time_key,day,day_of_week,month,quarter,year)
define dimesion item as (item_key,item_name,brand,type,supplier_type)
define dimension branch as (branch_key,branch_name,branch_type)
define dimension location as (location_key,street,city,province_or _state,country)
实例:使用DMQL定义雪花型模式
define cube sales_snowflake[time,item,branch,location]:
dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)
define dimension location as (location_key,street,city(city_key,province_or _state,country)) 规范化,用新表去除冗余
实例:使用DMQL定义事实星座模式
define cube sales[time,item,branch,location]:
dollars_sold=sum(sales_in_dollars),avg_sales=avg(sales_in_dollars),units_sold=count(*)
define dimension time as (time_key,day,day_of_week,month,quarter,year) 第一次定义
define dimesion item as (item_key,item_name,brand,type,supplier_type)
define dimension branch as (branch_key,branch_name,branch_type)
define dimension location as (location_key,street,city,province_or _state,country)
define cube shipping[time,item,shipper,from_location,to_location]:
dollar_cost=sum(cost_in_dollars),unit_shipped=count(*)
define dimension time as time in cube sales 第二次可直接引用
define dimension item as item in cube sales
define dimension shipper as(shipper_key,shipper_name,location as location in cube sales,shipper_type)
define dimension from_location as location in cube sales
define dimension to_location as location in cube sales
四、度量的分类
一个数据立方体的度量是一个数值函数,该函数可以对数据立方体的每一个点求职。度量可以根据其所用的聚类函数分为三类:
分布的(distributive):将函数用于n个聚集值得到的结果和将函数用于所有数据得到的结果一样 count(),sum(),min(),max()
代数的(algebraic):函数可以由一个带M个参数的代数函数计算(M为有界整数),而每个参数值都可以有一个分布的聚集函数求导 avg(),min_N(),standard_deviation()
整体的(holistic):描述函数的子聚集所需的存储没有一个常数界。median(),mode(),rank()
五、概念分层和多维数据模型上的OLAP操作
(1)概念分层:一个概念分层定义一个映射序列,将不同的属性连接成一个整体。利于不同层次的数据进行汇总,按属性进行汇总。
(2)多维数据模型上的OLAP操作
上卷(roll-up):汇总数据,通过一个维 的概念分层向上攀升或者通过维规约
下钻(drill-down):上卷的逆操作,由不太详细的数据到更详细的数据,可以通过沿维的概念分层向下或引入新的维来实现。
切片和切块(slice and dice):投影和选择操作
转轴(pivot):立方体的重定位,可视化,或将一个3维立方体转化为一个3维平面序列
其他OLAP操纵:钻过(drill_across):执行涉及多个事实表的查询
钻透(drill_through):使用关系SQL机制,钻到数据立方体的底层,到后端关系表
六、数据仓库设计:
如何设计有效的数据仓库,就需要进行需求分析,则需要构建一个商务分析框架
(1)数据仓库设计的四种视图
i: 自顶向下视图:允许我们选择数据仓库所需的相关信息
ii: 数据源视图:揭示被操作数据库系统所捕获、存储和管理的信息
iii: 数据仓库视图:有事实表和维表所组成
iiii: 商务查询视图:从最终用户的角度透视数据仓库中的数据
(2)数据仓库的设计过程
i: 自顶向下法(由总体设计和规划开始:成熟)、自底向上法(以实验和原型开始:快速)或者两者结合的混合方法
ii: 从软件过程的观点:瀑布式方法:在运行下一步前,每一步都进行结构化和系统的分析;
螺旋式方法:功能渐增的系统的快速产生,相继版本之间间隔很短
iii: 典型的数据仓库设计过程
选取待建模的商务过程;选取商务过程的粒度;选取用于每个事实表记录的维;选取将安放在事实表中的度量
数据仓库服务器大部分都是关系数据库服务器。
数据仓库也是数据库,但是是分离的数据库。
(3)三种数据仓库模型
企业仓库:搜集关于跨越整个组织的主题的所有信息
数据集市:企业范围数据的一个子集,对于特定的客户是有用的:其范围限于选定的主题,比如一个商场的数据集市
独立的数据集市 VS 非独立的数据集市(数据来自于企业的数据仓库)
虚拟仓库:操作数据库上的一系列视图,只有一些可能的汇总图被物化
(4)数据仓库开发- 一个推荐的方法
七、OLAP 服务器类型
(1)关系OLAP服务器(POLAP)
使用关系数据库或扩展的关系数据库存放并管理数据仓库的数据,而用OLAP中间件支持其余部分
包括每个DBMS 后端优化,聚集导航逻辑的实现,附加的工具和服务
较大的可扩展性
(2)多维OLAP服务器(MOLAP)
基于数组的多维存储引擎(稀疏矩阵技术)
能对预计算的汇总数据快速索引
(3)混合OLAP服务器(HOLAP)
结合上述两种技术,更大的使用灵活性
(4)特殊的SQL服务器
在星型和雪花模型上支持SQL查询