通过在本地数据库中保存数据来优化性能

时间:2014-02-20 06:14:50

标签: java architecture

我们正在创建一个金融交易系统。有一些外部系统暴露了黑名单服务(肥皂)。我们必须在每个事务中调用此服务来检查发送方或接收方是否存在于黑名单中。如果他们这样做,我们不应该让交易通过。 黑名单大小是几千。

为了优化系统,我们正在考虑在我们的数据库中保留此列表的副本并从那里进行检查,并且黑名单外部系统中的更新将通知我们。

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

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

2 个答案:

答案 0 :(得分:0)

从我的观点来看,你不应该发明轮子,总是使用已知的库而不是编写自己的代码,因为它可能更加优化和维护。 如果您能够将数据保存在本地数据库中并以某种方式通知外部系统的更改,则可能是更好的方法。 只需确保同步您的操作,因为您可能需要检查是否有人被列入黑名单以等待从黑名单系统同步数据的操作以获取最新数据。

答案 1 :(得分:0)

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

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

2)那个列表可能不会快速变化?这意味着将它保存在“缓存”中并不会受到伤害。您可以调整系统检查的周期并更新缓存。

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

如果您的系统热处理很多,并且需要多次/秒检查该列表,并且该列表每天不会改变0.1%,那么您就可以了。

另一方面,如果你的系统每天只运行几次批处理,而且这个列表每秒都会发生很大变化,那么这不是最好的方法。