Linux 版 (精华区)

发信人: howdoit (教练让我上场!!!), 信区: Linux
标  题: 定义一个以Linux为基础的生产系统
发信站: 哈工大紫丁香 (Tue May 18 08:52:21 1999), 转信

《Linux公报》……让Linux更富魅力!

 定义一个以 Linux 为基础的生产

                              系统

                           By Jurgen Defurne

                         翻译:Zou hongbo

介绍

    在前一篇文章("Thoughts About Linux", LG, 十月刊), 我略述

了在企业中 使用 Linux 的几个话题, 不只是网络和通讯部分, 还包

括真正的生产环境. 尽管还有一些条件需要满足, 但是定义一个基本

的数据库系统是可能的, 在这基础上 可以迅速扩展, 并容纳它所需要

的一切. 

在过去的两个月中, 我对 Linux 本身和它现有的工具们有了更多的了

解. 尽管 还需要详尽的工作, 但我已经有了一个不错的想法. 

目的

    目的是看一看组成一个可以信赖的数据库生产系统的各个部分,

带有必需的开发工具(快速) (适应家庭), 当然它们的价格将比相应的

商用系统各部分的价格低许多. 它必须可以信赖, 当然也需要必要的

停机时间, 但必须能够忍受. 

    这里我插一句. 我经历过数个工程, 那时人们希望通过快速开发

节省时间, 或者 重用现有的部件和转换系统来节省资金, 所有情况下

时间和金钱都失去了, 主要问题 是不能了解问题的所有方面. 

这种错误我不想重犯. 我认为现在我自己有了足够的经验去完成上面

定义的目标, 描述一个以 Linux 为基础的生产平台, 有着很低的配置

和开发的费用. 

要素推荐

    这有基本的路线方针. 首先, 生成和开发一个成功的生产系统要

确定在这个平台上需要 的工具数量. 这引向第二个成功, 懂得和理解

你的工具们. 体验是最有价值的判断工具, 不过这也依赖于工具的数

量和复杂性. 在尝试了解手边工具的过程中, 能够浪费大量时间. 良

好的有清晰例子的手册是极大的帮助, 主题教程也一样. 

硬件

    现在我不能深入讨论硬件. 基本的平台应该是一台标准 PC, 一个

IDE 硬盘和 PCI 控制器(它足够快了). 我测试过一台 Compaq Despro

系统(166 MHz, Triton II chipset), 粗粗测得数据传输速率(无缓

冲, 写操作)为 2.5 MB (百万字节)/s. 对一个小系统已经 足够了.

进一步的测试应该是测试生产环境下的负载情况. 

    最重要的是, 所有存有生产数据的 Linux 必须配有 UPS 才能运

行. 这是因为 一个 e2fs 文件系统(和 Un*x 文件系统一样)在系统意

外宕机时很脆弱. 因此, 一个 磁带机也是需要的, 从开始就必须做好

后备和恢复工作. 

生产工具

    我们的主引擎是数据管理系统. 用于生产领域, 必须有如下特性:

      快速查询能力 

      批处理 

      打印 

      远程通讯 

      交易监控 

      日志 

      用户界面 

快速查询能力

    这一特性对于交互应用特别必要. 你的客户不会愿意等待半分钟

来看查询结果. 这种能力 可以通过缓存, 快速 CPU, 快速磁盘驱动

器, 快速总线和 RAID 来加强. 

批处理

    这是一个很有价值的生产工具. 有许多工作依赖于日间生产的改

变, 但之后需要更多的处理 时间. 它们一般运行在夜间, 一般在同一

时间开始运行, 每天, 每周, 每月, 每年等. 

打印

    打印在每一个生产系统中都是重要的事情, 从设计阶段就必须仔

细考虑. 这是因为许多 公司有数种正式文档. 不只支持激光或喷墨打

印机, 还必须支持那些进行重要任务的 打印机, 如发票, 多联纸, 等

等. 

远程通讯

    远程通讯并不只是因特网. 仍然有众多系统通过直连工作. 主要

原因是这给予负责这项 服务的人们以更大的控制权限. 除了 TCP/IP;

e-mail 和 fax, 对 X.25 的支持也是 这一领域的一项. 

人们也需要控制信息和 FAX 的发送. 应该有一个信息队列, 在那人们

可以浏览 信息(目的, 时间, 等)和取得自己的信息. 

