多维数据模型

一、从关系表和电子表格到数据立方体

数据仓库和数据仓库技术基于多维数据模型。这个模型把数据看成是数据立方体形式。多维数据模型围绕中心主题组织,该主题用事实表表示。实是数值度量的。

数据立方体允许以多维数据建模和观察,它由维和事实定义。

维是关于一个组织想要记录的视角或观点,每个维都有一个表与之相关联,称为维表

事实表包括事实的名称或度量,一个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查询

猜你喜欢

转载自blog.csdn.net/mengjizhiyou/article/details/82753879