引言
Informix 通过虚拟表接口(VTI)提供对外部数据源的访问。外部数据源包括平面文件、其他数据库、互联网提要和其他来源。
VTI 提供一组称为目的函数 的 hooks。作为一名开发人员,您的任务就是创建实现 VTI 目的函数的访问方法 以及必要的额外用户定义例程(UDRs)来访问您的外部数据源。
本教程向您展示如何编译并将您的 VTI UDR 作为共享库运行。在示例中为清晰起见,VTI 目的函数位于一个源文件中,辅助的 C 函数位于一个单独的源文件中。VTI 目的函数被编译并链接到一个名为 tutorial.bld 的 datablade 库中。辅助的 C 函数被编译并链接到一个名为 libtutorial 的单独共享库中。编译 VTI 目的函数和辅助 C 函数到独立库中的一个好处是,辅助 C 函数可由多个 VTI 库使用。
您必须安装有 Informix 服务器。本教程使用 Informix 版本 11.50 和 11.70 进行了验证。后期版本预计类似。
您需要中级编程技能以及对 C 编程语言的一些背景知识。您需要有安装和配置 Informix 的实践知识。本教程使用 Informix 虚拟设备来提供一个公共环境。您可以从 IBM Informix 免费下载网站下载 Informix 虚拟设备,这列在 参考资料 部分。您还可以通过在 IBM 网站上搜索 IBM 虚拟设备 来找到 Informix 虚拟设备,或者您可以转至 IBM 免费下载网页来搜索 Informix 虚拟设备。
您可以在 Informix Information Center 中查找 Informix 虚拟设备的文档,也可以在引导映像之后在设备本身查找该文档。
本教程假定您在使用 Linux,但基本的概念适用且演示代码可被移植到任何支持 Informix 的系统。
本教程展示如何使用共享库连同 VTI。共享库的优势在于,仅在需要时才动态加载它们。这就将您的流程限制为仅在需要时才增长。
本教程还向您展示如何调试位于共享库中的 UDR 代码。请注意,共享库中的符号在加载共享库之前不可见。
该演示中的共享库实现一个打印方法。该方法用于在简单的 SQL 选择语句期间为调用的 VTI 目的函数实现一个跟踪功能。您可以根据该演示创建您自己的自定义 C 库。您的自定义库可由 VTI 目的函数使用,且可以执行任何一般任务。
该演示 VTI UDR 仅显示完整的目的函数集中的 4 个。服务器调用一个目的函数来执行明确定义的任务,即访问和管理您的外部数据源。您将需要为完整的 VTI UDR 实现所有其余的目的函数。参阅 参考资料 中更大、更高级的示例。