数据仓库和技术

数据仓库没有联机数据更新,锁定和完整性需求非常少,只需要最基本的远程处理接口。

1 技术需求

(1) 管理大量数据的能力

能管理并管理好,综合考虑容量、效率和费用。

(2) 管理多种介质的能力

使用多种存储介质有效且划算地管理大量数据

(3) 索引和监控

索引能对数据进行快速且方便地访问。

高效访问索引方式:

■ 用位图的方法。

■ 用多级索引。

■ 将部分或全部索引装入内存。

■ 当被索引的数据的次序允许压缩时对索引项进行压缩。

■ 创建选择索引或范围索引。

能够随意监控,但过程不要太复杂,费用不要太高

主要监控:

■ 决定是否应数据重组。

■ 决定索引是否建立得不恰当。

■ 决定是否有太多数据溢出。

■ 决定数据的统计成份。

■ 决定剩余的可用空间

(4) 接收和传送技术

能够高效且方便地使用,并且能在批模式下运行

(5) 允许控制存储位置

程序员或设计者能在需要时调整数据存储位置

(6) 并行存储和管理

用以提高性能,技术上没有限制,通常受经济限制

(7) 元数据管理

能够准确和实时地访问元数据

业务元数据和技术元数据分别是对业务人员和技术人员有用的元数据。

每一个业务智能环境都应该有自己的元数据,如报表作者、业务智能工具等。

典型元数据包括:

■ 数据仓库表的结构。

■ 数据仓库表的属性。

■ 数据仓库的源数据(记录系统)。

■ 从记录系统到数据仓库的映射。

■ 数据模型的规格说明。

■ 抽取日志。

■ 访问数据的公用例行程序

(8) 多种语言接口

语言应该是易于操作、稳健和高效的

典型语言接口需求:

■ 能够一次访问一组数据。

■ 能够一次访问一条记录。

■ 特别要保证,为了满足某个访问要求能够支持一个或多个索引。

■ 有S Q L接口。

■ 能够插入、删除、更新数据。

(9) 高效加载

两种基本方式:

  • 语言接口逐条或工具批量加载
  • 装载前先缓冲,仅当数据量大且处理复杂,或者需要合并多源数据时。

(10) 数据压缩

减少空间管理问题,充分使用IO资源。

(11) 支持复合主键

因为数据仓库中数据的时变特性,以及原子数据中的主键/外键关系

(12) 变长数据

由于数据仓库中数据的多样性,必须对变长结构支持。需要有效管理变长数据。

(13) 加锁管理

因为加锁程序消耗相当数量的资源,需要有选择地开关

(14) 支持只涉及索引的处理

允许仅通过索引满足需求

(15) 快速复原

能够从大容量存储设备中快速复原一个数据仓库表。

(16) 其他技术

以下特性在数据仓库环境中作用小,建议关闭。

■ 事务集成性。

■ 高速缓存。

■ 行/页级的锁定。

■ 参照完整性。

■ 数据视图

2 DBMS类型和数据仓库

传统事务处理数据库环境和数据仓库环境区别

  • 数据库环境通过事务处理数据更新,数据仓库环境通过快照加载处理数据更新。

  • 数据仓库环境中数据量大于数据库环境,因为其含有综合数据和历史数据。

传统通用DBMS与数据仓库专用DBMS区别

  • 数据更新

    传统通用使用记录级的、基于事务的更新。即使不使用也要提供锁管理等开销。而数据仓库不用开销。

  • 基本数据管理

    传统通用使用附加空间支持更新和插入操作时的块扩展。数据仓库因为不需要更新,不需要物理块扩展。

  • 索引

    传统通用索引数量有限且需要空间和数据管理。数据仓库使用更加稳健和完善的索引结构。

  • 数据管理能力和策略

    传统通用为了提高事务访问和处理效率而优化,数据仓库为了DSS访问和分析优化

3 多维DBMS(数据集市)和数据仓库

(1) 区别

  • 数量级:数据仓库至少比多维DBMS大一个数量级
  • 数据访问:数据仓库适合少量,多维DBMS适合大量
  • 时间范围:数据仓库长时间,多维DBMS短时间
  • 用户对象:数据仓库只允许分析人员受限访问,多维DBMS自由
  • 关联:两者互补,但数据仓库不是建立在多维DBMS上?

(2) 数据模型

项目 关系型 立方体
海量数据 支持 相对少量
动态连接 支持 有问题
通用数据更新 支持 不支持
适合使用模式 未知使用模式 已知使用模式
性能 不是最佳 对DSS最优
访问优化 不支持 支持

(3) 数据获取

通常,先加载到数据仓库,再从数据仓库流向多维DBMS。

如果多维DBMS直接获取数据,将面临以下问题:

  • 抽取程序开发量大

    每个部门的多维DBMS都需要一套定制的抽取程序

  • 缺乏统一的、集成的和确定的数据源

  • 维护开发量大

  • 硬件资源消耗大

  • 元数据无法有效管理和控制

  • 缺乏数据一致性

4 多种存储介质上构建数据仓库

建议使用统一的存储环境底层技术。在双重环境中,通常使用混合技术。

5 元数据角色

在操作型环境中,元数据几乎是事后补记,与文档具有相同的重要性。但在数据仓库环境中,元数据更加重要。

元数据重要作用

  • 帮助DSS分析者理解数据
  • 涉及操作型环境和数据仓库环境间的映射管理
  • 跟踪数据结构的变化

6 上下文

是内容的附加信息,便于解释数据

(1) 类型

  • 简单:与数据本身有关
  • 复杂:企业内部背景环境信息
  • 外部:企业外部背景环境信息

image-20200615115404709

(2) 捕获和管理

复杂和外部上下文不断变化和没有固定状态,难以捕获和确定。

(3) 上下文信息管理历史

缺点

  • 面向开发者,对用户缺乏可见性
  • 经常被回避,管理是被动的
  • 容易被忽视
  • 仅局限于简单上下文信息

7 数据仓库刷新

根据历史数据定期刷新是数据仓库运作相关的最大和最不可预知的开销。

(1) 策略

  • 重复读取数据

    影响传统DBMS在线和活动

    读取重复数据

    开销非常大

  • 在传统环境中捕获正在修改的数据

    不再影响传统DBMS

    不需全表扫描

(2) 数据捕获方法

1) 数据复制

数据修改前标识

优点:

  • 有选择地控制捕获处理
  • 数据格式整洁、定义完善

缺点:

  • 额外的IO操作,且在系统高性能运行时进行
  • 需要不断注意控制捕获过程的参数和触发器的定义,因为数据仓库不稳定和总在变化

2) 变化数据捕获

通过日志捕获和确定在线过程中的变化,或者在数据变化时从DBMS缓冲区读取已改变的数据。

优点:

  • 高效率,不需要额外的IO操作
  • 能够捕获所有的额数据更新操作
  • 对缓冲区读取方法,不必读取日志,缩短变化到刷新的时间

缺点:

  • 读取和理解日志的障碍
  • 对缓冲区读取方法,需要更多的在线资源,影响性能

8 测试

与传统环境中的生产+测试环境不同,数据仓库不需要测试环境。

原因:

  • 数据仓库规模太大
  • 数据仓库本身就是迭代开发的,容易纠错

参考资料

《数据仓库》