Linux 版 (精华区)
发信人: howdoit (教练让我上场!!!), 信区: Linux
标 题: 为构造生产环境试用postgreSQL
发信站: 哈工大紫丁香 (Tue May 18 08:53:08 1999), 转信
《Linux公报》……让Linux更富魅力!
为构造生产环境试用 postgreSQL
By Jurgen Defurne
翻译:Zou hongbo
介绍
随着质优价廉的自由软件时代来临, 我想使用 Linux 和数据库软
件构造一个生产环境. 过去我在几个环境中使用过数套数据库产品.
我的目的是比较一下 Linux/postgreSQL 和我熟悉的一些环境. 从它
们中, 我将选出我认为在生产环境中重要的方面.
以前的生产环境
我在三种环境中工作过. 它们是单机环境(PC), 联网 PC 环境(文
件/打印服务器网络), 和多用户/多任务环境(小型计算机). 我首先介
绍一些工具.
一些术语在此必须明确定义, 因为 xBase 的用辞让人疑惑. 术语
'数据库'表示 存放有序数据的数个相关表的集合. 术语'表'表示数据
的一个集合. 这是因为在原来 的 xBase 语言中, "数据库"往往用来
表示'表'.
FoxBase
实际上是一个快速的 dBase III 翻版, FoxBase 包含有定义一个
数据库与其中的表及 一个编程语言的最低需要, 这已经可以快速地实
现应用程序了.
一个数据库包括数个表和它们的索引. 一个表的索引的建立必须
明确地使用命令完成.
编程语言完全是过程式的. 它的语句可以生成菜单, 打开和关闭
表, 过滤表(查询), 插入, 修改和删除记录, 通过屏幕和一条 browse
语句查看数据. 这些都是在程序中 直接定义. 记录视同程序变量. 所
有数据以 ASCII 码格式存储.
dBase 发明的一个特性是'宏'. 这些宏是正文字符串, 它们将在
运行期间被编译和解释. 这是一个必要的特性, 因为许多语句使用不
带引号 的字符串作为参数, 例如 OPEN MY_TABLE. 如果你想定义一条
带参数的语句, 你不能 直接引用变量. 试一下执行 OPEN ARG_TABLE,
程序将寻找文件 'ARG_TABL'. 绕过这个问题的方法是像下面一样编码
:
ARG_TABLE = "MY_TABLE"
OPEN &ARG_TABLE
Clipper
Clipper 起初是一个 dBase 编译器, 但很快就对语言进行了强有
力的扩展. 我在 87 年夏天用过 5.0 版本. 在数据库层次上, 几乎与
FoxBase 无差别, 但是在用户 级别和编程级别上, 提供快速开发手
段, 加速了工程进度, 也改进了用户界面. 宏特性依然存在, 但
Clipper 用代码块扩展了它. 在原来的实现中, 宏在每次执行时 必须
重新赋值. 因此浪费了运行时间. 而代码块则是一个宏只编译一次,
其后只用 编译的宏版本.
其他特性包括一些用户界面方面的面向对象的类, 一个强大的多
维数组类型, 静态和局部变量的声明和大量的操纵数组和表的函数.
这些功能也意味着要花费更多 的时间学习使用. 我有两本 Clipper
5.0 的书, 他们都很厚.
FoxPro 2.0
FoxPro 是 FoxBase 成功的继承者. 它加入了图形用户接口(GUI
interface), 使它 可以工作在重叠窗口下. FoxPro 2.0 也加入了嵌
入式的 SQL 语句. 它只是一个子集, 包括 SELECT, INSERT, UPDATE
和 DELETE, 但是比起一般的查询语句已经是本质上的 优势了. 它也
优化了表和索引之间的关系, 一次查询方面强有力地融合. 它们也提
供 了一些开发工具, 其中最重要的是屏幕开发和源码文档工具.
Clipper 和 FoxPro 也使网络应用开发有了可能性, 从而激发了
多用户数据库系统 的开发.
WANG PACE
WANG PACE 是一个运行在 WANG VS 小型机上完整的数据库开发系
统. 它提供了一个扩展 的数据字典, 带有字段和记录级合法性检查,
HL 语言触发器和视图定义. 所有已定义的 实体都有一个版本计数器.
如果一个实体修改了而随后的程序未修改, 那么运行时就会 出现版本
不符的错误. 它还提供了一个强有力的屏幕编辑器, 一个报表编辑器
和示范查询 系统. 可以嵌入到 COBOL 中, COBOL85 或者 RPGII 可以
使用一个预处理器将嵌入语句 编译为 API 呼叫.
重要特性总结
回想这些系统, 哪些重要特性提高了编程效率 ? 将这些特性与
postgreSQL 比较. 这必须从一个程序员的角度出发, 他必须能够不受
无关的细节干扰而完成应用程序.
字段名翻译为本地变量名
将表中字段名称定义的和程序中的一致.
统一的内存申请系统
xBase 系统有一个动态内存申请机制, 完全是由动态库处理.
COBOL 则全部是静态 申请. 在这些语言中, 程序员无需考虑内
存申请的问题.
通过当前记录直接更新
可以通过一个和另外一个 UPDATE 语句修改操作的记录.
数据库语句与应用程序语言有着相同的格式
当使用 xBase 编程时, 读取和操作记录的语句是过程语言必不
可少的一部分.
在 COBOL 中, 嵌入的语句由一个预处理器处理. 剩下的语句的
语法类似 COBOL, 也有着 COBOL 的优点和缺点.
屏幕的简单定义和使用
在 xBase 中, 有简练而有力的语句定义屏幕. 只需使用一条或
两条语句即可运行 建立的屏幕.
在 WANG PACE 中, 屏幕只能使用屏幕编辑器定义. 有三条语句
: 一条使用菜单, 一条出力光标处的记录和一个重复版本可以处
理光标处的所有记录. 大部分屏幕处理 工作是由运行时间库完
成.
安装 postgreSQL 时存在的特性
一部分特性可以通过 ecpg 预处理器安装. 这样可以使用本地程
序变量, 你无需担心内存分配, 因为运行时间库来照料它, 在你 修改
程序变量时更新也自动完成.
缺少的东西是, 一个特别的 include 语句. 现在你需要知道表中
的字段, 如果想 使用'exec sql declare'语句的话. 如果表定义修改
了, 重新编译程序将使它与表定义 一致.
使用 pgaccess 程序(在 X 窗口下)可以更舒服地使用数据字典.
总结
我对 postgreSQL 不满的地方是发行包中简短的文档. 这使得寻
找和使用附加功能变得 相当困难.
我想以我在其它平台上的经验说明一个生产环境应该交给程序员
什么东西. 然后, 我开始仔细研究发行的文档. 让我吃惊地是所有我
需要的组成部分在包中都有.
但是不满依然存在. 文档相当零乱, 相当一部分是围绕着程序员
不需要的技术细节. 但这可以理解. 文档是实现它的人完成的. 根据
我自己的体会, 用户文档十分难写, 常常会陷入诸如如何实现等一些
技术细节中.
下面的 postgreSQL 部分对于产品程序员是重要的, 它们的文档
需要更多的补充.
psql 处理器
这是一个良好的工具, 用来定义数据库中的所有实体, 熟悉 SQL
和测试想法及 验证联接和查询.
ecpg 预处理器
这是一个主要的生产工具, 用来书些数据库管理语句的应用. 这
种能力应该延伸 到其他语言. 由于光标处的内容已经绑定到程
序变量, 所以无需转换数据即可处理记录, 通过 'exec sql
update' 即可更新(记录).
pgaccess 包
pgaccess 包能够使用数据库的各个部分来设计屏幕和报表. 它
还处在开发阶段. 我希望将来它能够得到扩展, 因为这个想法是
优秀的, 第一个实现表现的不错.
libpq 库对生产环境的程序员没有真正的价值. 它的主要用途是
实现整合的开发环境和 数据库实用语言. 例如, 它能生成一个类似
xBase 的环境(如果有人愿意做的话).
进一步研究
在接下来的数周(月), 我希望建立一个完整的网络数据库系统,
有一个服务器和数个 不同类型的客户端(工作站, 终端, 远程计算
机), 通过不同的界面(以太网, 串口) 与服务器通讯. 我将对几个平
台的应用程序开发做一下调查. 我倾向于使用 postgreSQL 包中的开
发工具(开发一个简单的书籍管理数据库), 但我也会关心一下 Java
通过 JDBC 的工作情况, 屏幕设计和应用编程的可能性.
最后一点注释 : 目前我将精力放在我不需要付费的工具上, 是因
为我必须为我的硬件 和我的家庭付帐. 这并不说明我是一个坚持软件
免费的死硬分子. 一个生产环境是会愿意 为软件付帐的, 因为需要全
部的工具及技术支持和保证(不良的技术支持将是及其恐怖的).
版权所有 (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)
页面执行时间:3.582毫秒