设计和实现OLAP解决方案

 

第一讲 简介
首先,啥叫数据仓库?

数据仓库就是数据的仓库!用外文说叫Data Warehouse,简称DW。

是不是哐当倒下一片啊,要不咱换个专业点的说法?

数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的、包含商业信息的数据集合,用于支持管理决策。

看得懂不?谅你也不懂。

算了,别叫这真了。

等你明白了舍生取义,你自然会明白什么是数据仓库的。

数据仓库里面有大量包含商业信息的数据,但是我们很难从中捕获信息,因为数据仓库一般有很大的数据量,要整理这些数据还是很麻烦的。

OLAP系统就是来解决其中一部份目标的。

先说什么是OLAP,发音噢勒普。联机分析处理,还是看不懂吧?

就是让你高效访问数据仓库的。

相对应的有一个OLTP,叫联机事务处理,就是我们平常用的数据库。

OLTP通常有大量并发添加和修改,随时变化,包含大量的数据,具有复杂的结构。

当我们把OLTP装载到DW中,一般就不再有修改,随着数据的增加而定期更新,而不是随频繁发生的事务而更新。结构和安全性也更简化,目的是提高分析查询的效率,而不是进行事务处理。

还有数据集市,叫Data Mart,数据集市是数据仓库的一种特殊形式,典型的数据集市包含面向专门主题的适合特定业务功能的企业数据子集。

你可以认为数据集市是数据仓库的一部份。

第二讲 OLAP概述
OLAP 技术使数据仓库能够快速响应重复而复杂的分析查询,从而使数据仓库能有效地用于联机分析。OLAP 的多维数据模型和数据聚合技术可以组织并汇总大量的数据,以便能够利用联机分析和图形工具迅速对数据进行评估。当分析人员搜寻答案或试探可能性时,在得到对历史数据查询的回答后,经常需要进行进一步查询。OLAP 系统可以快速灵活地为分析人员提供实时支持。

通常的OLAP应用有财务报表、市场分析、市场计划、客户服务等。

目前国内已经有大量丰富的应用,比如银行、证券、电信、生产、销售行业,都有很多的成功案例。

在OLAP中,数据不再以关系型数据结构存放,而是以多维的数据结构存放。不再具有Detail的数据,而是只有Roll up后的信息。

微软的Analysis Service是一个不错的OLAP系统,一点不吹牛的说,它处理速度快,查询速度快,功能完整,支持海量数据,而且处理后的数据量很小,没有数据爆炸的问题。

第三讲 数据仓库结构

数据仓库的基本结构就是Star Schema和SnowFlake Schema,星型结构和雪花结构。

了解结构之前先得理解两个基本名词:事实表FactTable和维度表Dimension Table。

什么是事实和维度呢?我今天在U-mart买了两块巧克力,价格23.54¥。

这就是一个事实。其中包含的信息有客户:我;日期:今天;地点:U-mart;产品:巧克力;数量:2;价格:23.54¥。客户、日期、地点、产品就是维度Dimension,数量和价格是度量值Measure。

这就是一个星型架构。

维度表至少包含维度的Key和Name,Key和Name可以是同一列。维度也可能没有维度表,比如这个架构中的日期维度就没有维度表。

一个多维数据集架构Cube Schema有且只有一个事实表,不过你要用几个base table组合成一个view来做事实表也可以。(Cube 的Partition里面可以使用不同的事实表,这是后话。)

维度是有层次level的,一个维度至少有两个层次,在大多数情况下维度的成员会按金字塔形布局排列,最上面总有一个All的层次,比如客户维度就有(所有客户)-(客户)这两个层次。维度除了常规维度外,还有父子维度、虚拟维度等。后面会详细介绍各种维度。

如果一个维度有多于2个层次,那么这个维度可能有多个维度表,例如:

这样的就是雪花结构。

From: http://dev-club.esnai.com/club/bbs/elist.asp?page=6&nofolder=&path=&boardid=23

