当前位置:  开发笔记 > 编程语言 > 正文

完全用PL/SQL编写大型批处理程序是愚蠢的吗?

如何解决《完全用PL/SQL编写大型批处理程序是愚蠢的吗?》经验,为你挑选了3个好方法。

我正在开始研究一个程序,这个程序可能最自然地被描述为数据库表的一批计算,并且将每月执行一次.所有输入都在Oracle数据库表中,所有输出都将输出到Oracle数据库表.该计划应在未来许多年内保持可维护状态.

将其实现为一系列存储过程似乎是直截了当的,每个存储过程都执行合理的转换,例如根据一些业务规则在部门之间分配成本.然后我可以编写单元测试来检查每个转换的输出是否符合我的预期.

在PL/SQL中完成所有操作是不是一个坏主意?您是否愿意在典型的面向对象编程语言(例如C#)中进行繁重的批量计算?使用像PL/SQL这样的以数据库为中心的编程语言是不是更具表现力?



1> 小智..:

您描述了以下要求

a)必须能够实施批处理b)结果必须是可维护的

我的回复:

    PL/SQL旨在实现您所描述的内容.同样重要的是要注意PL/SQL中的效率在其他工具中是不可用的.存储过程语言将处理放在数据旁边 - 这是批处理应该处于的位置.

    用任何语言编写难以维护的代码都很容易.

如上所述,您的实施将取决于可用的技能,正确的设计和对优质流程的遵守.

为了提高效率,您的实现必须批量处理数据(批量选择并批量插入/更新).面向对象方法的危险在于,很容易被引向逐行处理数据的设计.这种方法包含不必要的开销,并且与处理批量行数据的设计相比效率要低得多.

可以成功使用这两种方法.

马修巴特勒



2> Mike McAllis..:

其他评论者要注意的事情 - 问题是关于PL/SQL,而不是关于SQL.一些答案显然是关于SQL,而不是PL/SQL.PL/SQL是一种功能齐全的数据库语言,它也很成熟.有一些缺点,但对于海报想要做的事情,这是非常好的.



3> Joe Skora..:

不,这不一定是个坏主意.如果解决方案看起来很简单并且允许您测试和验证每个过程,那么听起来它可能是一个好主意.OO平台可以(尽管它们不一定)对大型数据集不利,因为对象创建和开销会破坏性能.

Oracle设计的PL/SQL存在类似于您的问题,如果有足够的公司数据库和PL/SQL知识,这似乎是一个合理的解决方案.记住大批量设置,因为从PL/SQL到实际SQL引擎的每次调用都是上下文切换,因此应尽可能将单个记录进程批处理以提高性能.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有