FairCom 的 c-tree Plus

作者:Nick Xidis
  • 制造商:FairCom

  • 价格:895 美元;相同站点的额外程序员许可证可以以零售价的 6 折购买。

  • 评测人:Nick Xidis

工业级强度跨平台 btree 文件管理。

c-tree Plus 是一个专业的开发者软件包。它具有一套复杂的功能,可以生成商业级多用户应用程序。它几乎可以在所有带有 C 编译器的平台上工作,并且在一个平台上编写的应用程序可以快速且轻松地移植到其他平台。它甚至可以解决大多数平台的原生文件处理弱点。如果您不是专业的程序员,很可能您从未听说过 FairCom 或 c-tree Plus。《手册》上说

c-tree Plus 是一款精细的文件管理产品,旨在用于各种操作系统环境。它使用 C 语言编写,旨在与您的 C 应用程序集成,以提供易于使用且灵活的数据文件操作和索引。

哇,真拗口!让我们先介绍一些基础知识。对于我们这些不痴迷 C 编程的人来说,一个简单且因此不错的方式来理解 c-tree Plus 就是将其视为一个 C 函数库,用于管理数据文件和索引,类似于 Borland 的 dBase 在旧 DOS 平台上工作的方式。稍后您会看到,这是一个专业的开发包,比 DOS dBase 具有更多功能,请耐心听我说。

基础知识

在最简单的应用中,例如企业的客户数据库,可以通过多个二叉树 (btree) 索引文件访问单个数据文件。每次您的应用程序通过不同的索引访问数据时,您的数据看起来就像另一个按您正在使用的索引排序的数据文件。您可以创建一个关于客户姓名的索引,另一个关于客户账号的索引。查看客户姓名索引,数据似乎是按客户姓名排序的。使用账号索引,通过 btree 索引的神奇功能,相同的数据看起来就像一个按账号排序的新数据文件。

如何将 ISAM 与 c-tree Plus 一起使用

让我们概述一下如何构建一个简单的应用程序。c-tree Plus 提供了一整套索引顺序访问方法 (ISAM) 函数,这些函数可以在单个 ISAM 函数调用中执行多个文件和索引操作。如果您确实需要完全控制,也可以使用低级 c-tree Plus 函数,但作者和 FairCom 建议您坚持使用 ISAM 函数。为了在各种平台上完全兼容,c-tree Plus 使用自己的数据类型。例如,“int” 在一个系统上可能是两字节整数,而在另一个系统上可能是四字节整数。使用 c-tree Plus,您可以使用 COUNT,它始终是一个两字节有符号整数。

C-tree 还以 pCOUNT 的形式提供了指向其自定义类型的指针,它等同于 COUNT *。最重要的自定义数据类型之一是 IFIL,它定义了 ISAM 文件实例的参数。您可以在源代码中声明数据结构,也可以使用单独的参数文件。我喜欢在源代码中使用结构,因为当您使用 ISAM 参数文件单独打开和关闭文件时,要么全有要么全无。

IFIL 结构非常简单明了——它包含指向文件名的指针、文件编号、数据记录长度以及指向 IIDX 索引文件结构的指针。接下来,您将使用 IIDX 结构声明数据记录中每个数据实例的索引键参数,该结构包含键长度、键类型和标志(如果允许重复键或空键),以及指向索引文件名的指针。拥有重复键的能力是 c-tree 包的一个重要特性。当您使用重复键时,c-tree 系统实际上会填充每个键以使其唯一。您的应用程序无需处理任何事情——一切都为您处理好了。

最后一个结构是 ISEG,它通过段长度和偏移量告诉 c-tree 在数据记录中查找键值的位置。就是这样!只需三个基本结构,您的数据模式就布局好了。用于处理文件结构的函数经过深思熟虑且非常直观。CreateFile、OpenFile、AddRecord、GetRecord 和 DeleteRecord 都完全符合您的预期。

适用于各种场合的模式

