25.01.2014 Aufrufe

IBM Informix 数据仓库加速器

IBM Informix 数据仓库加速器

IBM Informix 数据仓库加速器

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>IBM</strong> <strong>Informix</strong> 数 据 仓 库 加 速 器<br />

为 性 能 而 生<br />

Keshava Murthy<br />

资 深 技 术 专 家<br />

<strong>IBM</strong> <strong>Informix</strong> 开 发 部 门<br />

Translated to Simplified Chinese by<br />

Ye Xie 谢 烨<br />

<strong>IBM</strong> <strong>Informix</strong> Enablement Team<br />

1


想 象 一 下 , 业 务 分 析 师 和和 高 级 管 理 人 员员 在 几 秒 钟 ( 而 不 是 几 个 小 时 ) 内 就 可 以 得 到到 他 们 需<br />

要 的 报 告告 。 想 象 一 下 , 这 使 分 析 和和 洞 察 的 速 度 有 了 多 大 的 提 高 。 想 象 一 下 , 这 使 业 务 执 行 速 度 有 了<br />

多 大 的 提 高 。 想 象 一 下 , 不 需 要 持 续 监 控 和和 优 化化 就 可 以 提 高 数 据 仓 库 的 查 询 性 能 。 想 象 一 下 , 甚 至<br />

都 不 需 要 使 用 数 据 立 方 体 (cube)、 概 要 表 、 索 引 、 统 计 信 息 和和 分 片 就 可 以 提 高 数 据 仓 库 的 查 询 性<br />

能 。<br />

在 对 <strong>Informix</strong> 数 据 仓 库 加 速 器 (<strong>Informix</strong> Warehouse Accelerator, IWA) 进 行 了 大 量 的 测 试 后 , 来 自<br />

美 国 Skechers 公 司 的 资 深 数 据 库 架 构 师 Ashutosh Khunte 说 : 在 使 用 IWA 之 前前 , 我 们 在 目 前前 使 用 的<br />

企 业 级 数 据 仓 库 上 对 “ 拥 有 超 过 10 亿 个 数 据 行 ” 的 表 进 行 复 杂 的 销 售 分 析 查 询 , 需 要 几 分 钟 到到 45<br />

分 钟 才 能 完 成 。 使 用 <strong>Informix</strong> 数 据 仓 库 加 速 器 进 行 同 样 的 查 询 , 只 需 要 2 到到 4 秒 即 可 完 成 ! 这 意 味味<br />

着 性 能 提 高 了 60 到到 1400 倍 , 平 均 超 过 450 倍 ---- 没 有 创 建 任 何 索 引 和和 数 据 立 方 体 (cube), 也 没<br />

有 进 行 任 何 查 询 优 化化 或 应 用 程 序 的 修 改 !<br />

Advanced Data Tools 的 Lester Knutsen 使 用 IWA 来 处 理 他 的 客 户 ---- 美 国 农 业 部 的 数 据 。 他 说 :<br />

IWA 提 供 了 令 人 印 象 深 刻刻 的 性 能 。 使 用 IWA 后 , 运 行 速 度 比 以 前前 快 了 30 倍 。 深 度 列 式 存 储 技 术 节<br />

省 了 大 量 的 处 理 时 间 ; 在 没 有 做 任 何 数 据 库 调 优 和和 物 理 存 储 优 化化 的 情 况 下 , 查 询 处 理 时 间 从 9.5 小<br />

时 减 少 到到 15 分 钟 !<br />

来 自 ATG 的 咨咨 询 师 Thomas Gemesi 说 : 有 了 IWA 后 , 可 以 在 一 个 平 台 上 同 时 处 理 数 据 仓 库 负 载 和和<br />

联 机 事 务 处 理 (OLTP ) 负 载 。 查 询 可 以 在 几 秒 内 完 成 , 而 不 需 要 任 何 额 外 的 投 资 。<br />

变 化化 是 永 恒 的 。 对 速 度 的 诉 求 是 无 止 境 的 。 您 必 须 理 解 业 务 模 型 , 预 测 趋 势势 , 并 不 断<br />

调 整 业 务 流 程 。 数 据 分 析 可 以 帮 助 您 理 解 业 务 的 趋 势势 和和 转 变 。 只 有 做 到到 比 任 何 人 都 快 , 持 续 保 持 ,<br />

并 做 到到 更 低 的 成 本 , 您 才 可 以 比 您 的 竞 争 对 手 更 有 优 势势 。<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器 提 供 了 优 异 的 性 能 , 且 免 除 了 “ 在 传 统 数 据 仓 库<br />

上 需 要 做 的 优 化化 工 作 ”。 它 被 设 计 来 在 秒 级 上 处 理 海 量 数 据 。 它 被 设 计 来 快 速 且 正 确 的 提 供 业 务 报<br />

告告 , 而 不 需 要 对 应 用 程 序 架 构 进 行 任 何 修 改 , 也 不 需 要 额 外 的 维 护 成 本 。<br />

创 新 是 关 键 。 内 存 访 问 速 度 和和 磁 盘 访 问 速 度 之 间 的 差 距 随 着 时 间 的 推 移 越 来 越 大 。 在 过 去 , 内<br />

存 的 价 格 昂 贵 , 因 此 传 统 数 据 库 系 统 使 用 的 内 存 较 少 , 我 们 通 过 减 少 磁 盘 I/O 量 和和 缓 存 技 术 来 对 传<br />

统 数 据 库 系 统 进 行 优 化化 。 随 着 内 存 价 格 的 不 断 下 降 , 我 们 已 经 可 以 承 受 TB 级 内 存 的 价 格 , 因 此 系<br />

统 需 要 被 重 新 设 计 。<strong>IBM</strong> 的 服 务 器 现 已 可 支 持 3TB 的 内 存 , 并 且 可 支 持 的 内 存 量 将 越 来 越 大 。IWA<br />

顺 应 这 一 趋 势势 , 在 内 存 中 压 缩 、 存 储 所 有 数 据 , 消 除 了 磁 盘 I/O。 新 版 本 的 CPU 处 理 器 有 更 多 的 核<br />

(core) 和和 更 大 的 处 理 器 内 置 缓 存 。 于 是 ,IWA 加 大 并 行 度 , 减 少 进 程 间 的 同 步 , 使 用 更 好好 的 算 法 以<br />

充 分 利 用 处 理 器 内 置 缓 存 。 这 些 技 术 将 查 询 性 能 提 升 到到 一 个 新 的 高 峰 。 这 些 技 术 使 得 <strong>Informix</strong> 数 据<br />

仓 库 加 速 器 成 为 一 个 简 单 且 优 雅 的 设 计 。<br />

3


简 单 就 是 力力 量<br />

完 美 ,<br />

不 是 不 需 要 添 加 任 何 东 西 ,<br />

而 是 不 需 要 去 除 任 何 东 西<br />

-- Antoine de Saint-Exupery<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器 (IWA) 有 3 个 关 键 点 :<br />

• 不 需 要 进 行 手 工 调 优<br />

• 支 持 已 有 业 务 工 具 和和 应 用<br />

• 与 现 有 的 数 据 仓 库 架 构 协 同 工 作<br />

如如 果 您 已 经 在 您 的 应 用 环 境 中 使 用 了 <strong>Informix</strong> 数 据 库 服 务 器 , 那 么 只 需 要 将 IWA“ 插 入 ” 到到 现 有 的<br />

系 统 中 即 可 。 如如 果 是 新 的 部 署 , 您 可 以 根 据 实 际 情 况 灵 活 的 选 择 各 种 平 台 和和 开 放 的 对 <strong>Informix</strong> 数 据<br />

库 服 务 器 和和 IWA 进 行 集 成 。<br />

调 优<br />

索 引<br />

统 计 信 息<br />

存 储 管 理<br />

分 区<br />

昂 贵 的<br />

硬 件<br />

改 变<br />

数 据 库<br />

修 改<br />

应 用 程 序<br />

概 要 表<br />

