OLAP工作的基本概念(结合个人工作)
OLTP和OLAP
OLTP系统::执行联机事务和查询处理。一般超市进销存系统,功能:注册,记账,库存和销售记录等等,
OLAP系统:数据分析与决策服务,组织不同格式数据,满足不同用户需求。
区别:
面向性。OLTP面向顾客,就是操作员,如超市收银员,银行柜台人员。OLAP面向市场,用于数据分析,分析人员包括数据分析员,做出决策的业务经理,或者策略制定部分。
数据内容:OLTP当前数据。OLAP历史数据的汇总与聚集。
数据库设计:OLTP用ER模型和面向应用数据库。OLAP 用星型或雪花模型,面向主题数据库设计。
还有访问模式:操作事务与只读的分析计算的区别。
等等
多维数据模型:
数据立方体cube:
给定维度的每个子集产生一个cuboid(称为方体)。这样可以在不同粒度上的汇总级别或分组(group by),来显示数据,整体上方体的格成为cube。
最低层汇总的方体称为基本方体(basecuboid)。出现某一个维度上的汇总后,则为非基本方体。
汇总到最高层的数据称为顶点方体(apexcuboid),如0-d方体,that’s to say,所有维度汇总到一起只剩一个cuboid,不能再汇总了。
顶点方体是最高泛化的方体。基本方体是最低特殊化的方体。
粗细粒度是不同程度上的汇总,涉及操作:
上卷(roll up),供应商称之为上钻drillup,沿着维度的概念分层向上
下钻(drill down)沿着维度的概念分层向下,需找更细粒度的数据。
切片:固定某一维度的取值,抽取这一维度下的子集。
切块:由多个维度上选择多个取值,抽取其所映射的子立方体。
旋转rotate: 也叫pivot数轴变换,简单说,二维表中的行列转置。到三维以上复杂,不同数轴之间的位置变换。说的高大上叫数据的视图角度转变
概念分层:低层概念(如城市)映射到更高的层次概念(如国家)。从低到高叫泛化(generalize),从高到低叫特殊化(specialize)。
模式分层(schema hierarchy)概念分层为数据库模式中属性的全序或偏序。
集合分组分层(set-grouping hierarchy)给定维度的属性值的离散化或分组。如年龄age属性离散化为young、mid、old三个子集,分组group by sex的男女子集。
数据立方体的实现:
使用数据仓库的模型是多维模型,目前经常的有:
星型模型:一个大而全,且无冗余的事实表(fact);以及不同分析维度上的维度表(dimension)。维度表围绕事实表,通过每个维度自身的dimension key(所有可能范围内的取值)关联。
雪花模型:星型模型的进一步细化,即将其中包含多个值的维度表进行规范化的(就是将维度表包含的某个值提取出来,作为新的dimension表),以便减少冗余。
这样把数据进一步分解到附加表中,易于维护,省空间(防止维度灾难),但查询时需要更多关联操作,降低时效性。
事实星座模型(fact constellation)or 星系模式(galaxy schema):多个fact tableshare all dimesioms(共享维度表)。
比如我的设计的data warehouse。Workbench
Cube定义
Dimension定义
一般的data warehouse 都是用fact constellation。
指标Index
度量measure
维度灾难(curse of dimensionality),当维度过多(特征空间非常复杂),那么维度之间的关联计算就变得非常多,而维度概念分层会加重灾难。反应在cube中,就是不同维度的计算就会产生巨大的数据,就是预计算cube中所有的方体(子cube),存储空间是爆炸似增长。N维会有2n个子cube,加上概念分层Li,则方体总数
预计算:1不物化(no materialization)2全物化(full materialization)3部分物化(partial materialization)
OLAP工作的基本概念(结合个人工作)的更多相关文章
- 如何把一个excel工作薄中N个工作表复制到另一个工作薄中
一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表 ...
- View的工作原理(一) 总览View的工作流程
View的工作原理(一) 总览View的工作流程 学习自 <Android开发艺术探索> 简书博主-丶蓝天白云梦 Overview 从本章开始,开始学习View的工作原理,包括View的 ...
- Worker Thread等到工作来,来了就工作
Worker是“工人”的意思,worker thread pattern中,工人线程(worker thread)会一次抓一件工作来处理,当没有工作可做时,工人线程会停下来等待心得工作过来. Work ...
- 怎么拆分一个Excel工作簿中的多个工作表?
打开需要编辑的Excel文档.如图所示,工作簿下方有很多工作表.现在需要将这些工作表单独拆分开成一个个工作簿. 右键任意一个工作表标签,在弹出的下拉列表中选择查看代码.即弹出代码窗口.如下图所示. ...
- Android WorkManager工作约束,延迟与查询工作
WorkManager工作约束,延迟与查询工作 本文可能会混用"工作"与"任务"这两个词. 本文例子使用Kotlin 准备一个工作类(任务)UploadWork ...
- Excel-同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息
12.同个工作簿中,多个工作表中有格式一致的表格,做汇总透视合并信息 在工作簿中新建一个工作表-汇总表->按Alt+D+P调出数据透视表和数据透视图向导->选择"多重合并计算数据 ...
- AJAX 概念 优势 发展前景 工作原理 底层技术 状态 缺点 框架
1. 概念 Ajax asynchronous JavaScript and XML , 异步js和xml. 这种解释已经过时了, 现在ajax就是, 允许浏览器和服务器通信, 而无需刷新当前页面的技 ...
- GIT团队合作探讨之一-保持工作同步的概念和实践
感谢英文原文作者,这是我看到的关于git协同工作写的最清晰简洁的文章了: https://www.atlassian.com/git/tutorials/syncing/git-push SVN使用一 ...
- Storm概念讲解和工作原理介绍
Strom的结构 Storm与传统关系型数据库 传统关系型数据库是先存后计算,而storm则是先算后存,甚至不存 传统关系型数据库很难部署实时计算,只能部署定时任务统计分析窗口数据 ...
随机推荐
- 锐捷Linux版的下载和使用(福大客户端)
下载锐捷程序包 点此下载 没有连接到锐捷里就进不了这个安装包的官方下载界面(好矛盾啊这个),所以我把它上传到博客园了. 解压文件 schaepher:~$ cd Downloads/ schaephe ...
- selenium常用内容
一.声明浏览器对象 注意点一,Python文件名或者包名不要命名为selenium,会导致无法导入 from selenium import webdriver #webdriver可以认为是浏览器的 ...
- jieba库分词统计
代码在github网站,https://github.com/chaigee/chaigee,中的z3.py文件 py.txt为团队中文简介文件 代码运行后词频统计使用xlwt库将数据发送到excel ...
- Spring的注解@Qualifier小结
有以下接口: public interface EmployeeService { public EmployeeDto getEmployeeById(Long id); } 有两个实现类: @Se ...
- 73. Set Matrix Zeroes(中等)
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 重点是空间复 ...
- 开源Spring解决方案--lm.solution
Github 项目地址: https://github.com/liumeng0403/lm.solution 一.说明 1.本项目未按java项目传统命名方式命名项目名,包名 如:org.xxxx. ...
- 字符流之FileReader&FileWriter
package zhang; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; pub ...
- c++类的声明
就像函数的声明与定义分离一样,我们也可以仅声明类而暂时不定义类: class ClassName;//ClassName类的声明 这种声明有时被称作前向声明 对于一个类来说,我们创建它的对象之前该类必 ...
- 使用RedisDesktopManager工具,解决连接失败问题
今天在云服务器上搭建好了redis环境,想用RedisDesktopManager工具去连接一下,结果连接不上,显示如下图: 我确保了服务器防火墙关闭,又在redis配置文件中设置了requirepa ...
- kexec 内核快速启动流程分析
一.命令行 1. kexec -l $kpwd --append="$arg" 其中$kpwd =目标内核的路径 $arg =传给内核的参数,与/proc/cmdline一致时表示 ...