现在来说说模式。c-tree 共有四种模式,两种单用户模式和两种多用户模式。每种模式的功能各不相同,但基本功能是相同的。最简单的单用户模式为您提供除文件安全之外的所有功能。另一种模式添加了在线事务处理 (OLTP)。C-tree 的 OLTP 套件非常棒;您可以回滚事务、使用各种保存点,并享受出色的日志记录和轻松恢复。在作者的偏见看来,OLTP 对于任务关键型业务应用程序来说确实是必不可少的——这个软件包做得很好。

现在来说说多用户模式,这是该软件包真正大放异彩的地方。首先是非客户端/服务器模式。它使用 Unix 程序员习惯的传统文件和记录锁定方法。使用 Linux 的 NFS 功能,您可以使用此模式创建客户端/服务器应用程序,但您将放弃 OLTP 和 c-tree 的大量文件缓冲。我们编译了一些简单的应用程序,发现随着用户数量的增加,此模式很快就会变慢。对于 OLTP 不会过度拖累的小型企业来说,使用 NFS 和多用户模式可能是共享数据应用非常经济高效的解决方案。

现在来说说 c-tree 套件的皇冠上的明珠:客户端/服务器模式。该软件包包含一个 FairCom 服务器二进制文件,用于您指定的平台(Linux、OS/2、Netware、DOS、NT 等);这是该软件包中唯一不提供源代码的部分。我很惊讶地发现几乎每个平台都有服务器——是的,即使是低端的 DOS 也可以运行 FairCom 服务器并处理记录锁定和文件安全。

在 Linux 等多任务平台上,服务器在后台运行,并且行为良好。当您使用客户端/服务器模式时,您可以获得完整的 OLTP、文件安全以及文件和记录锁。FairCom 服务器看起来速度很快,但我没有条件真正加载它。您的应用程序通过 TCP/IP 套接字、共享内存或消息队列与服务器通信。我通过以太网和 PPP 拨号使用 TCP/IP 运行它,发现性能非常好。另一个巧妙的技巧是在客户端/服务器模式下,您可以同时透明地访问带有或不带有 OLTP 的本地磁盘。在大多数情况下,您可以通过使用适合该模式的正确 c-tree 库重新编译应用程序来更改模式。这非常酷,因为您可以通过使用不同的 c-tree 库重新编译,从单用户 OLTP 应用程序转变为客户端/服务器应用程序。

安装

安装非常简单——只需按照《安装和快速入门指南》进行操作即可。首先,对包装盒中的两个 Unix 软盘中的每一个运行 tar -xvf /dev/fd0。然后运行 tar -xvf ctreeX.tar 以解压缩源代码——是的,您获得了完整的 c-tree Plus 源代码。FairCom 提供了自己的 make 程序来引导您完成构建过程。在这一领域,FairCom 可以做得更好一些。我发现编译 make 程序的流程——运行 mtmake 配置实用程序来设置编译器标志,然后运行 FairCom 的 make 程序 mk——有点繁琐。特别是当您想要独立、多用户和客户端/服务器模式库时,您必须重复最后几个步骤三次。此外,您可能需要手动编辑 ctree.mak 文件并添加您喜欢的编译器标志。我添加了 -O-Wall——是的,我很偏执,喜欢看到大量的警告消息。从好的方面来说,他们的 make 程序在任何平台上都能正常工作。

结论

FairCom 的 c-tree Plus 是一款经过验证的成功产品,已经存在很长时间了(自 1979 年以来)。它是构建严肃业务应用程序的绝佳基础。凭借 FairCom 的按开发者而非按平台许可模式,Linux 系统 c-tree 是一款非常经济高效的跨平台开发工具。

Linux 社区需要更多像这样的专业开发工具。如果您是专业或“准专业”开发者,希望构建任务关键型业务应用程序,我强烈建议您了解一下 c-tree Plus 及其报表生成器以及 4GL 伴侣 r-tree 和 d-tree。您可以在 http://www.faircom.com/ 获取更多信息。

加载 Disqus 评论