数据仓库简介:
数据仓库有四个典型的特点:1、数据仓库是面向主题的 数据仓库的建立是针对一个主题的,可以是一个人事的管理,销售的管理的数据仓库,他的功能就是帮助用户分析数据用的。2、数据仓库是统一的,就是不同形式的数据,不同类型的数据,在存入数据仓库的时候会被转化成统一的形式进行存储。 3.数据仓库是永久的,不应该被删除或者修改,是用来查询使用的。4、数据仓库是历史的,为了发现业务中存在的趋势,分析用户需要使用大量数据。这与联机事务处理(online transaction processing,OLTP)系统截然相反,OLTP 系统对性能要求较高,历史数据必须移动到归档中。由于数据仓库关注数据在时间上的变化,因此称其是历史的(time variant)。
在每周或者每月,联机事务处理(oltp)数据库会将数据汇集到数据仓库中,但是在加载到数据仓库之前,这些数据会存在一个中转文件中。并且进行适当的处理(其实我也不知道进行啥处理)最后存储在一个叫fact table 的表中。
数据仓库的体系结构:分三种常见的体系结构:基本型,使用中转区,使用中转区和数据集。其实我看了一下三个图,很好理解的,基本的就是没有中转区的那个,有中转区的可以在存入数据仓库之前存入中转区,这样就能处理之后再存储了,至于带集市的那个,就是在查询数据的时候,提前把各种数据分开,比如财务的,库存的,销售的,都分别存储在不同的地方,这样查询的效率就高了哈。。
抽取转换加载(etl):
从原系统抽取数据再存储到数据仓库的过程就被称为ETL,抽取(extraction)、转换(transaction)、加载(loading)。与数据共享工作相比,数据仓库系统除了需要交换数据,还需集成(integrate),重构(rearrange),融合(consolidate)来自多个源系统的数据,从而为业务智能提供一个统一的信息基础。此外,数据仓库系统中的数据量通常十分巨大。
可移动表空间:
可移动表空间是在两个oracle数据库中移动数据最快的方式,以前没有出现这个技术的时候,只能用平面文件作为中转站,先用exp导出数据到平面文件(flat file),然后再由flat file 导入(imp命令)到另一个数据库,
在数据仓库系统中,可移动表空间功能最常见的应用是将数据从中转数据库(staging database)移动到数据仓库,或将数据从数据仓库移动到数据集市。
用户可以利用表函数(table function)管道化(pipelined)及并行化(parallel)地执行数据转换(transformation),表函数可以由 PL/SQL,C,或 Java 实现。本章前面讲述的某些抽取案例中使用了起中间作用的中转表(staging table),但这会使数据在各个转换步骤间出现停顿,而采用表函数则能够避免这种停顿。
外部表:
外部表与常规表的区别在于外部表是只读的。在外部表上不能执行 DML 操作(UPDATE/INSERT/DELETE),也不能在其上创建索引。
表压缩:
用户可以通过压缩堆表(heap-organized table)来节省磁盘空间。分区表(partitioned table)就是一种典型的可以考虑采用表压缩(table compression)的堆表。
为了减少磁盘使用及内存使用(尤其是数据库缓存(buffer cache)),用户可以将数据库内的表及分区表以压缩形式存储。这有助于提高只读操作的性能。表压缩能够提高查询执行的速度,但会略微增加 CPU 开销。
变化数据捕捉:
变化数据捕捉功能无需依赖关系数据库外部的中间文件来中转数据。此功能根据对数据表的 INSERT,UPDATE,及 DELETE 操作来捕捉变化的数据。变化数据将存储在被称为变化表(change table)的数据库对象,这些数据能够根据用户的控制而提供给有需要的应用程序。
在数据仓库中使用物化视图:
在数据仓库系统中,可以通过创建汇总数据(summary)来提升其性能。汇总数据是一种聚合视图(aggregate view),其中可以保存预先计算的复杂关联,聚合,或排序,从而提高相关查询的执行性能。例如,用户可以创建一个表,保存按区域及产品汇总的销售数据。
在本章内或 Oracle 数据仓库系统中,汇总数据或聚合数据(aggregate)通常是通过物化视图(materialized view) 这种模式对象(schema object)创建的。物化视图的应用有多种,例如提高查询性能或进行数据复制。
分析型sql语句:
Oracle 提供了多种 SQL 功能,用于在数据库中进行分析操作。这些功能包括排名(ranking),移动平均值(moving average),累积求和(cumulative sum),百分比(ratio-to-report),以及同期比较(period-over-period comparison)等。尽管有些计算以前的 SQL 也能实现,但新语法能够实现更好的性能。
用于聚合运算的sql:这个聚合运算可是数据仓库的最基本的功能,oracle对group by 子句进行了扩展,这样可以使用户从最底层的数据明细一层层的向上汇总,极大的提高查询效率。
这些扩展使用户可以利用 GROUP BY 子句获得其感兴趣的汇总结果。用户无需使用 CUBE操作就能够高效地进行多维分析(analysis across multiple dimensions)。完全计算一个立方体(cube)将带来很重的系统负载,因此以聚合运算的结果集来代替立方体能够显著地提升系统性能。使用 CUBE,ROLLUP,及聚合运算都能得到一个单一的结果集,其效果与使用 UNION ALL 语句将多个聚合运算得到的数据行进行合并后相同。多维分析(multidimensional analysis)是决策支持系统(decision support system)中的一个关键概念:其含义是以各种可能的维度(dimension)的组合来观察一个企业。此处使用维度这个术语来代指分析中所使用的不同角度。常用的维度有时间(time),地域(geography),产品(product),部门(department),及渠道(distribution channel)等,但用户可以根据企业自身行为特点总结出各种维度。与一组维度值(imension value)相关的事件(event)或实体(entity)通常被称为事实(fact)。常见的事实有销售数量及金额,利润,客户数量,产量等,任何值得观察的信息都可以作为事实。
以下是一些多维查询的例子:
- 按产品维度及各层次地域维度(从州到国家再到地区)对 1999 年及 2000 年的销售进行聚合运算。
- 创建旋转表,以南美洲各个国家为角度分析 1999 年及 2000 年企业运行的成本。包括所有子汇总(subtotal)。
- 列出 2000 年创造汽车产品销售利润前 10 名的销售代表,并按佣金排序。
用于分析运算的sql:
Oracle 内含有一套分析型 SQL 函数(analytic SQL function),提供了高级 SQL 分析处理能力。用户可以利用这套函数进行以下计算:
- 排名(ranking)及百分位数(percentile)
- 移动窗口计算(moving window calculation)
- 滞后/提前分析(lag/lead analysis)
- 首位/末位分析(first/last analysis)
- 线性回归统计(linear regression statistic)
Oracle 还支持 CASE 表达式。CASE 表达式能够处理 if-then 逻辑。
为了进一步提升系统性能,分析函数可以被并行执行:即多个进程同时执行语句。这使运算更为高效,也提高了数据库的性能,可伸缩性(scalability),及易用性。
用于建模的sql:
Oracle 的 MODEL 子句能使 SQL 的计算能力更强大更灵活。利用 MODEL 子句,用户可以在结果集的基础上创建一个多维数组(multidimensional array),并可以使用此数据进行新的公式计算(formula)。公式可以为基本的数学运算,也可以是包含递归运算的联立方程(simultaneous equations using recursion)。对于某些应用来说,MODEL 子句能够代替在 PC 上运行的电子表格软件。Oracle 的 MODEL 子句增强了其可伸缩性,可管理性,协作能力及安全性。核心查询引擎(core query engine)对其处理的数据量没有限制。当数据库具备了定义和执行模型的能力后,用户不必在独立的建模系统与数据库间移动大量数据。模型可以在工作组(workgroup)间共享,这使所有应用都能获得具备一致性的数据。同样,对模型的访问也可以依靠 Oracle 的安全特性进行细致的控制。MODEL 子句丰富的功能有助于增强所有类型的应用系统。
PLAP功能概述:
Oracle OLAP 增强了 Oracle 关系型数据库的查询性能及计算能力,而这些增强以前只能通过多维数据库实现。此外,Oracle OLAP 中提供了一套 Java OLAP API,供用户开发适合 internet 环境的分析应用程序。与其他将 OLAP 与 RDBMS 整合的技术不同,Oracle OLAP 多维数据库不需要将数据从关系型数据存储转移到多维数据存储。Oracle OLAP 是一个实现了 OLAP 功能的关系型数据库。因此,Oracle 在提供了多维数据库功能的同时,还具备 Oracle 数据库的可伸缩性,可访问性(accessibility),安全性,可管理性,及高可用性。专为开发适合 internet 环境的分析应用程序的 Java OLAP API 提供了高效的数据访问能力。