【问题标题】:Optimizing performance by saving data in local database通过将数据保存在本地数据库中来优化性能
【发布时间】:2014-02-20 06:14:50
【问题描述】:

我们正在创建一个金融交易系统。某些外部系统公开了一个黑名单服务(soap)。我们必须在每笔交易中调用此服务来检查发送方或接收方是否存在于黑名单中。如果他们这样做,我们不应该让交易通过。 黑名单规模为几千。

为了优化系统,我们正在考虑在我们的数据库中保留一份该列表的副本,并从那里进行检查,每当黑名单中有更新时,外部系统都会通知我们。

从架构的角度来看,这是一个好方法吗?我们应该使用缓存库而不是手动执行此操作吗?

正在使用 Java 和 Oracle 数据库开发应用程序。

【问题讨论】:

    标签: java architecture


    【解决方案1】:

    在我看来,您不应该发明轮子,始终使用已知库而不是编写您自己的代码,因为它可能更优化和维护。 如果您能够将数据保存在本地数据库上并以某种方式通知外部系统的更改,那么这可能是一种更好的方法。 请务必同步您的操作,因为您可能希望检查某人是否被列入黑名单的操作等待从黑名单系统同步数据的操作以获得最新数据。

    【讨论】:

      【解决方案2】:

      我认为它可以(或不是)是一个好方法。

      1) SOAP 通常意味着 Web 服务,而通常意味着延迟。您是否希望流程中的所有步骤都等待该调用返回?

      2) 该列表可能不会快速更改?这意味着将其保存在“缓存”中并没有什么坏处。您可以调整系统检查和更新缓存的周期。

      3) SOAP 还意味着异步调用(通常),您可以在更新“缓存”时保持系统运行。

      如果您的系统经常进行热处理,并且需要多次/秒检查该列表,并且该列表每天不会更改 0.1%,那您就没事了。

      另一方面,如果您的系统每天只运行几次批处理,并且该列表每秒都在发生很大变化,那将不是最好的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-15
        • 2018-02-02
        • 2014-02-17
        • 2021-03-08
        • 2020-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多