1.)调用Web服务方法
2.)对数据库的调用
例如,假设您有一个简单的Web服务,它只返回一个在X时间内计算的整数.您还有一个数据库,当以正确的方式查询时,也需要X时间来计算答案. (因此两种情况下的计算时间都相同)在这两种情况下,为简单起见,假设两个方向的数据量相同,例如,一个32位整数.
到目前为止,Web服务和数据库的计算时间完全相同.
环境是应用程序所在的1个应用程序服务器,以及同时拥有Web服务和数据库的另一个服务器.除了重复调用Web服务或数据库的应用程序之外,环境中没有任何其他操作.这一切都在一个局域网内,因此任何网络延迟都是相同的.
从一个更快的应用程序,对数据库的调用,或对Web服务的调用?
我想,我想要分离的是哪个更重.设置,打开,关闭,拆除数据库连接的速度是否比Web服务慢,或者它是否相同?此外,如果还有其他事情,例如从Web服务解析结果,它们如何影响速度?
解决方法
http://en.wikipedia.org/wiki/Big_O_notation
很难知道你在问什么.如果您询问访问本地数据库是否通常比通过Internet访问类似服务更快,那么我希望通常答案是本地数据库会更快.通过互联网对Web服务的调用有很多开销,并且通过互联网进行的通信相对较慢. Evan在一台慢速计算机上,数据库每秒可以执行数千个简单查询.与通过互联网访问相比,您可以幸运地获得每秒50次往返请求,甚至不考虑在服务器上执行请求的操作所花费的时间.
如果您要问网络上的服务器是否可以通过避免数据库和直接计算结果来更快地提供数据,那么答案取决于它.在这种情况下对数据库的调用会增加不必要的开销,如果其中的数据可以在独立函数中轻松计算.这个问题的答案与“网络服务”没有任何关系.是否可以更快地计算函数中的答案或使用数据库查询来访问答案?正如我所说,答案取决于您必须使用的特定功能的复杂性,并将其计算时间与直接从数据库访问答案(或部分答案)的开销相比较.
简而言之,你的问题的答案取决于你究竟在问什么.它也可能有助于你知道为什么要问这个问题.我怀疑真正的答案是,这可能不是你需要担心的事情,除非你有特殊情况需要优化,否则不是真正的实际问题.
如果你担心web服务和数据库都在局域网上的速度比较,我很确定数据库的开销小于web服务.应用程序通常维护与db的有状态连接,而对web服务的请求是通过http,这是无状态的,相对较高的开销和较慢的.可能是错的.最好的答案是提出一个简单的Web服务,查询,以及(1)测量使用这两种方法检索结果所花费的时间,并进行比较,和/或(2)创建一个打开大量线程并执行一些加载的应用程序测试.
需要注意的是:如果您的应用程序没有维护打开的连接或者无法访问与db的连接池,则db替代方案可能会更慢.初始创建数据库连接可能相对较慢.但这不应该影响事物,因为你应该编写你的应用程序,以便始终保持开放的连接.