交易监控

    交易监控, 我是说滚回挂起的数据表修改的能力. 这在某人同时

修改几个表时特别必要. 这些修改必须同时提交, 或者回到修改前的

状态. 

日志

    这在文件和文件系统由于某个系统错误需要修正很必要. 重启系

统后, 一个特别的程序 用来回退没有完成的事务. 在这方面, 日志和

交易监控很接近. 

用户界面

    这是一个混合部分, 因为它部分是开发部分是生产. 在生产部分,

界面帮助用户迅速找到他们的应用, 并将系统功能分类. 大部分我见

过的系统使用菜单完成这个工作. 这有几个原因. 主要原因是多数生

产系统 还是使用字符界面应用. 已经有许多 GUI, 但生产系统还是以

字符界面为主 (除了图象和打印, 这些市场太小), 甚至在 GUI 上也

使用(字符界面). 第二个原因是一个生产系统往往有许多许多大的小

的程序. 你不能将它们全部图标化, 并摊在地图中. 这样你只能有一

个图形菜单, 带有所有图标, 这只会越来越混乱. 

已经有什么了 ?

    注释 : 当我命名或指定产品时, 我只选择那些我已经熟悉的. 我

假定你们中有人会有自己的选择. 他们只是基本的例子, 并不是我带

有某些偏见. 

    Linux 系统中唯一一个我个人了解过一段时间的数据库系统是

PostgreSQL. 它支持 SQL 和交易监控. 它快吗? 我不知道. 大家应该

有生产系统的一套完整备份, 可以用来测试生产用的机器, 交互的,

后台的和批处理的工作就象在真正的环境中运行 一样. 

    为了进行批处理, crond 应该一直运行, 除此之外, at 和 batch

命令 可以用来实现一个相当程度上结构化的事务处理系统. 

    处理打印, 我知道有标准的 Linux 工具 lpd, Ghostscript, 和

TeTeX. 在一些场合, 你需要将数据和文档整合在一起. 主要原因是一

个字处理包在格式和文档 的内容方面提供更强的控制, 替代打印带有

简单报表应用的文档. 在工作间, 我忙于跑向 HP. 因为哪儿有

WordPerfect. 过去, 我使用在 DOS 下自动 启动的 WP 生成一个合并

文档. 也许 StarOffice 也能做到这一点 ? 

是否存在较 lpd 更好地在打印过程中进行交互控制的解决方案 ? 用

户们应该更容易地控制他们的打印作业和打印过程. 

    远程通讯是 Linux 的强项. 我不想详细说明. 即使它不支持

X.25, 但可以在拨号 线上使用 SLIP 或 PPP. 

    日志是 Linux 的弱项. 我曾经使用过的文件系统有 FAT, HPFS,

NTFS, e2fs, Novell 文件系统和 WANG VS minicomputer 系统. 在使

用它们的过程中, 我都遇到过停电或是宕机, 但是唯一一个出麻烦的

是 e2fs. 其他的系统, 经过一次文件系统检查就修复了故障, 系统又

继续运行了. 在 WANG VS 上, 存在文件连续索引. 当发生宕机时, 一

个索引文件可以恢复其物理完整性. 为了解决类似(文件系统)问题,

有两个解决方案. 第一个是重组文件. 也就是按记录依次 拷贝. 这样

重建了全部文件和它的索引, 丢掉了未完成的插入和删除操作. 第二

个选择 是使用内建的交易系统. 一个文件可以作标志表示它属于一个

数据库. 每一点修改都被 记录下来直到交易全部提交完成. 在发生操

作失败时, 可以根据存在的日志恢复到原始 状态. 这只是几分钟的

事. 

    我想在 PC 上唯一可以提供类似功能文件系统是 Novell. 

e2fs 文件系统的检查功能也是有效的, 但是它并不是足够强大. 当发

生过一次破坏 性足够强的宕机事故后, 文件系统便一团糟. 

开发工具

    我将说一下在我的前一个项目中, 我维护一个生产数据库所需要

的工具类型. 主要问题是在生产环境中提供程序员的产出率. 这意味

着应该给他们一个完整的开发包, 带有立即开始工作(或相对较短时

间)必须的工具和文档. 所以每一个工具包应有一个 简短而实用的教

程. 

我将把这一段分为两部分, 第一部分为必要的工具, 第二部分为可选

