资金计算,java和Oracle/PL SQL之间的比较使用

roy*_*osa 7 java oracle plsql

在处理货币计算时,您可以根据自己的优势和劣势对Oracle/PL SQL和Java进行比较.如果你要开发一个应用程序,它将处理大量的金钱计算你会使用哪两个?为什么?

这个问题不是引起oracle/pl sql和java爱好者之间的争论我只是想知道什么被认为是这种要求的最佳实践或标准方法以及背后的原因.

场景将是:

  1. 数据来自数据库(最低Oracle 10g).
  2. 该程序将根据聚合数据(100k-1M)记录计算和生成发票
  3. 业务规则非常复杂
  4. 业务规则可能每月至少更改一次
  5. 计算中将使用几个参考表
  6. 该计划将每天运行一次

提前致谢.

APC*_*APC 8

这些标准肯定有利于使用PL/SQL.

1)数据来自数据库(最低Oracle 10g).
2)程序将根据聚合数据(100k-1M)记录计算和生成发票
5)计算中将使用几个参考表
6)程序将每天运行一次

如果它在数据库中并涉及数据,尤其是大量数据,则PL/SQL是默认选项.

其余标准评估起来比较棘手:

3)业务规则非常复杂
4)业务规则可能每月至少更改一次

PL/SQL绝对能够进行计算,并且它具有许多内置的算术功能.因此,它归结为"业务规则"和"复杂"的含义.我们可以在PL/SQL中编写复杂的业务逻辑(我已经完成了),但Java具有语言功能,这无疑使任务更容易:我正在考虑反思和内省之类的东西.

也许您正在考虑使用规则引擎?当然,金融服务业一直是规则引擎的主要用户.并且从处理中抽象出规则集将使得更容易满足第四标准.

Java有两个已建立的Rule Engines,Drools和JESS.还有就是在PL/SQL一个规则引擎,而且已经有一段时间了,但它主要是用来作为Oracle数据流的一部分.但是,API已暴露,因此可用于其他目的. 了解更多.

如果您正在考虑规则引擎,那么我认为这会向Java倾斜.业务规则处理是一种专业的编程范例,Java中的经验和支持比PL/SQL更多.我怀疑这意味着在中间层而不是Java存储过程中使用Java,这对网络流量和性能有影响.


Luk*_*der 5

我认为你应该考虑的最重要的方面是"保持你的代码 ".您应该不惜一切代价避免将复杂的业务规则复制到Java PL/SQL.说完这个之后,你可能更喜欢将大部分内容放在PL/SQL中,因为当你真正需要它时,它会在程序,视图等中提供.

在任何情况下,出于性能原因,考虑到应用于中等数量数据的任务的复杂性,您可能会在数据库中执行"数据聚合".因此,如果您确实需要用于聚合的业务规则,则它们已在数据库中可用.不需要往返于Java的往返.