金钱计算,Java 和 Oracle/PL SQL 的使用比较

2024-06-25

大家可以对 Oracle/PL SQL 和 Java 在处理货币计算时的优缺点进行很好的比较。 如果您要开发一个需要处理大量资金计算的应用程序,您会使用这两者中的哪一个?为什么?

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

场景是:

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

提前致谢。


这些标准绝对有利于 PL/SQL 的使用。

1) 数据来自数据库(最低 Oracle 10g)。
2)该程序将根据汇总计算并生成发票 数据(100k-1M)条记录
5)计算时会用到几个参考表
6) 程序每天运行一次

如果是在数据库中并且涉及数据,尤其是大量数据,那么PL/SQL是默认选项。

其余的标准很难评估:

3)业务规则非常复杂
4) 业务规则可能会发生变化 每月至少一次

PL/SQL确实能够进行计算,并且它有很多内置的算术函数。因此,这归结为“业务规则”和“复杂”的确切含义。我们可以用 PL/SQL 编写复杂的业务逻辑(我已经做到了),但 Java 的语言特性无疑使任务变得更容易:我正在考虑诸如反射和内省之类的东西。

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

Java 有两个已建立的规则引擎,流口水和杰西 https://stackoverflow.com/questions/2167358/pros-and-cons-of-java-rules-engines。那里isPL/SQL 中的规则引擎,已经存在一段时间了,但它主要用作 Oracle Streams 的一部分。然而,API 是公开的,因此可以用于其他目的。了解更多 http://download.oracle.com/docs/cd/B14117_01/appdev.101/b10802/d_rule.htm.

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

金钱计算,Java 和 Oracle/PL SQL 的使用比较 的相关文章

随机推荐

  • jsp ${pageContext.request.contextPath} 未收到请求

    目前我有一个 jsp 项目 其中我的欢迎页面是一个 servlet
  • Django X-CSRFToken 已设置但仍然收到 403 禁止

    我开发了一个 Django 文件上传 API 它接收来自客户端的发布数据并将数据保存为文件 根据Django CSRF 手册 https docs djangoproject com en 1 8 ref csrf HTTP 请求标头应使用
  • HTTP 缓存的授权检查

    我有如下列出的 Web API 方法 用于REST服务 这是为了获取库存审核员的所有用户信息 只有授权的 Inventory Auditor 用户才能访问此资源 RoutePrefix api users public class User
  • 为 REST Spring HATEOAS 控制器定义资源组装器

    我正在尝试将 HATEOAS 链接添加到由 Spring REST 控制器提供服务的 JSON 资源 我发现我应该使用资源汇编器 如下所述https github com spring projects spring hateoas htt
  • 是否可以复制 Azure 网站?

    我想将现有的 共享 模式 开发 网站复制到另一个 测试 共享 模式网站 这可能吗 我知道可以使用 T SQL 命令通过 SQL Azure DB 来完成此操作 此刻我 1 创建新网站 2 跨 Dev Azure 网站的 FTP 来测试 Az
  • posix 和 linux 特定函数的 C++ 包装器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道有什么好的库将 posix 和 linux 函数和结构 例如套接字或文件描述符 包装到 C 类中
  • 在图像批次中随机打乱补丁

    我正在尝试创建一个transform打乱批次中每个图像的补丁 我的目标是以与其他转换相同的方式使用它torchvision trans transforms Compose transforms CenterCrop 224 transfo
  • 字符串常量之前的预期标识符

    有一个这样的程序 include
  • 当我所做的只是压缩提交时,为什么 git-rebase 会给我带来合并冲突?

    我们有一个包含 400 多个提交的 Git 存储库 其中前几十个提交需要大量的反复试验 我们希望通过将许多提交压缩为单个提交来清理这些提交 当然 git rebase 似乎是最佳选择 我的问题是它最终会产生合并冲突 而且这些冲突并不容易解决
  • 用模板替换 ng-include 节点?

    对角度有点陌生 是否有可能replace包含模板内容的 ng include 节点 例如 与 div div src div div 生成的html为 div div src div div
  • 使用finally代替catch

    我已经多次看到这种模式了 bool success false try DoSomething success true finally if success Rollback 我一直想知道 为什么这比使用 catch 进行回滚更好 try
  • 加载 ng2-table 数据表单 API

    我正在学习 Angular 2 我想使用 PHP 中的 API 数据填充 ng2 table 我有一个返回数据的服务 但我不知道如何使用服务的订阅数据填充数据变量 我正在调用服务方法 getLanguages 我的服务代码是 import
  • 表排序器,无法正确按日期排序

    如果存在空格 表排序器的行为是否会有所不同 我对 tablesorter 还很陌生 但有人要求我快速将其添加到客户网站 特别是允许他们按发布日期排序 据我所知 日期 例如 2012 年 5 月 14 日 被读取为文本 因此我需要添加一个解析
  • 错误:‘:’标记之前需要初始化程序

    我正在尝试编译一些 C 代码 可以在 Windows 上使用 Visual Studio 2012 进行编译 g 4 4 我有这段代码 const std string cnw restoreSession const std vector
  • Angular4 - 如何确保 ngOnDestroy 在离开之前完成

    我有一个对象列表 用户可以单击其中一个 然后加载一个子组件来编辑该组件 我遇到的问题是 当用户返回列表组件时 子组件必须在 ngOnDestroy 方法中进行一些清理 这需要调用服务器来对对象进行最终的 修补 有时此处理可能会有点慢 当然
  • WebDAV PROPFIND 的示例代码

    有没有任何网站或某人可以向我提供一份 PROFIND 请求示例 我尝试了 MSDN 中的 PROFIND 代码示例 但收到 400 Bad request 无法理解为什么会发生这种情况 之前发布的问题位于从 WebDav 服务器收到 400
  • 使用 VS 2010 数据库管理示例数据

    我正在使用 Visual Studio 2010 中的数据库项目来管理我的所有数据库代码 对于我的应用程序 我们将每个客户端的数据分离到他们自己的数据库副本中 并使用通用数据库将用户映射到适当的数据库 我希望在 TFS 中保留几个不同的示例
  • 如何获取已打开连接的套接字 ID/句柄/描述符? (.NET、C++、德尔福)

    我的问题已在标题中说明 我到底该怎么做呢 我有一个开放的连接 我想 劫持 它并通过它发送我的自定义消息 据我了解 这是通过套接字及其处理程序完成的 任何语言都可以 但首选 C NET 谢谢 UPDATE 我到底想要实现什么 我想为 post
  • 如何从代码获取复制状态

    我已经在 SQL Server 2005 数据库上完成了复制 现在我想从我的 GUI 显示状态 可以是 C 或其他 是否有任何方法或 API 可以让我监控复制状态 这是为了客户端确认复制正在工作 Thanks 像这样的事情 http www
  • 金钱计算,Java 和 Oracle/PL SQL 的使用比较

    大家可以对 Oracle PL SQL 和 Java 在处理货币计算时的优缺点进行很好的比较 如果您要开发一个需要处理大量资金计算的应用程序 您会使用这两者中的哪一个 为什么 这个问题并不是要引发oracle pl sql和java爱好者之