设计和实现OLAP解决方案的更多相关文章

  1. 设计和实现OLAP解决方案 [转]

    第一讲 简介首先,啥叫数据仓库? 数据仓库就是数据的仓库!用外文说叫Data Warehouse,简称DW. 是不是哐当倒下一片啊,要不咱换个专业点的说法? 数据仓库是一个面向主题的.集成的.相对稳定 ...

  2. Apache Kylin - 大数据下的OLAP解决方案

    OLAPCube是一种典型的多维数据分析技术,Cube本身可以认为是不同维度数据组成的dataset,一个OLAP Cube 可以拥有多个维度(Dimension),以及多个事实(Factor Mea ...

  3. 实现领域驱动设计 - 使用ABP框架 - 解决方案概览

    .NET解决方案的分层 下图显示了使用ABP的 应用启动模板 创建的Visual Studio解决方案: 解决方案名称为问题跟踪,它由多个项目组成.通过考虑DDD原则以及开发和部署实践,该解决方案是分 ...

  4. 苏宁OLAP架构设计

    一. 功能综述 OLAP引擎为存储和计算二合一的引擎,自身内部涵盖了对数据的管理以及提供查询能力.底层数据完全规划在引擎内部,外部系统不允许直接操作底层数据,而是需要通过暴露出来的接口来读写引擎内部数 ...

  5. 轻量级OLAP(二):Hive + Elasticsearch

    1. 引言 在做OLAP数据分析时,常常会遇到过滤分析需求,比如:除去只有性别.常驻地标签的用户,计算广告媒体上的覆盖UV.OLAP解决方案Kylin不支持复杂数据类型(array.struct.ma ...

  6. Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案

    一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...

  7. 操作数据库系统(OLTP)和联机分析处理系统(OLAP)的区别

    联机操作数据库系统的主要任务是执行联机事务和查询处理.这种系统称为联机事务处理(OnLine Transaction Processing,OLTP) 系统.它们涵盖了单位的大部分日常操作,如购物,库 ...

  8. Slithice 分布式架构设计

    项目原因: 参与过各种 分布式项目,有 Socket,Remoting,WCF,当然还有最常用的可以跨平台的 WebService. 分布式编码的时间浪费: 但是,无一例外的,开发分布式程序的开发遵循 ...

  9. 开放源代码的设计层面框架Spring——day01

    spring第一天     一.Spring概述         1.1spring概述             1.1.1spring介绍                 Spring是分层的Jav ...

随机推荐

  1. kvm虚似机监控

    [root@ok Desktop]# yum install virt-top [root@ok Desktop]# virt-top virt-top 22:53:44 - x86_64 4/4CP ...

  2. 在Android软按键中添加Menu键

    在Android中,有时候没有硬件Menu.于是需要软件Menu.但是默认Google想让你用ActionBar上的Menu. 但是,有时候我们确实需要在在底部的软按键上加Menu.这里提供一种方法, ...

  3. Struts2中ActionContext和ServletActionContext

    转自:http://blog.sina.com.cn/s/blog_6c9bac050100y9iw.html 在Web应用程序开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在A ...

  4. Linux串口设置及编程(转)

    用户常见的数据通信的基本方式可分为并行通信和串行通信. 并行通信是指利用多条数据传输线将一个资料的各位同时传送.特点是传输速度快,适用于短距离通信,但要求传输速度较高的应用场合. 串行通信是指利用一条 ...

  5. Introduction to Computer Networks(网络架构与七层参考模式)

    Network Connectivity 1. Important terminologies 1) Link 设备连接的连线.Link本身既可以是有线的,也可以是无线的. 2) Node 设备.电脑 ...

  6. C#环境datagidview添加删除操作

    添加 行 dataGridView1.Rows.Add();//添加空行 dataGridView1.Rows.Add("a","b"……);//添加指定列数的 ...

  7. 【框架】RefreshListView下拉刷新

    布局: <com.example.administrator.d30_myrefreshlistview.RefreshListView android:id="@+id/refres ...

  8. js:语言精髓笔记11--动态语言特性(1)

    语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类: 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系:JS是完全动态语言,导致其不确定性一般 ...

  9. 模拟 Codeforces Round #203 (Div. 2) C. Bombs

    题目地址:http://codeforces.com/problemset/problem/350/C /* 题意:机器人上下左右走路,把其他的机器人都干掉要几步,好吧我其实没读懂题目, 看着样例猜出 ...

  10. Linq to Sql/entity Join

      inner join 模板: var query = from x in db.T1             join y in db.T2             on x.Id equals ...