oracle - 完全用PL/SQL编写大型批处理程序是不是很愚蠢?

标签 oracle plsql batch-processing

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

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

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

最佳答案

您描述了以下要求

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

我的回应:

  1. PL/SQL 旨在实现您所描述的目的。还需要注意的是,PL/SQL 具有其他工具所不具备的效率。存储过程语言将处理放在数据旁边 - 这是批处理应该进行的位置。
  2. 用任何语言编写难以维护的代码都很容易。

话虽如此,您的实现将取决于可用的技能、正确的设计以及对良好质量流程的遵守。

为了提高效率,您的实现必须批量处理数据(批量选择和批量插入/更新)。 OO 方法的危险在于,很容易导致逐行处理数据的设计。这种方法包含不必要的开销,并且比批量处理数据的设计效率要低得多。

两种方法都可以成功使用。

马修·巴特勒

关于oracle - 完全用PL/SQL编写大型批处理程序是不是很愚蠢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/78626/

相关文章:

java - 如何使用Spring批处理有效且正确地将顺序 Activity 加载到数据库?

oracle - PL/SQL用于自定义类型上的内爆功能

sql - Oracle SQL XML 函数 - 如何在 XML Prolog 中进行编码?

sql - Oracle中如何做到top 1?

php - 第一次加载时出现数据库错误,但刷新时没有

oracle - 有条件地定义一个游标

java - Spring项目无法连接数据库

java - 如何使用hibernate滚动ScrollableResults进行批处理?

sql - PLSQL 异常回滚

mysql - 批处理文件和与数据库的差异