只 需 要 把 数 据 交 给 IWA 就 可 以 了 。 它 时 刻刻 准 备 着 向 您 展 示 它 的 卓 越 性 能 。<br />

无 需 创 建 索 引 , 无 需 索 引 建 议 器 , 无 需 重 组 索 引 。IWA 的 查 询 处 理 引 擎 可 以 在 几 毫 秒 或 者 几 秒 内 完<br />

成 数 亿 记 录 的 逻 辑 扫 描 。“ 深 度 列 式 存 储 技 术 、 对 压 缩 数 据 的 查 询 处 理 技 术 、 利 用 最 新 处 理 器 特 征<br />

的 创 新 算 法 等 ” 使 得 索 引 不 再 被 需 要 。<br />

无 需 收 集 统 计 信 息 。 传 统 数 据 库 优 化化 器 依 赖 定 期 收 集 统 计 信 息 以 制制 定 性 能 更 好好 的 执 行 计 划 。 使 用<br />

IWA, 表 关 联 的 顺 序 是 自 动 确 定 的 , 统 一 采 用 星 型 连 接 (star join) 方 式 。“ 不 存 在 索 引 ” 使 得 “ 选<br />

项 (option)” 和和 “ 运 行 时 优 化化 (runtime optimization)” 被 简 化化 , 因 此 IWA 不 需 要 “ 收 集 统 计 信 息 ” 和和<br />

对 “ 收 集 统 计 信 息 ” 提 供 建 议 的 建 议 器 。<br />

无 需 创 建 分 片 ( 分 区 ) 表 。 数 据 将 自 动 进 行 横 向 、 纵 向 的 分 片 。 由 于 采 用 深 度 列 式 存 储 技 术 , 查 询<br />

数 据 将 从 横 向 和和 纵 向 分 片 修 剪剪 ( 也 叫 分 片 消 除 ) 中 收 益 。<br />

4


无 需 对 单 个 查 询 或 者 整 个 系 统 进 行 调 优 。 在 安 装 IWA 的 过 程 中 , 只 需 要 配 置 基 本 的 内 存 和和 存 储 即<br />

可 。 一 致 的 执 行 计 划 、 磁 盘 I/O 的 消 除 、 快 速 数 据 扫 描 和和 表 关 联 使 得 不 再 需 要 运 行 时 的 优 化化 。<br />

无 需 存 储 管 理 。 所 有 的 数 据 都 保 存 在 内 存 中 , 磁 盘 仅 是 内 存 数 据 的 一 个 备 份 。 因 此 不 需 要 为 表 、 索<br />

引 进 行 规 划 和和 创 建 存 储 空 间 。<br />

无 需 昂 贵 的 硬 件 。 IWA 被 设 计 来 运 行 在 经 济 的 硬 件 上 , 并 且 和和 您 的 基 础 设 施 一 起 与 时 俱 进 。IWA 运<br />

行 在 Linux/Intel 机 器 上 。 它 与 安 装 在 Linux/Intel, AIX/Power, HP-UX/Itanium, Solaris/Sparc 上 的<br />

<strong>Informix</strong> 数 据 库 服 务 器 协 同 工 作 。<br />

无 需 改 变 数 据 库 。 IWA 在 数 据 仓 库 中 利 用 现 有 的 逻 辑 模 式 。<br />

无 需 修 改 应 用 程 序 。 IWA 以 “ 资 源 ” 的 方 式 插 入 到到 <strong>Informix</strong> 数 据 库 服 务 器 。<strong>Informix</strong> 数 据 库 服 务 器<br />

知 道 数 据 集 市 存 储 在 加 速 器 上 , 并 将 相 关 的 查 询 自 动 “ 路 由 ” 到到 IWA 上 。 您 的 应 用 程 序 和和 工 具 不 需<br />

任 何 改 变 。<br />

无 需 创 建 概 要 表 和和 物 化化 视 图 。 IWA 上 的 表 扫 描 和和 关 联 至 少 比 传 统 数 据 库 要 快 一 个 数 量 级 。 因 此 不 需<br />

创 建 和和 维 护 概 要 表 。<br />

无 需 配 置 数 据 页 大 小 。 深 度 列 式 存 储 技 术 将 自 动 确 定 和和 优 化化 内 存 单 元 的 大 小 。<br />

无 需 管 理 临 时 空 间 。 中 间 结 果 也 是 压 缩 的 , 只 需 少 量 空 间 。<br />

无 需 优 化化 器 提 示 (optimizer hint)。 IWA 使 用 星 型 连 接 的 执 行 计 划 。IWA 根 据 运 行 时 情 况 自 动 调 整 表<br />

连 接 的 顺 序 。<br />

5


<strong>Informix</strong> 数 据 仓 库 架 构<br />

事 务 数 据<br />

商 业 智 能 应 用<br />

业 务 线 的 数 据<br />

<strong>Informix</strong> 数 据 库 服 务 器<br />

在 线 分 析<br />

主 数 据 管 理<br />

报 表 应 用<br />

合 作 伙 伴<br />

的 数 据<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器<br />

(IWA)<br />

工 具<br />

<strong>Informix</strong> 数 据 库 服 务 器 是 一 种 可 伸 缩 的 和和 具 备 高 可 用 性 的 数 据 库 服 务 器 , 数 以 千 计 的 客 户 使 用<br />

<strong>Informix</strong> 进 行 关 键 业 务 的 事 务 处 理 和和 业 务 分 析 。 <strong>Informix</strong> 数 据 库 服 务 器 可 以 很 好好 的 支 持 数 据 仓 库 。<br />

它 包包 含 了 ETL 工 具 、 对 时 间 序 列 数 据 的 内 建 支 持 、 在 线 操 作 、 深 度 压 缩 、 查 询 优 化化 等 , 这 些 特 性 都<br />

可 被 用 来 处 理 复 杂 的 数 据 仓 库 业 务 。 <strong>Informix</strong> 用 户 可 以 使 用 如如 Cognos, Microstrategy 等 BI 工 具 来<br />

分 析 和和 改 进 他 们 的 业 务 。<br />

传 统 数 据 仓 库 查 询 之 所 以 复 杂 是 有 原 因 的 。 该 类 型 的 查 询 需 要 访 问 数 百 万 条 或 者 数 亿 条 的 记 录 , 中<br />

间 结 果 也 非 常 大 , 查 询 在 并 行 处 理 的 情 况 下 性 能 最 好好 。 星 型 关 联 (star join) 优 化化 技 术 是 用 来 在 传 统<br />

系 统 中 处 理 这 些 复 杂 查 询 而 设 计 的 。 所 有 这 些 需 要 一 个 有 经 验 的 DBA 对 系 统 负 载 情 况 的 理 解 以 及 对<br />

系 统 参 数 和和 索 引 的 优 化化 。<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器 (IWA) 提 供 了 突 破 性 的 数 据 仓 库 查 询 性 能 , 消 除 了 数 据 库 的 调 整 优 化化 任 务 ,<br />

并 无 需 更 改 现 有 的 应 用 程 序 和和 工 具 。 本 文 后 面 部 分 将 阐 述 加 速 技 术 、IWA 的 使 用 、IWA 与 <strong>Informix</strong><br />

数 据 库 服 务 器 的 集 成 。<br />

6


部 署 IWA<br />

IWA 目 前前 只 能 运 行 在 使 用 英 特 尔 芯 片 的 高 性 能 Linux 操 作 系 统 上 。 <strong>Informix</strong> 数 据 库 服 务 器 和和 IWA 可<br />

以 在 同 一 台 服 务 器 或 不 同 的 服 务 器 上 运 行 。 您 可 以 在 Linux/Intel, AIX/ Power, HPUX/HP Itanium,<br />

Solaris/Sparc 运 行 <strong>Informix</strong> 数 据 库 服 务 器 , 而 在 另 外 一 台 Linux/Intel 上 运 行 IWA。<br />

IWA 是 <strong>Informix</strong> Ultimate Warehouse Edition(IUWE) 的 一 部 分 。IUWE 包包 括 <strong>Informix</strong> 数 据 库 服 务 器<br />

