发信人: crazycode()
整理人: leitiger(2002-06-11 11:25:11), 站内信件
|
数据库
PB的强项是纯数据库开发,下面就谈谈如何更好的结合使用PB与数据库,发挥出 两者的最大功能。
数据库本质上讲上一个容器,一个盛装数据与规则的容器。各种桌面、企业级数 据库很多,但原理功能都差不多。存储管理数据的功能依靠数据库中的表实现, 表定义了各个数据项目的类型、大小,为数据存储提供了一个格式定义;而管理 规则
则包括视图、存储过程、触发器等,这里将视图作为一种规则,而不是管理数据 的方式,因其实质是表的抽象,具体数据仍然来源于基本表。存储过程、数据库 函数类似于一般程序中的函数,是用PL/SQL、T/SQL等数据库结构化语言书写的存 储于数据库内的逻辑;触发器是一种特殊的自动调用的逻辑代码,同样用数据库 结构化语言书写,它依附于表上,当对表进行插入、修改、删除时自动被激活, 完成适当的逻辑处理。触发器很多情况下是作为系统自动调用的强制执行的逻辑 来完成诸如数据复制、更新、日志等功能,它由系统保证与激发它的事物(Tran saction)成为一体,一同提交、回退。
PB中没有数据存储功能,只有逻辑管理功能,它有类似与视图的Query、Datawin dow,有类似存储过程、数据库函数的各类函数,类似约束的界面校验规则,类似 触发器的事件处理。
Query、Datawindow封装了表或视图,为操作数据库提供了一层隔离机制;而函数 则是用PowerScript书写的独立与具体数据库的逻辑;界面数据校验规则是数据库 约束的界面表示,它将更及时、有效地反映约束。以上规则定义的管理功能是不 能共享的,但是如果将函数等定义为COM/CORBA组件就另当别论了。
既然在很多功能上数据库与PB有功能重复,我们如何处理好他们之间的功能分配 与协调呢?下面针对C/S模式说说自己的看法。业务逻辑如果是处理数据的或负责 大量计算或需要经常改动的则可以放在后台实现。对于数据处理、逻辑计算前台 只需请求结果,后台返回结果,减轻了网络负担与客户机负担;对与需要经常改 动的逻辑放在后台,那么后台的修改对于前台是透明的,只要接口不变,那么前 台应用程序无须做任何修改;同时需要各个模块共享的逻辑也可以放在后台。对 于那些与界面相关的、与用户交互相关的、与外设相关的我们可以用PB实现。比 如打印、窗口布局等。约束规则在数据库的后台定义将更加安全,但仅有这些是 不够的,用户需要的是即时的反馈机制,特别是对于系统使用生疏的用户。我们 可以为Datawindow各个字段建立校验、可以在Datawindow控件的相关事件中写检 查代码,
但同时不要忘了在数据库中也要写约束,防止漏网之鱼!
PB的Datawindow有一些属性如Retrieve,即Retrieve as Needed,Retrieve to
Disk,这些能加快系统响应速度,但根本的加快处理速度的办法在于后台,因为前 台是多种多样的,我们不可能考虑的了全部前台环境,但在后台我们可以使用索 引、分区、条块等方式加快速度。Datawindow有一个Filter属性,类似于SQL的W HERE子句,但是除非与具体客户环境相关,最好用SQL的WHERE实现,这样可以大 大加快速度。很多开发人员写出类似于触发器的东西,自己用PB编码完成一致性 处理,如主子表等,但这是系统不安全、数据不完整的一个漏洞,后台做的事情 没有必要拿到前台来做。最后讲下数据库透明,即程序应该隔离开数据库,提供 给用户一个更友好的操作数据的界面,这也是程序的最终目的吧!
-- IF 回复 THEN
请选中'将本文章寄一份给原作者', 多谢!
END IF
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.124.200]
|
|