OLE DB 的 概 念

土豆 2000-10-16 07:28:00
OLE DB 的 概 念 ---- 简 单 地 说,OLE DB 是 一 种 技 术 标 准, 目 的 是 提 供 一 种 统 一 的 数 据 访 问 接 口, 这 里 所 说 的“ 数 据”, 除 了 标 准 的 关 系 型 数 据 库 中 的 数 据 之 外, 还 包 括 邮 件 数 据、Web 上 的 文 本 或 图 形、 目 录 服 务(Directory Services), 以 及 主 机 系 统 中 的IMS 和VSAM 数 据。OLE DB 标 准 的 核 心 内 容 就 是 要 求 以 上 这 些 各 种 各 样 的 数 据 存 储(Data Store) 都 提 供 一 种 相 同 的 访 问 接 口, 使 得 数 据 的 使 用 者( 应 用 程 序) 可 以 使 用 同 样 的 方 法 访 问 各 种 数 据, 而 不 用 考 虑 数 据 的 具 体 存 储 地 点、 格 式 或 类 型。
---- OLE DB 标 准 的 具 体 实 现 是 一 组C++ API 函 数, 就 像ODBC 标 准 中 的ODBC API 一 样, 不 同 的 是,OLE DB 的API 是 符 合COM 标 准、 基 于 对 象 的(ODBC API 则 是 简 单 的C API)。 使 用OLE DB API, 可 以 编 写 能 够 访 问 符 合OLE DB 标 准 的 任 何 数 据 源 的 应 用 程 序, 也 可 以 编 写 针 对 某 种 特 定 数 据 存 储 的 查 询 处 理 程 序(Query Processor) 和 游 标 引 擎(Cursor Engine), 因 此OLE DB 标 准 实 际 上 是 规 定 了 数 据 使 用 者 和 提 供 者 之 间 的 一 种 应 用 层 的 协 议(Application-Level Protocol)。

---- 即 将 发 布 的 微 软 最 新 数 据 库 产 品SQL Server 7.0 的 查 询 处 理 程 序 就 是 使 用OLE DB API 编 写 的, 所 以 在SQL Server 7.0 的Transact-SQL 语 法 中, 可 以 支 持 异 种 数 据 库 的 查 询, 当 然, 这 些 异 种 数 据 库 必 须 也 提 供 相 应 的OLE DB 访 问 接 口。

OLE DB 标 准 中 定 义 的 新 概 念 ---- OLE DB 将 传 统 的 数 据 库 系 统 划 分 为 多 个 逻 辑 组 件, 这 些 组 件 之 间 相 对 独 立 又 相 互 通 信。 这 种 组 件 模 型 中 的 各 个 部 分 被 冠 以 不 同 的 名 称:
数 据 提 供 者(Data Provider)。 提 供 数 据 存 储 的 软 件 组 件, 小 到 普 通 的 文 本 文 件、 大 到 主 机 上 的 复 杂 数 据 库, 或 者 电 子 邮 件 存 储, 都 是 数 据 提 供 者 的 例 子。 有 的 文 档 把 这 些 软 件 组 件 的 开 发 商 也 称 为 数 据 提 供 者。
数 据 服 务 提 供 者(Data Service Provider)。 位 于 数 据 提 供 者 之 上、 从 过 去 的 数 据 库 管 理 系 统 中 分 离 出 来、 独 立 运 行 的 功 能 组 件, 例 如 查 询 处 理 器 和 游 标 引 擎(Cursor Engine), 这 些 组 件 使 得 数 据 提 供 者 提 供 的 数 据 以 表 状 数 据(Tabular Data) 的 形 式 向 外 表 示( 不 管 真 实 的 物 理 数 据 是 如 何 组 织 和 存 储 的), 并 实 现 数 据 的 查 询 和 修 改 功 能。SQL Server 7.0 的 查 询 处 理 程 序 就 是 这 种 组 件 的 典 型 例 子。
业 务 组 件(Business Component)。 利 用 数 据 服 务 提 供 者、 专 门 完 成 某 种 特 定 业 务 信 息 处 理、 可 以 重 用 的 功 能 组 件。 分 布 式 数 据 库 应 用 系 统 中 的 中 间 层(Middle-Tier) 就 是 这 种 组 件 的 典 型 例 子。
数 据 消 费 者(Data Consumer)。 任 何 需 要 访 问 数 据 的 系 统 程 序 或 应 用 程 序, 除 了 典 型 的 数 据 库 应 用 程 序 之 外, 还 包 括 需 要 访 问 各 种 数 据 源 的 开 发 工 具 或 语 言。
OLE DB 与ODBC 的 关 系 ---- 由 于OLE DB 和ODBC 标 准 都 是 为 了 提 供 统 一 的 访 问 数 据 接 口, 所 以 曾 经 有 人 疑 惑:OLE DB 是 不 是 替 代ODBC 的 新 标 准 ? 答 案 是 否 定 的。 实 际 上,ODBC 标 准 的 对 象 是 基 于SQL 的 数 据 源(SQL-Based Data Source), 而OLE DB 的 对 象 则 是 范 围 更 为 广 泛 的 任 何 数 据 存 储。 从 这 个 意 义 上 说, 符 合ODBC 标 准 的 数 据 源 是 符 合OLE DB 标 准 的 数 据 存 储 的 子 集。 符 合ODBC 标 准 的 数 据 源 要 符 合OLE DB 标 准, 还 必 须 提 供 相 应 的OLE DB 服 务 程 序(Service Provider), 就 像SQL Server 要 符 合ODBC 标 准, 必 须 提 供SQL Server ODBC 驱 动 程 序 一 样。 现 在, 微 软 自 己 已 经 为 所 有 的ODBC 数 据 源 提 供 了 一 个 统 一 的OLE DB 服 务 程 序, 叫 做ODBC OLE DB Provider。
---- ODBC OLE DB Provider 发 布 之 后, 有 人 又 担 心:ODBC Provider 是 不 是 在ODBC 之 上 的 新 的 层 次(Layer) ? 如 果 是, 那 么 使 用OLE DB 访 问ODBC 数 据 源 是 否 将 影 响 性 能 ? 答 案 也 是 否 定 的。 实 际 上,ODBC Provider 的 作 用, 是 替 换ODBC Driver Manager, 作 为 应 用 程 序 与ODBC 驱 动 程 序 之 间 的 桥 梁, 理 论 上 不 会 增 加 任 何 开 销。

ADO 的 概 念 ---- 我 们 已 经 知 道,OLE DB 标 准 的API 是C++ API, 只 能 供C++ 语 言 调 用( 这 也 是OLE DB 没 有 改 名 为ActiveX DB 的 原 因,ActiveX 是 与 语 言 无 关 的 组 件 技 术)。 为 了 使 得 流 行 的 各 种 编 程 语 言 都 可 以 编 写 符 合OLE DB 标 准 的 应 用 程 序, 微 软 在OLE DB API 之 上, 提 供 了 一 种 面 向 对 象、 与 语 言 无 关 的(Language-Neutral) 应 用 编 程 接 口, 这 就 是ActiveX Data Objects, 简 称ADO。
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