(Ultimate Edition ) 和和 IWA 安 装 包包 。IWA 安 装 包包 包包 括 IWA 和和 <strong>IBM</strong> Smart Analytics Optimizer<br />

Studio。<strong>IBM</strong> Smart Analytics Optimizer Studio 是 用 于 配 置 和和 管 理 “IWA 与 <strong>Informix</strong> 数 据 库 服 务 器 ”<br />

的 一 个 工 具 。 下 面 是 迅 速 部 署 <strong>IBM</strong> Smart Analytics Optimizer Studio 的 步 骤 。IWA 产 品品 包包 括 一 个 快 速<br />

入 门 指 南 (Quick Start Guide), 以 及 一 个 全 面 介 绍 安 装 配 置 IWA 的 管 理 指 南 (Administration Guide)。<br />

IWA 需 要 配 置 的 地 方 很 少 , 只 需 配 置 内 存 容 量 、CPU 资 源 、 数 据 备 份 的 位 置 等 。 本 文 的 后 面 将 会 进<br />

一 步 叙 述 “ 对 IWA 进 行 配 置 的 要 点 ”。 管 理 指 南 里 也 有 对 “IWA 的 配 置 ” 的 详 细 叙 述 。<br />

<strong>IBM</strong> Smart Analytics Optimizer Studio 是 一 个 基 于 Eclipse 的 工 具 , 用 于 管 理 IWA、 定 义 和和 部 署 数 据<br />

集 市 。Optimizer Studio 有 两 个 版 本 : Linux 版 本 和和 Windows 版 本 。 您 可 以 把 “Linux 版 本 的<br />

Optimizer Studio” 与 <strong>Informix</strong> 数 据 库 服 务 器 安 装 在 同 一 台 服 务 器 上 , 也 可 以 把 “Linux 版 本 的<br />

Optimizer Studio” 与 <strong>Informix</strong> 数 据 库 服 务 器 安 装 在 不 同 的 服 务 器 上 。 若 要 使 用 “Windows 版 本 的<br />

Optimizer Studio”, 将 自 解 压 可 执 行 文 件 传 到到 Windows 服 务 器 上 并 进 行 安 装 。<br />

部 署 <strong>Informix</strong> 数 据 库 服 务 器 和和 IWA 的 步 骤<br />

步 骤 1. 安 装 、 配 置 、 启启 动<br />

<strong>Informix</strong><br />

步 骤 2. 安 装 、 配 置 、 启启 动<br />

IWA<br />

步 骤 3. 将 Studio 连 接 到到<br />

<strong>Informix</strong> 和和 IWA<br />

步 骤 4. 设 计 、 验 证 、 部<br />

署 数 据 集 市<br />

步 骤 5. 装 载 数 据 到到 IWA<br />

准 备 就 绪<br />

步 骤 1<br />

<strong>Informix</strong> 数 据 库 服 务 器<br />

步 骤 2<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器<br />

(IWA)<br />

<strong>IBM</strong> Smart Analytics<br />

Optimizer Studio<br />

步 骤 3<br />

步 骤 4<br />

步 骤 5<br />

商 业 智 能 应 用<br />

7


IWA 中 的 进 程<br />

商 业 智 能 应 用<br />

在 线 分 析 程 序<br />

报 表 应 用<br />

工 具<br />

<strong>Informix</strong> 数 据 库 服 务 器<br />

<strong>Informix</strong> 数 据 仓 库 加 速 器 (IWA)<br />

协 调 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

8


IWA 与 <strong>Informix</strong> 数 据 库 服 务 器 之 间 使 用 TCP/IP 网 络 进 行 通 信 。 如如 果 IWA 和和 <strong>Informix</strong> 数 据 库 服<br />

务 器 位 于 同 一 台 机 器 上 , 它 们 之 间 使 用 TCP/IP 回 环 连 接 (TCP/IP loopback connection) 进 行 通 信 。IWA<br />

里 包包 含 协 调 者 进 程 和和 工 作 者 进 程 。<strong>Informix</strong> 数 据 库 服 务 器 通 过 IWA 里 的 协 调 者 进 程 与 IWA 进 行 通<br />

信 。 协 调 者 进 程 和和 工 作 者 进 程 紧 密 协 作 , 快 速 的 处 理 查 询 请 求 。 您 可 以 通 过 配 置 参 数 来 设 置 IWA 总<br />

的 进 程 数 、 使 用 的 内 存 量 和和 使 用 的 CPU 资 源 。<br />

当 <strong>Informix</strong> 数 据 库 服 务 器 和和 IWA 都 在 运 行 时 , 可 通 过 <strong>IBM</strong> Smart Analytics Optimizer Studio 将<br />

<strong>Informix</strong> 数 据 库 服 务 器 和和 IWA 关 联 起 来 ( 有 关 详 情 , 请 参 阅 手 册 )。 如如 果 关 联 成 功 ,<strong>Informix</strong> 数 据 库<br />

服 务 器 将 会 把 IWA 的 信 息 写 入 <strong>Informix</strong> 数 据 库 服 务 器 的 SQLHOSTS 文 件 。SQLHOSTS 文 件 中 与 IWA<br />

相 关 的 信 息 如如 下 所 示 :<br />

sales_acc group -- c=1,a=4b3f3f457d5f552b613b4c587551362d2776496f226e714d75217e22614742677b424224<br />

sales_acc_1 dwsoctcp 127.0.0.1 21022 g=sales_acc<br />

在 这 个 示 例 中 , sales_acc 是 IWA 的 名 字 。 <strong>Informix</strong> 数 据 库 服 务 器 在 SQLHOSTS 文 件 中 为<br />

sales_acc 创 建 了 一 个 新 的 组 (group)。 一 长 串 的 十 六 进 制制 值 是 <strong>Informix</strong> 数 据 库 服 务 器 与 IWA 通 信 时<br />

使 用 的 认 证 码 。 这 是 用 来 确 保 只 有 拥 有 认 证 码 的 <strong>Informix</strong> 数 据 库 服 务 器 才 能 与 IWA 进 行 通 信 。<br />

sales_acc_1 是 sales_acc 中 的 协 调 者 进 程 的 名 字 。 数 据 库 协 议 dw 是 <strong>Informix</strong> 数 据 库 服 务 器 与<br />

IWA 之 间 通 信 时 使 用 的 协 议 。 它 与 DRDA 协 议 很 类 似 。 它 被 做 了 特 别 的 优 化化 从 而 <strong>Informix</strong> 数 据 库 服<br />

务 器 与 IWA 之 间 能 够 更 快 更 好好 的 通 信 。127.0.0.1 是 TCP/IP 回 环 连 接 (TCP/IP loopback connection)<br />

的 地 址 , 意 味味 着 IWA 和和 <strong>Informix</strong> 数 据 库 服 务 器 位 于 同 一 台 计 算 机 上 。 在 这 个 示 例 中 , 只 有 一 个 协 调<br />

者 进 程 。 如如 果 IWA 有 大 量 的 工 作 者 进 程 , 那 么 IWA 将 会 有 多 个 协 调 者 进 程 来 处 理 故 障 转 移 。 每 个<br />

协 调 者 进 程 在 SQLHOSTS 文 件 中 都 对 应 一 行 。<br />

协 调 者 进 程 有 三 个 重 要 的 作 用 :<br />

1. 协 调 者 进 程 是 IWA 与 <strong>Informix</strong> 数 据 库 服 务 器 通 信 的 主 要 接 口 。<strong>Informix</strong> 数 据 库 服 务 器 与 协 调<br />

者 进 程 通 信 , 从 而 发 送 数 据 、 发 送 查 询 请 求 、 获 得 查 询 结 果 。<br />

2. 在 数 据 装 载 阶 段 , 协 调 者 进 程 将 数 据 分 配 给 各 个 工 作 者 进 程 。 接 着 协 调 者 进 程 从 各 个 工 作 者<br />