的工具. 当然确定怎样的工具是必要的也需要一种方法. 这种方法必

须是适应于所有的工具. 最容易的方法是浏览一个整合的开发环境(中

的工具). 

强制需要的开发工具

    哪些工具是不可争辩的开始编码需要的最小需求 ? 我发现在几种

平台上这些工具是极具价值的: 

      一个整合的开发环境 

      一个强有力的编辑器 

      一个交互式屏幕开发包 

      一个数据字典 

      一个有数据库预编译支持的高级语言. 

      一个角本语言 

整合的开发环境

    你的 IDE 应该以一种容易和一致的方式让你使用所有的工具. 它

应该具有高定制性, 但你在收到它应该是全配置, 可以使用所有已经

安装的工具. 

编辑器

    如果你有一个真正优异的编辑器, 它的表现应能类似一个整合的

开发环境. 增强效率的特性包括强有力的搜索替换功能和宏定义功能

(即使一个简单的只作记录 的宏也好过没有). 使用颜色标注语法不

错, 但没有的话也无所谓. (维持)语法完整 很好, 但人们必须学会不

依赖于它. 除此之外, 编辑器不知道哪一部分语句是你需要的, 所以

如果你不花费时间删除无用的源码的话, 那么最终(代码)总归会变得

越来越混乱. 

屏幕开发

    这是一个可以极大地节约你的经费的领域. 为了能够进行强有力

的屏幕开发, 你需要下面的部分: 

        1.可以使用数据字典中信息的标准屏幕 

        2.可以方便地在屏幕和应用之间交换变量数据 

        3.激活一个应用中的某一屏幕的标准方式 

    节省体现在几个方面. 如果你生成了一个新的屏幕, 那么你立刻

可以看到所需的表中 的所有字段. 之后, 只需调整位置和格式. 我曾

经使用这样两个类似的系统,FoxPro 和 WANG PACE, 巨大的节省贯穿

于整个软件周期(原型, 实现和维护). 

数据字典

    一个数据字典是一个强有力的工具, 信息可以从这释放到开发的

每一部分和每一个过程中. 屏幕构造者和 HL 预处理器应该能从数据

字典中释放信息. 在数据字典而不是应用程序中 定义对域和记录检查

函数的能力可以避免在程序中修改代码. 正确地使用报告, 人们可以

从不同的角度查看数据库的结构. 

一个有数据库预编译支持的高级语言

    没有一门高级语言, 你不可能完成开发工作. 只使用数据库系统

还是有些功能不能实现. 为了使开发容易些, 将数据库控制语句嵌入

到源程序中是可能的. 编译程序将自动处理它们. 

角本语言

    从几个方面来说, 角本语言是很有用的. 准备批处理只是它的功

能之一. 我也发现一个 包括了数个可重用部件的事务系统, 可以很容

易地使用一门角本语言将它们串起来. 同样, 全部系统的运行和维护

工作也将大大简化. 

可选的开发工具

    在几个平台上还有一些工具, 它们用起来比较顺手, 但不是一个

生产系统所必须的. 我发现这些不是经常使用. 

      交互查询系统 

      报表编辑器 

交互查询系统

    这经常是设计成为那些非程序员使用的. 但是经验告诉我那些不

是程序员的人们是没有 时间来学习使用这些工具的. 它作为程序员测

试查询和视图时有用, 但作为生产工具不能 真正发挥作用. 只是在某

些情况下, 对付要快的和繁重的工作, 值得去使用. 

报表编辑器

    这绝对是一个评价过高的工具. 我曾经和其他程序员讨论过这种

想法, 我们的结论是 : 老板们经常要求的报表往往远远超过一个简单

的报表工具的能力范围. 使用一个编程语言 特别定制报表是最好的办

法(有人知道类似事情吗 ? 有没有使用 Perl 摘录和生成报告 的经历

?). 

现成的是什么 ?

    注释 : 我将把主要精力放在比不可少的开发工具上. 开发环境中

的余下部分将主要围绕 PostgreSQL 的特性. 

    作为一个整合的开发环境, 差不多第一个会想到的是 EMACS. 它

与我的第二个主题有些交叉, 一个强有力的编辑器. 是否真的能在两

者之间划出一条清晰的界限 ? EMACS 到底是一个为开发环境服务的

