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)