伙计们,您能否就 Oracle/PL SQL 和 Java 在处理货币计算时的优缺点进行很好的比较。 如果您要开发一个处理大量金钱计算的应用程序,您会使用两者中的哪一个?为什么?
这个问题不是要引发 oracle/pl sql 和 java 爱好者之间的争论,我只是想知道什么是这种需求的最佳实践或标准方法,以及背后的原因。
场景是:
- 数据将来自数据库(Oracle 10g 最低)。
- 该程序将根据聚合数据 (100k-1M) 记录计算并生成发票
- 业务规则非常复杂
- 业务规则可能每月至少更改一次
- 计算中会用到几个引用表
- 程序将每天运行一次
提前致谢。
最佳答案
这些标准肯定有利于使用 PL/SQL。
1) Data would be from the database (Oracle 10g minimum).
2) The program would compute and generate invoices based on aggregated data (100k-1M) records
5) Several reference tables will be used in the computation
6) Program will be ran once a day
如果是在数据库中,涉及到数据,尤其是大量的数据,那么PL/SQL是默认选项。
其余的标准更难评估:
3) Business rules are very complex
4) Business rules may change at least once a month
PL/SQL 完全可以进行计算,而且它有很多内置的算术函数。因此,归结为“业务规则”和“复杂”的确切含义。我们可以在 PL/SQL 中编写复杂的业务逻辑(我已经做到了),但是 Java 的语言特性无疑使任务变得更容易:我正在考虑诸如反射和内省(introspection)之类的东西。
也许您正在考虑使用规则引擎?当然,金融服务行业一直是规则引擎的主要用户。从处理中抽象出规则集将更容易满足第四个标准。
Java 有两个已建立的规则引擎,Drools and JESS . PL/SQL 中 有一个规则引擎,已经有一段时间了,但它主要用作 Oracle Streams 的一部分。但是,API 是公开的,因此它可以用于其他目的。 Find out more .
如果您正在考虑规则引擎,那么我认为这会向 Java 倾斜。业务规则处理是一种专业的编程范例,与 PL/SQL 相比,在 Java 中有更多的经验和对它的支持。我怀疑这意味着在中间层使用 Java 而不是 Java 存储过程,这对网络流量和性能有影响。
关于java - 货币计算,Java 和 Oracle/PL SQL 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7171556/