多功能编辑器, 还是一个绑定了编辑器的开发环境 ? 

    数据字典, 屏幕开发包和数据库预处理器是紧密绑定在一起的,

比起其它部分. 屏幕编辑器和数据库预处理器从数据字典中读取信息,

数据库 HL 语句也用在屏幕 交互中. 既为 X 窗口, 也为字符终端开

发屏幕是可能的. 

    有数种高级语言可以选择, 但仍然有一种事务导向的语言被遗漏

了. 是的, 我说的是 COBOL, 虽然一个 xBase 类语言也是适合的. 我

在八年间使用过数种语言, 只有最后 两年用 COBOL, 它的确比 C/C++

更适合事务处理程序. 如果有人请我用 C/C++ 编写 事务应用, 我想

我的第一件事是写一个预处理器, 好让我使用类 COBOL 的语法写程

序. 

    我不知道 ADA 在商业应用中表现如何. 但是 GNAT 可以将嵌入的

SQL 语句翻译为 C 源码, 之后在通过 SQL 预处理器应该能够工作. 

    我只对 Perl 有一点了解, 关于 Tcl 和 Python 则一无所知, 但

是交互语言适应于 交互式的工作, 所以在对付一些处理大量数据的程

序时, 最好是编译为本地码运行. 

有一个领域是只有 COBOL 是最好. 那就是金融. 那是因为要使用压缩

的 18 位 十进制数, 而且小数点可能在任何一个位置. 你应该有相应

的编译器. 在 x86 平台上, 这是数学处理器的工作, 它能读取和存储

18 位压缩十进制数. 计算是在内部进行, 格式是协处理器的 80 位浮

点数. 

    当接触一个 Linux 系统时, 第一个遇到的角本语言可能就是

bash shell. 对多数 事情, 这已经足够了, 虽然我的经验大部分来自

简单的交互(提示和简单输入域). 

还应该有什么 ?

    正如我前面所述, 这份清单并不代表我个人对于任何一种产品和

程序存在偏见. 这份清单将用符合这些目录之一的产品来得到扩展,

所以, 任何提示都是欢迎的. 

    Linux 领域中的另外一个弱项是文档. 对于一个生产环境, Linux

文档一般必须预先从 Postscript 源码中打印出来. 商业产品一般来

说有着良好的文档. 对于其它 Linux 工具, Reilly & Associates 的

书值得一读. HOWTO 类文章并不适合于生产环境, 但是由于它们一般

是关于运行的文章, 所以适合于整合系统的人们. 要点是 : 当移交系

统时, 所有必须的文档也必须准备好同时 移交. 我曾经作过几个联机

文档系统, 但一旦处于生产环境中, 什么也比不上印好的文档. 

  

                     生产系统(Production system)

     数据库  

     - 快速 查询/修改  

     - 交易处理  

     - 日志

                                    postgreSQL  

                                    mySQL  

                                    mSQL  

                                    Adabas  

                                    c-tree Plus/Faircom Server

                                      

                                    ...

     通讯

                                    ppp  

                                    slip  

                                    efax  

                                    ...

     批处理

                                    crond  

                                    at  

                                    batch

     打印

                                    lpd

     用户界面

                                    ?

                               开发系统

     综合开发环境(IDE)

                                    EMACS

     编辑器

                                    EMACS  

                                    vi

     屏幕界面开发

                                    依赖于数据库

     数据字典

                                    依赖于数据库

     应用程序语言

                                    C  

                                    C++  

                                    Cobol ?  

                                    Perl  

                                    Tcl(/Tk)  

                                    Python  

                                    Java

     角本语言

                                    bash

总结

    我仍然在努力将 Linux 拉入企业事务应用. 如果你想这样, 你必

须能够向顾客移交一个 完整的系统. 在这篇文章中, 我勾勒了这样一

个系统的概貌和一些需要克服的弱点. 作为结果, 我使用一张表列举

了所需要的部分. 

    这张表绝对没有完成. 我欢迎大家来完善它. 一个月进行一次更

新 是可能的. 另外我想做的事是使用现有的文档来扩展这张表. 

    另一需要重视的部分是开发测试程序测试它的能力, 例如, 吞吐

量和几个重负载 样本下的反应等. 

 

  

                       版权所有 (C) 1999 NJLUG

           出版于第36期《Linux公报》1999年1月 中文版第三期

                            


--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: bin@mtlab.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:205.020毫秒