zoukankan      html  css  js  c++  java
  • 【datamining】OLTP,OLAP,维度数据库,事实表,维度表、星形和雪花模式、数据立方体、概念分层

    一、联机事务处理(OLTP)

    OLTP系统是设计用来允许高并发性的,这样很多用户就能够访问同一个数据源并进行所需的处理。

    OLTP系统是面向在数据库上进行事务处理的理念的。而事务则进一步蕴含着发生在表中数据上的受控的变更,这些变更包括在商务运作过程中发生的插入、更新和删除操作。通常,一个OLTP系统将会有大量的客户端应用程序通过各种各样的方式(插入、更新、删除--实际上可以是任何操作)访问数据库以查询一小块信息。

    OLTP系统的实例包括数据输入程序,如银行处理、订票、联机销售和库存管理系统。

    二、联机分析处理(OLAP)

    联机分析处理(或OLAP)是一种广义上的决策支持系统(DSS),或者最近越来越流行的商业智能(BI)。BI系统的目标是分析海量数据,然后以很多不同的方式(包括每天、每周、每季和年度报告)生成小结和总结以把精力高度集中在记分卡和仪表盘上,它们通常用于帮助那些准备好根据这些数据采取一定的措施的特定用户来获取竞争优势。

    一旦数据进入数据仓库之后就很少会发生变化。数据被保存在那里用于查询和生成报表,以便帮助决策者规划企业的未来。它不需要关心插入、更新和删除操作。因此与高度规范的事务数据库不同,在这种情况下通常会使用所谓的维度数据库 (dimensional database),它将遵循特定的结构或模式。

    维度数据库可以用来构建数据立方体数据立方体是数据的多维表示,用来方便联机业务分析和提高查询性能。立方体中的每一维都表示业务数据中的一个不同的分析类别。

    三、维度数据库

    在OLTP系统中进行复杂查询存在一些固有的问题,对这些问题的解决方案是构建一个单独的数据库来更简洁地表示业务事实(fact)。这个数据库的结构不是关系型的,相反,它是维度化的

    四、事实表

    维度数据库的中心表叫做事实表它的行表示事实,事实表的中心内容是对一个活动或事件的不同实例的测量。

    例如,AdventureWorksDW2008数据仓库示例中包含了一张名为FactInternetSales的表以及几张关联表(如图24-1所示)。它关注的是单个销售,但是在项目级别则主要关注每个销售的关键指标它保存着一组测量(通常是数值)--在本例中是Order Quantity、Unit Price、Extended Amount还有其他一些测量--并且把它们与恰当地维关联起来(在本例中将会根据产品信息、相关日期、客户信息以及其他一些维来进行分析)。

    http://book.51cto.com/art/201006/206177.htm

    五、维度表

    维度把事实放到上下文中,它表示诸如时间、产品、客户和位置之类的事物。维描述了事实表中的数据。在本节的AdventureWorksDW2008示例中,一个恰当的做法是选择日期、客户和产品作为维度。

    这些链接到事实表上的表叫做维度表

    事实表抓取与每天发生的事务有关联的所有客户和产品。由于每一个明细行有一行相应的数据,因此这张表可能会变得非常大。由于为每一单生意都存储客户数据将会占用大量的空间,并且通常无法提供那么多的空间,因此需要把那些不是每个测量实例都发生变更的项目分离出来。这些链接到事实表上的表叫做维度表它们被用来创建分组,而根据这些分组可以确定事实表中的聚合级别

    例如,如果查询FactInternetSales表并按照月来分组,那么就可以找到所有销售地区中所有产品每月总的销售量。如果查询 FactInternetSales表并按照州来分组,那么就能够找到某个销售地区在整个统计时间内在所有客户和所有产品上发生的总的销售量。还可以根据 FactInternetSales表的维度的组合来进行聚合。例如,可以找到在特定销售地区发生在特定类型的客户身上的特定产品模型每个月总的销售量,只需要把结果根据州和月来分组,然后在WHERE子句中为客户和产品加上合适的标准即可。

    六、星形和雪花模式

    图24-1中的数据库模式是一种星形模式,其中只有一张事实表,有几张维度表直接链接到事实表上。在星形模式中,查询中可能用到的对象只需要与事实表进行不超过一次的连接即可获得。读者可能还听过雪花状模式。在雪花状模式中,多张表可能涉及同一个维,而这个维将直接链接到事实表上。可以把雪花状模式看成是星形模式的一个扩展,它更加规范一点,但是需要连接额外的表才能把所有数据关联起来。

    七、数据立方体

    数据仓库用多维数据库结构建模。每个维对应于模式中一个或一组属性

    每个单元存放某种聚集度量值,如count,sales_amount。

    数据仓库的实际物理结构可以使关系数据存储或多维数据立方体(multimensional data cube).

    数据立方体提供数据的多维视图,并允许计算和快速访问汇总数据

    http://book.51cto.com/art/201006/206181.htm

    到现在为止,读者已经看到数据从事务系统移到了数据仓库中--很有可能采用星形或雪花状模式

    在一个维度模型中,如这里所讨论的维度模型,通常以数据库为基础来构建所谓的立方体。

    为了理解什么是立方体,可以把维度数据库中的数据看成是供分析使用的经过转换的原始数据。换句话说,如果读者看一看前面一节中的例子,那么就会发现事实表包含了事务信息和指向待分析的维度表的指针(外键)。

    根据图24-1中的模式所生成的报表通常是一些如在一段特定的时间内在特定的地区顾客对特定产品或一类产品的购买量之类的信息。为了获取这种的结果,需要根据用来构建报表的维度来对事实表中的值进行聚合。SQL Server的分析服务允许预先计算这种结果并把它们存储在立方体中

    因此,立方体是一个存储数据聚合的结构,而数据聚合是通过把维度数据库中所有可能的维值与事实表中的通过因特网完成的销售量的事实组合而来的。采用这种方式之后生成最终报表的效率就会高出很多,因为在运行时不需要执行复杂的查询。

    分析服务允许从任何拥有OLE DB提供者的数据源中构建立方体。它可以是任何拥有ODBC驱动程序的数据库管理系统中的关系数据库(如Oracle、DB2甚至是MySQL)或者是本地的OLE DB提供者(如SQL Server、Oracle或者MS Access)。立方体的数据源还可以是维度数据库、文本文件甚至可以是一个轻量级目录访问协议(LDAP)数据源。

    八、概念分层

    将属性或维的值组织成渐进的抽象层。如杭州-浙江-中国。

    http://images.51cto.com/files/uploadimg/20100617/152830317.jpg

    如果想要使用这个立方体找到密歇根州在2002年自行车的销售量,那么只需要查看图中用阴影显示的单元即可,取三个维度的交集即可得到这个单元。

  • 相关阅读:
    关于接口是值类型还是引用类型的猜测
    絮语工作四年的碎碎念
    烧钱游戏加入创业公司的一些感想
    关于C#调用非托管动态库方式的性能疑问
    couchbase作为分布式session容器时的注意事项
    poj3624
    明天的下载链接
    poj 1502
    poj1459 多源多汇最大流
    poj 3041
  • 原文地址:https://www.cnblogs.com/549294286/p/2815262.html
Copyright © 2011-2022 走看看