进 程 处 收 集 压 缩 字 典 (compression dictionary) 的 信 息 , 并 将 这 些 压 缩 字 典 的 信 息 整 合 成 一 个<br />

总 的 压 缩 字 典 , 然 后 将 这 个 总 的 压 缩 字 典 发 送 给 所 有 的 工 作 者 进 程 。<br />

3. 在 查 询 处 理 阶 段 , 协 调 者 进 程 从 <strong>Informix</strong> 数 据 库 服 务 器 得 到到 查 询 语 句 后 , 将 查 询 语 句 发 给 各<br />

个 工 作 者 进 程 。 工 作 者 进 程 处 理 查 询 语 句 得 到到 中 间 结 果 后 , 将 中 间 结 果 发 给 协 调 者 进 程 。 然<br />

后 协 调 者 进 程 对 中 间 结 果 进 行 汇 聚 , 并 对 数 据 进 行 解 压 缩 , 如如 果 需 要 对 数 据 进 行 排 序 则 对 数<br />

据 进 行 排 序 , 得 到到 查 询 的 最 终 结 果 , 并 将 之 发 给 <strong>Informix</strong> 数 据 库 服 务 器 。<br />

工 作 者 进 程 有 两 个 重 要 的 作 用 :<br />

1. 在 数 据 装 载 阶 段 , 每 个 工 作 者 进 程 使 用 频 率 划 分 (frequency partitioning) 的 方 法 对 数 据 进 行 分<br />

析 , 自 动 对 数 据 进 行 垂 直 的 和和 水 平 的 划 分 , 然 后 使 用 深 度 列 式 存 储 (deep columnar) 技 术 对 数<br />

9


据 进 行 压 缩 。 数 据 被 压 缩 后 , 将 被 写 入 磁 盘 以 用 于 恢 复 (recovery)。 后 面 我 们 会 对 深 度 列 式 存<br />

储 技 术 进 行 较 详 细 的 介 绍 。<br />

2. 工 作 者 进 程 对 被 压 缩 的 数 据 进 行 查 询 处 理 。 每 个 工 作 者 进 程 维 持 着 处 于 压 缩 态 的 “ 事 实 表<br />

(fact table) 的 一 部 分 ” 和和 “ 所 有 的 维 表 (dimension tables)”。 工 作 者 进 程 得 到到 查 询 处 理 的 中<br />

间 结 果 后 , 将 中 间 结 果 返 回 给 协 调 者 进 程 。 查 询 处 理 100% 是 在 内 存 中 完 成 的 。<br />

协 调 者 进 程 和和 工 作 者 进 程 紧 密 协 作 , 使 每 一 条 查 询 都 被 并 行 的 处 理 , 从 而 快 速 的 返 回 结 果 。<br />

设 计 、 验 证 和和 部 署 数 据 集 市<br />

在 维 基 百 科 (wikipedia) 的 定 义 中 , 数 据 集 市 (data mart) 是 数 据 仓 库 的 一 个 子 集 , 通 常 与 一 条 业 务 线<br />

或 一 个 团 队 相 关 。 在 本 文 中 我 们 将 使 用 这 个 定 义 。 建 在 <strong>Informix</strong> 上 的 企 业 级 数 据 仓 库 可 以 包包 含 销<br />

售 、 仓 储 、 客 户 服 务 、 市 场 营 销 等 各 方 面 的 数 据 。 某 些 相 关 方 面 的 数 据 构 成 了 数 据 集 市 , 您 可 以 对<br />

数 据 集 市 进 行 加 速 处 理 , 从 而 提 供 更 高 的 价 值 。 例 如如 , 销 售 经 理 可 能 要 分 析 销 售 和和 仓 储 方 面 的 数<br />

据 , 从 而 了 解 销 售 趋 势势 和和 制制 定 合 适 的 销 售 激 励励 策 略 。 对 于 这 项 需 求 , 您 只 需 关 注 包包 含 销 售 、 仓 储 数<br />

据 的 数 据 集 市 。<br />

在 IWA 中 , 每 个 数 据 集 市 包包 含 一 个 或 多 个 snowflake schema。 每 个 snowflake schema 包包 含 一 个 事<br />

实 表 (fact table) 和和 多 个 维 表 (dimension table)。 在 下 面 的 snowflake schema 中 ,DAILY_SALES 是 事 实<br />

表 , 它 周周 边 的 表 是 维 表 。<br />

10


我 们 使 用 <strong>IBM</strong> Smart Analytics Optimizer Studio 来 设 计 数 据 集 市 。 一 个 数 据 集 市 界 定 了 一 个 事 实<br />

表 、 多 个 维 表 、 这 些 表 之 间 的 关 系 。 一 般 情 况 下 , 维 表 包包 含 的 数 据 行 比 较 少 , 例 如如 产 品品 信 息 、 客 户<br />

信 息 。 在 少 数 情 况 下 , 维 表 包包 含 的 数 据 行 比 较 多 , 例 如如 某 个 维 表 记 录 了 加 利 福 尼 亚 州 所 有 居 民 的 信<br />

息 。 一 旦 您 确 定 了 由 哪 些 表 来 组 成 一 个 数 据 集 市 , 您 接 着 需 要 界 定 事 实 表 和 维 表 之 间 的 关 系 。<br />

数 据 集 市 的 验 证 是 为 了 确 保 事 实 表 和和 维 表 之 间 所 有 的 关 系 都 已 被 界 定 。 在 “ 数 据 集 市 的 验<br />

证 ” 这 一 步 , 需 要 改 正 所 有 发 现 的 错 误 , 这 样 后 面 对 数 据 集 市 的 部 署 才 会 顺 利 。<br />

在 “ 数 据 集 市 的 部 署 ” 这 一 步 , <strong>IBM</strong> Smart analytics Optimizer studio 将 数 据 集 市 的 定 义 以 XML<br />

格 式 发 送 给 IWA, 然 后 IWA 将 会 返 回 用 SQL 语 句 描 述 的 对 数 据 集 市 的 定 义 。 该 定 义 在 <strong>Informix</strong> 的<br />

catalog 表 中 被 保 存 为 一 个 带 有 特 殊 标 记 的 视 图 (view)。 这 个 视 图 被 称 作 AQT(Accelerated Query<br />

Table) 。AQT 被 用 于 查 询 语 句 的 匹 配 , 匹 配 成 功 的 查 询 语 句 将 被 路 由 到到 IWA。 用 户 或 数 据 库 管 理 员员 不<br />

使 用 AQT。 应 用 程 序 或 工 具 中 的 SQL 像 往 常 一 样 使 用 schema 中 定 义 的 表 , 而 不 使 用 AQT。<br />

下 面 是 一 个 AQT 的 示 例 。 在 这 个 示 例 中 ,daily_sales 是 事 实 表 ,period、product、store、<br />

customer、 promotion 是 维 表 。<br />

create view "dwa"."aqt2dbca0d9-509d-434b-9cc9-4a12c6de6b3d"<br />

