实时内存数据库的数据管理
实 时 数 据 安 置
----
1 . 实 时 应 用 对 数 据 安 置 的 要 求
---- 在 实 时 应 用 中, 事 务 在 运 行 前 的 操 作 逻 辑( 操 作 类 型、 顺 序 等)、 数 据 集 及 其 结 构、 行 为 以 及 时 间 的 相 关 性 等 都 是 可 预 分 析 的。 然 而, 对 磁 盘 数 据 库 而 言, 数 据 的I/O 是 造 成 事 务 执 行 时 间 不 确 定、 预 报 不 准 确 的 关 键 因 素。 为 此, 要 求 以 大 内 存 作 为 实 时 数 据 库 的 主 要 存 储 介 质, 使 一 个 事 务 在 活 动 期 间 没 有I/O, 以 达 到 较 准 确 的 预 报, 从 而 满 足 实 时 事 务 的 定 时 限 制。 但 这 要 解 决 两 个 问 题, 就 是 适 当 的 数 据 安 置 和 适 时 的 内 外 存 交 换。
----2 . 影 响 实 时 数 据 安 置 的 因 素 及 数 据 安 置 策 略
---- 数 据 在 不 同 存 储 层 上, 其 读、 改、 写 所 需 的 时 间 不 同, 影 响 数 据 安 置 策 略 的 主 要 因 素 是 数 据 和 事 务 的 特 征。
----(1) 数 据 特 征 及 其 影 响
---- 实 时 性 在 实 时 应 用 环 境 中, 与 每 一 数 据 相 联 的 有 一" 外 部 有 效 期", 数 据 的 安 置 必 须 考 虑 这 种 实 时 特 性。 实 时 数 据 又 可 分 为" 长 时 限" 和" 短 时 限", 短 时 限 实 时 数 据 必 须 保 存 在 内 存 中。
---- 存 取 频 率 高 频 数 据 应 常 驻 内 存。
---- 永 久 性 永 久 数 据 是 长 期 反 复 使 用 和 长 期 有 效 的 数 据, 临 时 或 短 暂 的 数 据 只 存 于 内 存 直 至 过 期。
---- 关 键 性 关 键 性 是 指 数 据 对 事 务 处 理 的 重 要 性。 为 了 确 保 其 事 务 的 高 性 能 要 求( 尤 其 是 像 实 时 事 务 的 截 止 期 这 样 的 要 求), 关 键 数 据 最 好 安 置 于 内 存。
----(2) 事 务 特 征 及 其 影 响
---- 事 务 类 型 的 影 响 " 只 写" 事 务 就 是 现 代 过 程 控 制 或 工 程 型 应 用 中 的" 数 据 接 收" 事 务, 这 种 事 务 是 很 短 的、 周 期 的 和 紧 急 的( 不 可 阻 塞 和 等 待), 因 而 它 们 的 数 据 应 置 于 内 存 中。" 只 读" 事 务 在 现 代 应 用 中 一 般 就 是" 控 制" 事 务, 这 种 事 务 在 提 交 以 前 就 可 能 已 物 理 地 改 变 了 外 部 环 境 状 态, 因 而 不 能 进 行 传 统 意 义 下 的Undo 恢 复, 而 通 过 运 行 其" 补 偿" 事 务 抵 消 它 的 影 响, 故 其 数 据 暂 不 能 交 换 到 外 存。 更 新 事 务 与 一 般 事 务 无 异。
---- 事 务 优 先 级 的 影 响 事 务 优 先 级 代 表 了 事 务 的 紧 迫 度, 所 以, 高 优 先 级 事 务 的 数 据 要 常 驻 内 存 且 不 能 交 换 出 去。
---- 事 务 恢 复 的 考 虑 与 数 据 类 似, 日 志 的 特 征 及 其 安 置 策 略 是 影 响 事 务 夭 折 - 重 启 动 进 而 影 响 其 截 止 期 满 足 的 主 要 因 素, 对 于 实 时 数 据 库, 必 须 设 计" 内 存 式" 日 志。
实 时 内 存 数 据 库 技 术
----
关 于 什 么 是 内 存 数 据 库, 说 法 不 一, 但 我 们 认 为, 内 存 数 据 库 的 定 义 不 应 涉 及 内 存 的 大 小、 存 取 数 据 所 需I/O 的 多 少、 数 据 何 时 进 入 及 怎 样 才 能 留 驻 内 存 等 这 些 具 体 的 实 现 技 术, 而 只 包 含 数 据 库 常 驻 内 存( 而 不 是 磁 盘)、 事 务( 不 是 系 统) 的 数 据 存 取 只 涉 及 内 存 的 意 思。 内 存 数 据 库 是 支 持 实 时 事 务 的 最 佳 技 术, 其 本 质 特 征 是 其" 主 拷 贝" 或" 工 作 版 本" 常 驻 内 存, 即 活 动 事 务 只 与 实 时 内 存 数 据 库 的 内 存 拷 贝 打 交 道。 显 然, 它 要 求 较 大 的 内 存 量, 但 并 不 要 求 任 何 时 刻 整 个 数 据 库 都 能 存 放 在 内 存, 即 内 存 数 据 库 系 统 还 是 要 处 理I/O。 虽 然 如 此, 但 它 已 不 是 传 统 磁 盘 数 据 库 的 概 念, 传 统 数 据 库 适 用 的 数 据 结 构、 事 务 处 理 算 法 与 优 化、 并 发 控 制 及 恢 复 等 技 术 对 内 存 数 据 库 不 一 定 合 适。
---- 所 以, 实 时 内 存 数 据 库 的 设 计 应 该 打 破 传 统 磁 盘 数 据 库 的 设 计 观 念, 考 虑 内 存 直 接 快 速 存 取 的 特 点, 以CPU 和 内 存 空 间 的 高 效 利 用 为 目 标 来 重 新 设 计 开 发 各 种 策 略 与 算 法、 技 术、 方 法 及 机 制。
---- 实 时 事 务 要 求 系 统 能 较 准 确 地 预 报 事 务 的 运 行 时 间, 但 对 磁 盘 数 据 库 而 言, 由 于 磁 盘 存 取、 内 外 存 的 数 据 传 递、 缓 冲 区 管 理、 排 队 等 待 及 锁 的 延 迟 等 使 得 事 务 实 际 平 均 执 行 时 间 与 估 算 的 最 坏 情 况 执 行 时 间 相 差 很 大, 如 果 将 整 个 数 据 库 或 其 主 要 的" 工 作" 部 分 放 入 内 存, 使 每 个 事 务 在 执 行 过 程 中 没 有I/O, 则 为 系 统 较 准 确 估 算 和 安 排 事 务 的 运 行 时 间, 使 之 具 有 较 好 的 动 态 可 预 报 性 提 供 了 有 力 的 支 持, 同 时 也 为 实 现 事 务 的 定 时 限 制 打 下 了 基 础。
实 时 数 据 库 的 数 据 组 织
----
1 . 数 据 库 空 间 结 构
---- 采 用 内 存 数 据 库 技 术, 数 据 库 的 存 储 空 间 是 一 个 四 层 结 构: 易 失 的 内 存M1 、 不 易 失 内 存M2 (Non-Volatile RAM)、 磁 盘 存 储 器M3 和 档 案 式 磁 带 存 储 器M4。
----M1 存 放 支 持 各 事 务 的 工 作 数 据, 故 称 为 实 时 数 据 库 的" 工 作 版 本"O-DB。 它 由 事 务 直 接 存 取, 一 般 事 务 也 只 与 它 打 交 道。
----M2 是M1 的 拓 延, 用 以 存 储 一 些 活 动 的 临 时 性 数 据, 称 为" 临 时 版 本"T-DB。O-DB 和T-DB 统 称 为 实 时 数 据 库 的" 内 存 版 本"(M-DB)。
----M3 用 来 存 放 不 在 内 存 的 数 据 库 部 分, 当 然 还 要 存 放 用 作 恢 复 的 数 据 库 备 份。 这 部 分 数 据 库 统 称 为 实 时 数 据 库 的" 外 存 版 本"(S-DB)。
----M4 一 般 是 脱 机 磁 带, 用 来 存 储 以 前 数 据 库 某 时 刻 完 整 状 态 的 映 像, 称 为 实 时 数 据 库 的" 后 援 版 本"A- DB, 仅 是 为 了 安 全 保 护 的 目 的 和 作 为 档 案 长 期 保 存。
---- 这 种 实 时 数 据 库 存 储 体 系 结 构 基 于 内 存 数 据 库 技 术, 考 虑 了 各 种 数 据 的 应 用 语 义 与 特 征 和 系 统 功 能 实 现, 是 合 理 可 行 的。
----2 . 物 理 数 据 组 织
---- 实 时 内 存 数 据 库 的 物 理 组 织 是 其 总 体 设 计 目 标 实 现 的 基 础, 其 存 储 结 构、 索 引 结 构、 中 间 数 据 存 储 结 构 都 必 须 考 虑 内 存 直 接 存 取 这 一 特 征, 这 里 介 绍 两 种 物 理 组 织 方 法。
----(1) 区 - 段 式
---- 区 - 段 式 组 织 基 于 关 系 数 据 模 型, 它 将 存 储 空 间 逻 辑 地 划 分 为" 分 区", 每 一 分 区 存 储 一 个 关 系, 物 理 上 由 若 干" 段" 组 成。 一 个 段 是 内 存 中 一 固 定 长 度 的 连 续 区 域, 它 相 当 于" 页", 是 内 外 存I/O 的 单 位, 也 是 内 存 空 间 分 配 及 内 存 数 据 库 恢 复 的 单 位。
----(2) 影 子 内 存 式
---- 它 将 内 存 数 据 库 空 间 划 分 成 实 时 内 存 数 据 库 的 主 拷 贝PDB 与" 影 子" 拷 贝SM 两 部 分。 在 事 务 操 作 期 间, 每 次 查 询 总 是 先 对SM 试 探, 若 不 成 功, 再 对PDB 操 作。 所 有 的 更 新 操 作 都 在SM 中 进 行, 且 都 记 录 在 活 动 日 志 中。 每 当 一 个 事 务 提 交 时, 由 它 所 产 生 的 在SM 中 的" 后 映 像" 就 拷 贝 到PDB 中。
----3 . 索 引 结 构
---- 磁 盘 数 据 库 有 多 种 有 效 的 索 引 结 构, 最 有 代 表 性 的 是AVL 树、B - 树 和B + - 树。
---- 对 实 时 内 存 数 据 库 而 言, 它 们 都 具 有 一 个 共 同 的 关 键 的 缺 点, 就 是 存 储 的 有 效 使 用 和 利 用 率 很 低, 而 查 找 性 能 已 不 像 在 磁 盘 中 那 样 优 越。 为 此, 我 们 开 发 出 一 种 兼 有 AVL 树 和B - 树 的 优 点 且 克 服 了 不 足 的 内 存 索 引 结 构SB - 树。 它 的 查 找 类 似 于 二 叉 树, 其 不 同 之 处 主 要 在 于 每 一 结 点 的 比 较 不 是 针 对 其 中 的 各 个 元 素 值, 而 是 对 其 最 大( 即 最 右) 者 和 最 小( 即 最 左) 者。SB - 树 的 维 护 操 作 类 似 于AVL 树, 但 由 于 其 独 特 的 结 点 结 构, 故 在 具 体 的 结 点 插 入 与 删 除 时 有 所 不 同。
实 时 内 存 数 据 库 的 数 据 装 入 与 交 换
----
1 . 影 响 数 据 装 入 与 交 换 策 略 的 主 要 因 素
---- 有 两 方 面 的 因 素 影 响M-DB 数 据 的 装 入 与 交 换 策 略, 即 数 据 本 身 及 其 事 务 的 特 征。
---- 数 据 易 变 性 指 其 变 更 速 率。 不 同 数 据 有 不 同 的 变 化 速 率, 易 变 数 据 要 频 繁 更 新。
---- 数 据 活 跃 性 指 存 取 频 率。 应 该 保 证 活 跃 数 据 具 有 更 大 的 可 存 取 性。
---- 数 据 流 行 性 指 更 新 的 及 时 性。 流 行 数 据 必 须 保 持 与 现 实 世 界 当 前 真 实 状 态 一 致。
---- 数 据 相 关 性 指 多 个 数 据 经 常 被 一 起 使 用 的 程 度。 当 装 入 或 交 换 数 据 时, 相 关 性 强 的 数 据 应 同 时 装 入 或 交 换。
---- 事 务 的 特 征 这 里 只 考 虑 影 响 数 据 装 入 与 交 换 的 那 些 事 务 特 征。 首 先 是 在 嵌 套 事 务 中, 父 子 事 务 的 数 据 是 共 享 的, 故 在 进 行 内 存 装 入 和 与 外 存 交 换 时, 必 须 注 意 到 这 一 点。 其 次 是 实 时 事 务, 其 数 据 装 入 的 次 序 及 时 机 必 须 有 利 于 保 证 满 足 其 定 时 限 制。 再 有, 高 优 先 级 事 务 的 数 据 显 然 应 留 驻 内 存, 且 不 能 交 换 出 去。
----2 . 初 始 装 入
---- 内 存 数 据 库 初 装 时, 首 先 考 虑 的 是 事 务 的 优 先 级。 优 先 级 高 的 事 务 先 装 入 内 存, 或 者 不 分 优 先 级 而 按 调 度 策 略, 将 先 执 行 的 事 务 先 装 入 内 存; 其 次 是 数 据 的 流 行 性, 流 行 数 据 对 应 的 事 务 往 往 也 是 高 优 先 事 务; 再 次 就 是 活 跃 性, 存 取 频 率 高 的 数 据 一 般 还 是 先 要 被 存 取 的 数 据; 紧 密 相 关 的 数 据 则 随 时 要 考 虑 被 使 用。
---- 初 装 的 基 本 思 想 是 将 数 据 库 的 全 部 属 性 的 集 合 按 其 存 取 频 率 及 相 亲 度 划 分 成 子 集, 然 后 求 出 每 一 子 集 的 加 权 最 高 存 取 优 先 级, 最 后 依 内 存 容 量, 将 相 对 加 权 存 取 优 先 级 高 的 那 些 子 集 装 入 内 存。
----3 . 内 外 存 数 据 交 换
---- 实 时 内 存 数 据 库 没 有 要 求 整 个 数 据 都 始 终 在 内 存, 故 系 统 仍 要 通 过 提 供 一 种 内 外 存 数 据 交 换 策 略 来 支 持 实 时 内 存 数 据 库 的 实 现, 数 据 交 换 策 略 必 须 考 虑 各 种 因 素:
- 高 易 变 的 实 时 数 据 必 须 常 驻 内 存O-DB 中 且 不 能 被 交 换 出 去。
- 活 跃 或 高 频 数 据 应 留 驻 内 存O-DB 中, 一 般 不 应 交 换 出 去。
- 立 即 流 行 的 数 据 在 第 一 个 处 理 请 求 以 前 不 能 被 交 换 出 去。
- 高 优 先 级 事 务 的 数 据 在 事 务 的 活 动 期 不 能 被 交 换 出 去, 尤 其 当 事 务 是 周 期 性 事 务 时, 其 数 据 应 尽 可 能 常 驻O-DB。
- 非 永 久 数 据 和 关 键 数 据 最 好 不 要 换 出。 非 永 久 数 据 无 需 换 出; 关 键 数 据 至 关 重 要, 要 保 证 对 它 的 存 取 的 及 时 性 和 有 效 性。
---- 进 行 交 换 的 数 据 单 位 通 常 是 元 组 集( 页 或 块)。
实 时 内 存 数 据 库 的 故 障 恢 复
----
1 . 恢 复 机 制
---- 对 实 时 内 存 数 据 库 而 言, 恢 复 显 得 更 为 关 键, 它 与 传 统 的 恢 复 技 术 差 别 也 很 大, 主 要 表 现 在 日 志 设 施、 检 验 点 技 术、 数 据 重 装 策 略 等 方 面。 一 般 恢 复 机 制 模 型 应 基 于 以 下 原 理:
- 恢 复 的 焦 点 是 内 存 而 不 是 磁 盘 数 据 库。
- 恢 复 本 身 要 求 的 满 足 不 应 以 牺 牲 事 务 对M-DB 的 存 取 性 能 为 代 价, 这 意 味 着 恢 复 与 事 务 应 尽 可 能 进 行 异 步I/O。
- 恢 复 性 能 对 整 个 系 统 的 总 体 性 能 更 为 关 键, 因 而 要 开 发 适 合 于 实 时 数 据 库 的 恢 复 技 术 与 工 具。
---- 实 时 内 存 数 据 库 的 记 录 日 志 可 以 设 计 为:
- 日 志 缓 冲 区 与 事 务 的 工 作 区 合 一, 以 节 省 内 存。
- 日 志 缓 冲 区 中 只 记 录" 后 映 像", 即 只 需Redo-only 记 录, 不 必Undo 记 录。
- 每 个 活 动 事 务 有 各 自 的SLB(Stable Log Buffer), 然 后 按 数 据 库 片 聚 簇 成 页, 再 一 次 一 页 地 写 入 磁 盘 日 志 中。
---- 做 检 验 点 的 目 的 是 为 了 减 小 恢 复 的 工 作 量, 它 限 制 恢 复 活 动 仅 对 那 些 自 上 次 检 验 点 以 来 开 始 的 事 务 进 行, 其 任 务 就 是 将 这 些 事 务 对 数 据 库 所 作 的 变 更 进 行 备 份。 做 备 份( 检 验 点) 的 策 略 有 三 种:
---- 事 务 一 致 性 备 份( 检 验 点) 它 原 子 地 反 映 一 个 事 务 活 动, 故 备 份 或 者 全 是 后 映 像( 事 务 提 交) 或 者 全 是 前 映 像( 事 务 夭 折)。
---- 活 动 一 致 性 备 份 它 原 子 地 反 映 每 一 活 动( 不 是 整 个 事 务), 故 备 份 可 能 既 有 前 映 像 也 有 后 映 像, 但 不 会 有 反 映 部 分 变 更 状 态 的 记 录。
---- 模 糊 备 份( 检 验 点) 它 不 保 证 事 务 或 活 动 的 原 子 性。
---- 前 面 两 种 一 致 性 检 验 点 要 保 证 在 检 验 点 期 间, 被 备 份 的 数 据 不 同 时 被 活 动 的 事 务 修 改, 达 到 这 个 目 的 的 算 法 有 多 种, 有 代 表 性 的 是 静 止 检 验 点、 黑 白 检 验 点 与 更 新 时 复 制 检 验 点。
----2 . 数 据 库 的 重 装 入 恢 复
---- 重 装 就 是 由 数 据 库 外 存 版 本S-DB 和 日 志 恢 复 数 据 库 内 存 版 本M-DB 的 过 程。 重 装 有 完 全 重 装 和 部 分 重 装 两 种 类 型。 完 全 重 装 是 针 对 掉 电 等 系 统 故 障 的, 初 装 策 略 在 这 里 可 以 适 用。 部 分 重 装 是 针 对 内 存 介 质 故 障 或 内 存 不 能 存 储 整 个 数 据 库 的, 所 以, 交 换 策 略 适 用 这 里 的 情 况, 只 是 这 里 考 虑 的 是 如 何 选 择 要 换 入 的 数 据。
---- 一 种 带 优 先 级 的 顺 序 重 装 法 对 实 时 数 据 库 比 较 有 效, 它 考 虑 事 务 优 先 级, 先 装 立 即 所 需 数 据, 使 系 统 尽 快 地 重 启 动 运 行, 然 后 按 需 要 逐 步 装 入 数 据。