【问题标题】:Application Server Jobs or Database Jobs?应用程序服务器作业或数据库作业?
【发布时间】:2012-10-18 22:49:00
【问题描述】:

在我的基于 java 的应用程序中,我需要一项工作来从一组表中读取数据并将它们插入到另一个表中。在我的第一个设计中,我创建了一个 oracle 作业并安排它经常执行该过程。 不幸的是,当作业失败时,没有足够的信息来说明失败的根本原因。此外。为许多系统实例部署系统使工作更加困难。 作为一项替代工作,我试图将这项工作作为 Weblogic 工作转移到我的应用程序服务器中。这个设计好不好?

【问题讨论】:

  • '这取决于'。您已经在现有方法中遇到了一些问题。这并不是说您不会在不同的方法中遇到问题。例如,在通过您的应用程序服务器读取/写入数据时,您是否会消耗可以在其他地方更好地使用的 CPU 周期(例如面向客户的流程)。
  • @radimpe:你是对的。你有什么建议?
  • 我有时都用过它们。作为“非数据库开发人员”,我倾向于将事物转移到应用程序中,但重点绝对必须放在关注点的分离上。例如,如果您运行一个网站,您不应该让“归档订单”的计划作业干扰尝试购买某物的用户的正常操作。根据您的可用资源,这可能会很棘手。我可以说,我还发现数据库作业很难调试——这也是我喜欢应用程序选项的另一个原因,尽管数据库有它的位置。
  • 我也推荐使用应用层。正如 radimpe 所提到的,它比数据库更容易调试应用程序。使用应用程序,您可以使用线程(假设您有多个 CPU)来并行处理它,使其更快。
  • >> 不幸的是,当作业失败时,没有足够的信息来说明失败的根本原因。此投诉与它是一项数据库作业这一事实并不真正相关。您需要编写数据库代码(PL/SQL?)来记录作业周期的所有方面——开始、结束、处理的行和错误。我还认为,在 Weblogic 中创建工作本来就没有什么比这更容易的了。创建数据库作业只是可以放入单个文件的一系列 SQL 命令。你能这么轻松地创建 Weblogic 作业吗?

标签: java oracle11g weblogic jobs


【解决方案1】:

将我的工作转移到应用程序服务器后,我面临以下优势:

  1. 跟踪作业失败更容易。
  2. 非 DBA 用户可以轻松阅读应用程序服务器日志并修复问题。 (很多用户在生产线没有访问DB的权限。)
  3. 作业的逻辑已从我的数据访问层移至我的业务逻辑层,并且由于设计模式而更易于接受。

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多