("COL16","COL17","COL18","COL19","COL20","COL21","COL22","COL23","COL24","COL25","COL2<br />

6","COL27","COL28","COL29","COL30","COL31","COL32","COL33","COL34","COL35","COL36","CO<br />

L37","COL38","COL39","COL40","COL41","COL42","COL43","COL44","COL45","COL46","COL47","<br />

COL07","COL08","COL09","COL10","COL11","COL12","COL13","COL14","COL15","COL48","COL49"<br />

,"COL50","COL51","COL52","COL53","COL54","COL55","COL56","COL57","COL58","COL59","COL6<br />

0","COL61","COL01","COL02","COL03","COL04","COL05","COL06","COL62","COL63","COL64","CO<br />

L65","COL66","COL67","COL68","COL69","COL70","COL71","COL72","COL73","COL74","COL75","<br />

COL76","COL77","COL78","COL79","COL80","COL81") as<br />

select x0.perkey ,x0.storekey ,x0.custkey ,x0.prodkey ,x0.promokey<br />

,x0.quantity_sold ,x0.extended_price ,x0.extended_cost ,x0.shelf_location<br />

,x0.shelf_number ,x0.start_shelf_date ,x0.shelf_height ,x0.shelf_width<br />

,x0.shelf_depth ,x0.shelf_cost ,x0.shelf_cost_pct_of_sale<br />

,x0.bin_number ,x0.product_per_bin ,x0.start_bin_date ,x0.bin_height<br />

,x0.bin_width ,x0.bin_depth ,x0.bin_cost ,x0.bin_cost_pct_of_sale<br />

,x0.trans_number ,x0.handling_charge ,x0.upc ,x0.shipping<br />

,x0.tax ,x0.percent_discount ,x0.total_display_cost ,x0.total_discount<br />

,x1.perkey ,x1.calendar_date ,x1.day_of_week ,x1.week ,x1.period<br />

,x1."year" ,x1.holiday_flag ,x1.week_ending_date ,x1."month"<br />

,x2.prodkey ,x2.upc_number ,x2.package_type ,x2.flavor ,<br />

x2.form ,x2.category ,x2.sub_category ,x2.case_pack ,x2.package_size<br />

,x2.item_desc ,x2.p_price ,x2.category_desc ,x2.p_cost ,x2.sub_category_desc<br />

,x3.storekey ,x3.store_number ,x3.city ,x3.state ,x3.district<br />

,x3.region ,x4.custkey ,x4."name" ,x4."address" ,x4.c_city<br />

,x4.c_state ,x4.zip ,x4.phone ,x4.age_level ,x4.age_level_desc<br />

,x4.income_level ,x4.income_level_desc ,x4.marital_status<br />

,x4.gender ,x4.discount ,x5.promokey ,x5.promotype ,x5.promodesc<br />

,x5.promovalue ,x5.promovalue2 ,x5.promo_cost<br />

from<br />

((((("informix".daily_sales x0 left join "informix".period x1 on (x0.perkey<br />

11


= x1.perkey ) )left join "informix".product x2 on (x0.prodkey<br />

= x2.prodkey ) )left join "informix"."store" x3 on (x0.storekey<br />

= x3.storekey ) )left join "informix".customer x4 on (x0.custkey<br />

= x4.custkey ) )left join "informix".promotion x5 on (x0.promokey<br />

= x5.promokey ) );<br />

装 载 数 据 到到 IWA<br />

在 数 据 装 载 这 一 步 中 ,<strong>Informix</strong> 数 据 库 里 的 数 据 被 发 送 到到 IWA。 在 这 一 阶 段 ,IWA 将 数 据 分 发 给 它<br />

的 各 个 工 作 者 进 程 。 工 作 者 进 程 将 会 分 析 各 个 数 据 值 出 现 的 频 率 , 分 析 数 据 列 之 间 的 关 系 , 然 后 对<br />

数 据 进 行 垂 直 和和 水 平 的 划 分 (partitioning)。 划 分 方 式 一 旦 被 确 定 , 工 作 者 进 程 将 使 用 深 度 列 式 存 储<br />

技 术 (deep columnar) 对 数 据 进 行 压 缩 。 在 这 个 过 程 中 , 数 据 在 内 存 中 被 压 缩 和和 保 存 。 出 于 故 障 恢 复<br />

的 需 要 , 内 存 中 的 数 据 会 被 拷 贝 到到 硬 盘 上 。 没 有 索 引 被 创 建 , 也 没 有 概 要 表 (summary table) 和和 数 据<br />

立 方 体 (cube) 被 创 建 。IWA 里 的 数 据 可 被 定 期 的 ( 例 如如 每 个 晚 上 ) 更 新 。<br />

数 据 装 载 一 完 成 ,IWA 里 的 数 据 集 市 就 可 以 被 使 用 了 , 我 们 就 可 以 开 始始 体 验 IWA 的 极 速 性 能 了 。<br />

IWA 中 包包 含 了 用 于 “ 设 计 数 据 集 市 ”、“ 验 证 数 据 集 市 ”、“ 部 署 数 据 集 市 ”、“ 装 载 数 据 ” 的 命命<br />

令 行 工 具 , 因 此 我 们 可 以 编 写 脚 本 来 自 动 化化 这 些 步 骤 。<br />

查 询 的 路 由<br />

查 询 (query) 语 句 一 般 为 : 将 事 实 表 和和 维 表 连 接 (join) 起 来 , 然 后 寻 找 符 合 某 个 模 式 (pattern) 的 数 据 。<br />

在 下 面 的 查 询 语 句 示 例 中 , 事 实 表 web_sales 与 四 个 维 表 相 连 接 。 如如 果 您 已 经 创 建 和和 部 署 了 一 个 包包<br />

含 这 些 表 的 数 据 集 市 ,<strong>Informix</strong> 会 把 “ 这 条 查 询 语 句 ” 和和 “ 该 数 据 集 市 对 应 的 AQT” 匹 配 上 , 然 后<br />

把 这 条 查 询 语 句 发 送 给 IWA。 这 与 “ 处 理 分 布 式 查 询 时 从 一 个 <strong>Informix</strong> 数 据 库 服 务 器 到到 另 一 个<br />

<strong>Informix</strong> 数 据 库 服 务 器 ” 类 似 。IWA 处 理 完 这 条 查 询 语 句 得 到到 结 果 后 , 再 将 结 果 由 相 同 的 连 接 返 回<br />

给 <strong>Informix</strong>。 对 于 客 户 端 程 序 来 说 , 这 个 处 理 过 程 是 透 明 的 。 客 户 端 程 序 只 能 感 觉 到到 数 据 库 的 响响 应<br />

时 间 比 以 往 短 得 多 。<br />

select first 100 i_item_id,<br />

avg(ws_quantity) avg_quantity,<br />

avg(ws_list_price) avg_list_price,<br />

avg(ws_coupon_amt) avg_coupton_amt,<br />

sum(ws_sales_price) sum_sales_price<br />

from web_sales, customer_demographics, date_dim, item, promotion<br />

where ws_sold_date_sk = d_date_sk and<br />

ws_item_sk = i_item_sk and<br />

ws_bill_cdemo_sk = cd_demo_sk and<br />

ws_promo_sk = p_promo_sk and<br />

cd_gender = 'F' and<br />

cd_marital_status = 'M' and<br />

cd_education_status = 'College' and<br />

12


(p_channel_email = 'N' or p_channel_event = 'N') and<br />

d_year = 2001<br />

group by i_item_id;<br />

order by sum(ws_sales_price) desc;<br />

适 合 IWA 处 理 的 查 询 语 句 为 : 将 一 个 事 实 表 与 零 个 或 多 个 维 表 连 接 (join) 起 来 , 连 接 条 件 为 界 定 数<br />

据 集 市 时 用 到到 的 表 之 间 的 引 用 关 系 。IWA 支 持 内 连 接 和和 事 实 表 在 主 导 方 的 左 连 接 。 详 情 请 参 阅 管 理<br />

指 南 (Administration Guide)。IWA 在 处 理 查 询 时 使 用 先 来 先 服 务 的 原 则 。 所 有 的 数 据 和和 中 间 结 果 都<br />

被 存 储 在 内 存 中 。 每 个 工 作 者 进 程 保 存 了 全 部 的 维 表 的 数 据 和和 部 分 的 事 实 表 的 数 据 。 每 个 处 理 表 连<br />

接 的 线 程 都 试 图 将 哈哈 希 表 (hash table) 缓 存 进 CPU 的 L2 cache 中 。 每 个 工 作 者 进 程 都 独 立 的 扫 描 数 据<br />

和和 处 理 表 连 接 , 工 作 者 进 程 之 间 的 同 步 和和 数 据 交 换 非 常 少 。 一 条 典 型 的 查 询 语 句 在 IWA 中 一 般 几 秒<br />

钟 就 可 以 被 处 理 完 , 而 在 传 统 系 统 中 需 要 几 分 钟 或 几 小 时 才 能 被 处 理 完 。 因 此 ,IWA 将 查 询 请 求 保<br />

存 在 队 列 (queue) 中 , 并 一 个 接 一 个 的 处 理 。<br />

应 用 程 序<br />

商 业 智 能 工 具<br />

第 5 步 : 返 回 结 果 / 描 述 / 错 误<br />

数 据 库 协 议 :SQLI 或 DRDA<br />

网 络 协 议 :TCP/IP, SHM<br />

第 1 步 : 提 交 SQL<br />

数 据 库 协 议 :SQLI 或 DRDA<br />

网 络 协 议 :TCP/IP, SHM<br />

<strong>Informix</strong><br />

第 2 步 : 查 询 语 句 的 匹 配<br />

和和 重 定 向 技 术<br />

本 地<br />

执 行<br />

第 4 步 : 返 回 结 果<br />

数 据 库 协 议 :DRDA<br />

网 络 协 议 :TCP/IP<br />

第 3 步 : 发 送 SQL<br />

数 据 库 协 议 :DRDA<br />

网 络 协 议 :TCP/IP<br />

协 调 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

工 作 者 进 程<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

内 存 中 的<br />

压 缩 数 据<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

位 于 磁 盘 上<br />

的 内 存 镜 像<br />

13


对 IWA 进 行 配 置 的 要 点<br />

在 安 装 IWA 的 过 程 中 , 您 需 要 输 入 : 总 的 进 程 数 、 用 于 工 作 者 进 程 的 内 存 量 、 用 于 协 调 者 进 程 的 内<br />

存 量 。 总 的 进 程 数 被 设 定 后 , 协 调 者 进 程 的 数 量 和和 工 作 者 进 程 的 数 量 将 被 自 动 确 定 。 例 如如 , 如如 果 总<br />

的 进 程 数 为 5, 那 么 将 自 动 生 成 1 个 协 调 者 进 程 和和 4 个 工 作 者 进 程 。 具 体 信 息 请 参 看 管 理 指 南<br />

(Administration Guide)。 请 看 下 面 的 场 景 :IWA 里 有 1 个 协 调 者 进 程 和和 4 个 工 作 者 进 程 ,IWA 里 部<br />

署 了 一 个 数 据 集 市 , 该 数 据 集 市 包包 含 事 实 表 sales 和和 维 表 customer、store、time。 维 表 customer、<br />

store、time 的 数 据 在 被 压 缩 后 被 保 存 在 每 一 个 工 作 者 进 程 的 私 有 内 存 里 。 因 此 , 每 个 工 作 者 进 程 都<br />

保 存 了 全 部 的 维 表 的 数 据 。 事 实 表 sales 的 数 据 被 等 分 成 4 份 , 每 个 工 作 者 进 程 得 到到 1 份 。 因 此 , 每<br />

个 工 作 者 进 程 保 存 了 1/4 的 事 实 表 sales 的 数 据 。<br />

如如 果 有 足 够 多 的 CPU 资 源 , 当 工 作 者 进 程 的 数 量 增 多 时 , 数 据 传 输 率 也 会 加 大 。 因 此 一 般 来 说 , 增<br />

多 工 作 者 进 程 将 会 缩 短 查 询 处 理 时 间 。 当 然 , 工 作 者 进 程 的 数 量 对 查 询 处 理 时 间 的 影 响响 还 取 决 于 查<br />

询 本 身 的 特 性 。<br />

在 这 种 情 况 下 , 应 该 给 每 个 工 作 者 进 程 分 配 多 少 内 存 ? 整 个 系 统 需 要 多 少 内 存 ?<br />

一 般 来 说 ,IWA 对 数 据 的 压 缩 比 率 为 3:1。 如如 果 事 实 表 sales 和和 维 表 customer、store、time 的 数 据<br />

一 共 有 100GB(100GB 中 的 大 多 数 都 为 事 实 表 sales 的 数 据 占 用 ), 那 么 这 些 数 据 被 压 缩 后 大 约 为<br />

33GB。 通 过 OAT (Open Admin Tool ) 或 catalog 表 可 以 方 便 的 得 知 各 个 数 据 表 的 大 小 。<br />

工 作 者 进 程 需 要 有 足 够 的 内 存 来 存 储 运 行 时 的 中 间 结 果 。 工 作 者 进 程 动 态 地 分 配 和和 释 放 查 询 处 理 所<br />

需 的 内 存 。“ 对 这 部 分 内 存 的 大 小 的 计 算 ” 与 在 <strong>Informix</strong> 中 “ 对 临 时 数 据 库 空 间 的 大 小 的 计 算 ” 很<br />

类 似 。 在 系 统 负 载 中 会 有 多 少 的 中 间 结 果 和和 排 序 ? 数 据 的 相 关 性 如如 何 ? 虽 然 很 难 精 确 地 计 算 这 部 分<br />

内 存 的 大 小 , 但 一 般 来 说 把 “ 这 部 分 内 存 的 大 小 ” 设 为 “ 数 据 表 的 大 小 的 1/5 到到 1/3” 就 够 了 。<br />

在 IWA 中 , 查 询 处 理 的 最 后 一 步 是 由 协 调 者 进 程 来 完 成 的 。 协 调 者 进 程 需 要 对 中 间 结 果 进 行 汇 聚 、<br />

解 压 缩 、 排 序 , 因 此 协 调 者 进 程 也 需 要 内 存 。 协 调 者 进 程 需 要 的 内 存 取 决 于 结 果 集 的 大 小 。 要 注 意<br />

的 一 点 是 : 当 查 询 语 句 里 有 “FIRST” 和和 “ORDER BY” 时 , 协 调 者 进 程 需 要 对 所 有 的 数 据 进 行 排 序<br />

以 获 得 前前 若 干 条 数 据 。 例 如如 “SELECT FIRST 1000… ORDER BY sum(sales.amount)”, 协 调 者 进 程 需<br />

要 对 所 有 的 数 据 进 行 排 序 以 获 得 前前 1000 条 数 据 。 当 然 , 在 这 个 例 子 中 , 协 调 者 进 程 创 建 了 1000 个<br />

数 据 组 后 , 对 于 新 来 的 数 据 组 , 协 调 者 进 程 会 将 新 来 的 数 据 组 与 前前 1000 个 数 据 组 进 行 比 较 , 根 据 比<br />

较 结 果 来 决 定 “ 用 新 来 的 数 据 组 替 代 1000 个 数 据 组 中 的 某 个 数 据 组 ” 或 “ 忽 略 新 来 的 数 据 组 ”。<br />

14


卓 越 的 性 能<br />

IWA 卓 越 的 性 能 是 <strong>IBM</strong> 研 究 部 门 和和 开 发 部 门 共 同 努 力力 的 结 果 。 本 文 将 简 要 的 叙 述 在 IWA 中 使 用 到到<br />

的 先 进 技 术 。 参 考 文 献 里 的 一 些 论 文 对 这 些 先 进 技 术 进 行 了 详 细 的 叙 述 。 这 些 论 文 都 被 发 表 在 著 名<br />

的 期 刊 或 会 议 上 。<strong>IBM</strong> 已 经 为 这 些 先 进 技 术 申 请 了 专 利 。<br />

深 度 列 式 存 储 技 术 比 传 统 的 列 式 存 储 技 术 更 优 。 有 了 “ 深 度 列 式 存 储 技 术 ” 和和 “ 处 于 压<br />

缩 态 的 数 据 无 需 解 压 缩 就 可 被 处 理 的 技 术 ” 后 , 查 询 处 理 时 不 再 需 要 磁 盘 I/O, 可 处 理 海 量 数 据 的 内<br />

存 数 据 仓 库 成 为 现 实 。 对 多 核 架 构 和和 SIMD 技 术 的 充 分 利 用 使 得 IWA 在 没 有 索 引 和和 概 要<br />

表 的 情 况 下 也 能 达 到到 不 可 思 议 的 速 度 。 下 面 让 我 们 深 入 了 解 这 些 先 进 技 术 。<br />

频 率 划 分 (Frequency Partitioning)<br />

对 数 据 集 市 里 的 每 个 数 据 表 , 通 过 分 析 一 个 或 多 个 数 据 列 里 经 常 出 现 的 值 , 将 紧 密 相 关 的 一 些 数 据<br />

列 组 成 一 个 tuplet。 在 上 面 的 图 示 中 , 产 品品 (product) 和和 产 地 (origin) 这 两 个 数 据 列 紧 密 相 关 , 所 以 将<br />

这 两 个 数 据 列 组 成 一 个 tuplet。tuplet 是 tuple 的 一 部 分 。 一 个 tuple 是 一 个 完 整 的 数 据 行 。 哈哈 夫 曼<br />

编 码 (Huffman encoding) 的 好好 处 是 用 “ 最 少 的 数 据 位 ” 对 “ 最 经 常 出 现 的 值 ” 进 行 编 码 。 在 上 面 的<br />

图 示 中 ,“ 前前 64 种 产 品品 ” 和和 “ 产 地 ( 美 国 , 中 国 )” 结 合 形 成 了 哈哈 夫 曼 编 码 中 的 单 元 1 (cell 1)。 这<br />

项 技 术 改 进 了 压 缩 的 效 率 , 并 且 可 被 用 于 判 断 tuplet 是 否 满 足 查 询 语 句 中 的 “ 等 于 ” 和和 “ 范 围 ” 过<br />

滤 条 件 。 由 于 对 查 询 语 句 的 处 理 是 基 于 压 缩 的 数 据 , 处 理 的 速 度 将 非 常 迅 速 。<br />

15


深 度 列 式 存 储 技 术<br />

传 统 的 数 据 库 将 一 个 个 完 整 的 数 据 行 存 储 在 数 据 页<br />

中 。 如如 果 处 理 查 询 时 需 用 到到 大 多 数 的 数 据 列 , 这 种 方<br />

式 在 磁 盘 I/O 上 是 比 较 高 效 的 。 如如 果 数 据 行 被 压 缩<br />

了 , 那 么 在 处 理 查 询 时 数 据 行 将 被 解 压 缩 。 这 种 存 储<br />

方 式 对 于 OLTP 负 载 ( 每 个 查 询 只 访 问 少 量 的 数 据<br />

行 ) 来 说 是 高 效 的 。<br />

一 个 OLAP 类 型 的 查 询 可 能 需 要 访 问 几 百 万 甚 至 几 十 亿 个 数 据 行 , 但 该 查 询 可 能 仅 关 注 事 实 表 中 的<br />

少 量 数 据 列 。 例 如如 , 您 可 能 需 要 2010 年 各 个 地 点 各 个 产 品品 的 销 售 量 。 对 于 这 个 需 求 , 您 只 需 要 事 实<br />

表 里 的 三 个 数 据 列 :item、sales amount、location。 对 于 这 个 例 子 , 压 缩 、 存 储 、 解 压 缩 整 个 数 据<br />

行 是 不 高 效 的 。<br />

列 式 数 据 库 将 同 一 数 据 列 的 各 个 值 存 放 在 一 起 。 当<br />

您 插 入 或 装 载 数 据 行 时 , 一 个 数 据 行 的 各 个 数 据 列 的<br />

值 被 存 放 在 不 同 的 地 方 。 当 您 读 取 某 个 数 据 行 时 , 该<br />

数 据 行 的 各 个 数 据 列 的 值 被 从 不 同 的 地 方 取 出 , 然 后<br />

组 合 在 一 起 形 成 数 据 行 。 由 于 同 一 数 据 列 的 各 个 值 存<br />

放 在 一 起 , 我 们 可 以 得 到到 更 高 的 压 缩 比 率 。 在 上 一 段<br />

落 提 到到 的 例 子 中 , 这 个 OLAP 类 型 的 查 询 只 对 事 实 表<br />

中 的 少 量 数 据 列 感 兴 趣 。 对 于 上 一 段 落 提 到到 的 例 子 , 如如 果 使 用 的 数 据 库 是 列 式 数 据 库 , 您 可 以 只 读<br />

取 “ 存 储 着 item、sales amount、location 数 据 列 ” 的 数 据 页 。 对 于 存 取 大 量 数 据 行 和和 少 量 数 据 列 的<br />

查 询 来 说 , 列 式 存 储 可 以 大 大 改 进 效 率 。<br />

IWA 将 数 据 存 储 在 数 据 列 组 (column group) 中 。 一<br />

个 数 据 表 被 垂 直 划 分 成 几 个 数 据 列 组 。 数 据 列 组 也<br />

被 称 作 bank。 由 于 在 不 同 的 cell( 通 过 frequency<br />

partitioning 得 到到 的 cell) 中 , 数 据 列 的 长 度 是 不 同<br />

的 , 所 以 在 确 定 将 哪哪 些 数 据 列 分 配 到到 哪哪 些 bank 中<br />

时 , 不 同 的 cell 有 不 同 的 分 配 方 案 。<br />

IWA 使 用 bin-packing 的 算 法 来 确 定 将 哪哪 些 数 据 列 分 配 到到 哪哪 些 bank 中 ( 根 据 数 据 列 的 宽 度 是 否 切 合<br />

于 bank 来 分 配 )。 这 样 在 扫 描 数 据 时 就 只 需 扫 描 “ 含 有 感 兴 趣 的 数 据 列 ” 的 bank, 而 无 需 扫 描<br />

“ 不 含 有 感 兴 趣 的 数 据 列 ” 的 bank。 使 用 这 项 技 术 后 ,IWA 可 以 大 大 较 少 对 内 存 中 数 据 的 扫 描 量 ,<br />

节 省 大 量 的 CPU 资 源 。<br />

16


使 用 SIMD (Single Instruction Multiple Data) 加 大 并 行 度<br />

考 虑 下 面 的 SQL 语 句 :<br />

SELECT SUM(s.amount) FROM sales AS s WHERE s.prid = 100 GROUP BY s.zip;<br />

如如 果 数 据 列 amount (A)、prid (P)、zip(Z) 来 自 同 一 个 bank, 那 么 多 组 值 可 被 同 时 装 载 进 128 位 的<br />

CPU 寄 存 器 中 。 在 下 面 的 图 示 中 , 我 们 一 次 可 装 载 进 4 组 值 (12 个 值 )。<br />

在 Intel Xeon 处 理 器 上 ,SIMD 指 令 运 行 在 128 位 的 CPU 寄 存 器 上 。 IWA 的 压 缩 技 术 使 每 个 数 据 列<br />

只 使 用 非 常 少 的 数 据 位 , 因 此 128 位 的 CPU 寄 存 器 一 次 可 装 载 进 多 个 数 据 列 。 我 们 可 装 载 多 个 数 据<br />

列 , 并 同 时 判 断 这 些 数 据 列 是 否 满 足 查 询 语 句 的 过 滤 条 件 。 在 查 询 处 理 中 , 该 重 载 操 作 在 所 有 的<br />

CPU 核 (CPU core) 上 同 时 进 行 , 因 此 查 询 处 理 的 速 度 极 快 。<br />

在 下 面 的 图 示 中 , 一 条 CPU 指 令 可 处 理 4 组 值 (12 个 值 ), 这 使 IWA 拥 有 极 快 的 查 询 处 理 的 速<br />

度 。<br />

17


从 宏 观 层 面 看 查 询 处 理<br />

到到 现 在 为 止 , 我 们 已 经 知 道 数 据 是 如如 何 被 编 码 和和 存 储 的 , 在 微 观 层 面 对 查 询 处 理 有 了 了 解 。 下 面 我<br />

们 将 在 宏 观 层 面 对 查 询 处 理 进 行 介 绍 。<br />

高 效 的 扫 描 为 快 速 的 查 询 处 理 建 立 了 坚 实 的 基 础 。 我 们 知 道 数 据 被 组 织 成 tuplet、bank、<br />

cell。 对 数 据 的 扫 描 是 以 cell 为 单 位 进 行 的 。IWA 动 态 的 产 生 合 适 数 量 的 线 程 以 充 分 的 利 用 CPU 资<br />

源 。IWA 将 cell 分 配 给 各 个 CPU 核 (CPU core)。 扫 描 操 作 是 基 于 被 压 缩 的 数 据 的 , 使 用 了 SIMD<br />

指 令 , 利 用 了 哈哈 夫 曼 编 码 的 优 势势 。“ 判 断 是 否 满 足 过 滤 条 件 ” 和和 “group by” 是 基 于 被 压 缩 的 数 据<br />

的 , 而 聚 合 函 数 ( 例 如如 求 平 均 值 ) 是 基 于 解 压 缩 后 的 数 据 的 。 哈哈 夫 曼 编 码 技 术 还 具 有 密 集 哈哈 希 函 数<br />

(dense hash function) 的 作 用 , 从 而 使 得 整 个 哈哈 希 表 可 以 被 缓 存 进 CPU 的 L2 Cache 中 , 因 此 查 找 速<br />

度 非 常 快 。<br />

在 被 压 缩 的 数 据 上 进 行 GROUP BY 操<br />

作 的 速 度 非 常 快 。 两 个 密 集 的 哈哈 希 表<br />

(densely encoded hash table) 连 接<br />

(join) 后 有 可 能 产 生 一 个 松 散 的 数 据<br />

集 。IWA 如如 果 检 测 到到 这 种 情 况 将 会 动<br />

态 的 换 用 线 性 探 测 (linear probing) 技<br />

术 。 这 些 技 术 的 结 合 使 得 在 被 压 缩 的<br />

数 据 上 进 行 的 查 询 处 理 的 速 度 非 常<br />

快 。<br />

我 们 知 道 数 据 集 市 (data mart) 是 一 个 星 型 的 或 雪 花 型 的 schema, 这 个 schema 包包 含 了 一 个 事 实 表 和和<br />

多 个 维 表 , 事 实 表 的 行 数 非 常 多 , 维 表 的 行 数 比 较 少 。 在 查 询 语 句 中 , 事 实 表 与 多 个 维 表 通 过 “ 事<br />

实 与 维 度 ” 及 “ 维 度 与 其 它 维 度 ” 被 连 接 (join) 起 来 。 对 于 每 一 条 查 询 语 句 , 每 一 个 工 作 者 进 程 都 会<br />

建 立 一 个 雪 花 模 型 。 它 先 处 理 最 外 围 的 表 连 接 , 然 后 依 次 往 里 , 直 到到 与 事 实 表 相 关 的 表 连 接 。 每 个<br />

雪 花 模 型 的 分 枝 被 处 理 , 得 到到 的 结 果 以 维 度 的 形 式 输 入 到到 下 一 层 。 首 先 , 应 用 本 地 过 滤 条 件 到到 维 表<br />

上 以 创 建 一 个 合 格 键 列 表 。 这 些 由 维 表 来 的 键 与 事 实 表 连 接 ( 在 雪 花 模 型 的 分 支 内 维 表 充 当 事 实<br />

表 ) 形 成 新 一 层 的 聚 合 和和 联 系 。 这 样 递 归 的 处 理 直 至 整 个 连 接 在 每 个 工 作 者 进 程 中 被 处 理 完 。 由 于<br />

每 个 工 作 者 进 程 都 保 存 有 全 部 的 维 表 的 数 据 , 所 以 在 查 询 处 理 时 工 作 者 进 程 之 间 只 需 交 换 极 少 量 的<br />

数 据 , 这 样 每 个 工 作 者 进 程 都 能 发 挥 出 最 佳 的 性 能 。 工 作 者 进 程 得 到到 中 间 结 果 后 , 将 中 间 结 果 发 送<br />

给 协 调 者 进 程 。<br />

由 于 在 IWA 中 数 据 只 有 一 种 展 示 方 式 ---- 被 压 缩 的 列 式 数 据 ---- 所 以 IWA 每 次 在 处 理 某 个 数 据 表 时 都<br />

使 用 同 样 的 路 径 。IWA 在 数 据 处 于 压 缩 状 态 时 就 可 以 判 断 “ 哪哪 些 cell 需 要 扫 描 , 哪哪 些 cell 不 需 要 扫<br />

描 ”。IWA 里 没 有 索 引 (index) 和和 概 要 表 (summary table)。IWA 每 次 都 遵 循 同 样 的 流 程 。 因 此 ,IWA<br />

的 性 能 是 稳 定 的 。<br />

18


协 调 者 进 程 对 工 作 者 进 程 发 送 来 的 中 间 结 果 进 行 汇 聚 、 分 组 、 解 压 缩 , 接 着 执 行 ORDER BY 子 句 和和<br />

HAVING 子 句 , 然 后 通 过 DRDA 协 议 把 最 终 结 果 发 送 给 <strong>Informix</strong> 数 据 库 服 务 器 。<strong>Informix</strong> 数 据 库 服<br />

务 器 再 把 最 终 结 果 发 送 给 应 用 程 序 。<br />

结 论<br />

IWA 使 用 创 新 的 方 法 来 处 理 复 杂 的 查 询 , 在 不 增 加 您 的 工 作 量 和和 预 算 的 情 况 下 , 快 速 的 响响 应 查 询 请<br />

求 。 更 快 的 响响 应 时 间 意 味味 着 更 快 的 找 到到 答 案 、 更 快 的 知 悉 内 情 、 更 迅 速 的 调 整 业 务 。<br />

使 用 IWA 对 您 的 数 据 仓 库 中 的 高 价 值 部 分 进 行 加 速 处 理 , 可 以 大 大 提 升 您 的 业 务 的 生 产 力力 水 平 。<br />

进 一 步 的 信 息<br />

如如 果 想 知 道 更 多 关 于 <strong>Informix</strong> Warehouse Accelerator (IWA) 和和 <strong>Informix</strong> Ultimate Warehouse Edition<br />

的 信 息 , 请 联 系 <strong>IBM</strong> 市 场 专 员员 、<strong>IBM</strong> 合 作 伙 伴 , 或 访 问 下 面 的 网 站 :<br />

http://www.ibm.com/informix<br />

http://www.ibm.com/informix/warehouse<br />

感 谢<br />

IWA 是 <strong>IBM</strong> Almaden 实 验 室 、<strong>IBM</strong> Böblingen 实 验 室 和和 <strong>IBM</strong> <strong>Informix</strong> 部 门 通 力力 合 作 的 成 果 。 感 谢 研<br />

究 和和 开 发 出 IWA 的 同 事 。 感 谢 审 阅 和和 改 进 本 文 的 <strong>Informix</strong> 部 门 的 同 事 。<br />

进 一 步 的 阅 读<br />

• VLDB 2008: “Main-Memory Scan Sharing for Multi-core CPUs”, Lin Qiao, Vijayshankar Raman,<br />

Frederick Reiss, Peter Haas, Guy Lohman<br />

• VLDB 2008: “Row-Wise Parallel Predicate Evaluation”, Ryan Johnson, Vijayshankar Raman,<br />

Richard Sidle, Garret Swart<br />

• VLDB 2006: “How to wring a table Dry: Entropy Compression of Relations and Querying<br />

Compressed Relations”, Vijayshankar Raman, Garret Swart<br />

• SIGMOD 2007: “How to barter bits for chronons: compression and bandwidth trade offs for<br />

database scans”, Allison L. Holloway, Vijayshankar Raman, Garret Swart, David J. DeWitt<br />

• ICDE 2008: “Constant-time Query Processing”, Vijayshankar Raman, Garret Swart, Lin Qiao,<br />

Frederick Reiss, Vijay Dialani, Donald Kossmann, Inderpal Narang, Richard Sidle<br />

• BTW 2009: Bringing BLINK Closer to the Full Power of SQL. Knut Stolze, Vijayshankar Raman,<br />

Richard Sidle, Oliver Draese<br />

19

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!