database - 数据库和 Web 服务调用之间的速度差异是多少?

标签 database web-services language-agnostic optimization

在所有条件都相同的情况下,以最简单的形式,哪个更快?
1.) 调用网络服务方法
2.) 调用数据库

例如,假设您有一个简单的 Web 服务,它只返回一个按 X 时间计算的整数。你还有一个数据库,当以正确的方式查询时,它也需要 X 时间来计算答案。 (因此两种情况下的计算时间相同)在这两种情况下,假设两个方向的数据量相同,例如,为简单起见,一个 32 位整数。

到目前为止,web服务和数据库的计算时间是完全一样的。

环境是 1 台应用程序服务器(应用程序所在的位置)和另外 1 台同时保存 Web 服务和数据库的服务器。除了应用程序重复调用 Web 服务或数据库之外,环境中没有其他任何事情发生。 这一切都在一个 LAN 中,因此任何网络延迟都是相等的。

从应用程序调用数据库还是调用 Web 服务,哪个更快?

我想我想隔离的是哪个更重量级。数据库连接的建立、打开、关闭、拆除最终是否比 Web 服务慢,还是相同?此外,如果还有其他事情,例如解析网络服务的结果,它们对速度有何影响?

最佳答案

O(1) 不是指任何时间长度。单个操作在 Web 服务上可能需要 0.001 毫秒,在数据库中可能需要 100 秒,它们都可能使用 O(1) 函数: http://en.wikipedia.org/wiki/Big_O_notation

很难确切地知道您在问什么。如果您问访问本地数据库是否通常比通过 Internet 访问类似服务更快,那么我希望答案通常是本地数据库会更快。通过 Internet 调用 Web 服务会产生大量开销,并且 Internet 上的通信速度相对较慢。 Evan 在一台速度较慢的计算机上,数据库每秒可以执行数千个简单查询。对比一下通过 Internet 的访问,如果您幸运地每秒收到 50 个往返请求,甚至不考虑在服务器上执行请求的操作所花费的时间。

如果您要问网络上的服务器是否可以通过避免数据库和直接计算结果来更快地提供数据,那么答案是视情况而定。如果可以在独立函数中轻松计算其中的数据,则在这种情况下对数据库的调用会增加不必要的开销。这个问题的答案实际上与“网络服务”没有任何关系。在函数中计算答案或使用数据库查询访问答案是否更快?正如我所说,答案取决于您必须使用的特定函数的复杂性,并权衡其计算时间与直接从数据库访问答案(或部分答案)的开销。

简而言之,您问题的答案取决于您的具体问题。了解您问这个问题的原因也可能会有所帮助。我怀疑真正的答案是这可能不是您需要担心的事情,也不是真正的实际问题,除非您有需要优化的特定情况。

如果您关心 web 服务和数据库都在 lan 上时的速度比较,我很确定 db 的开销比 web 服务少。应用程序通常维护与数据库的有状态连接,而对 Web 服务的请求是通过 http 进行的,这是无状态的,开销相对较高且速度较慢。不过可能是错的。最佳答案是创建一个简单的网络服务、查询,以及 (1) 测量使用这两种方法检索结果所需的时间,并进行比较,和/或 (2) 创建一个打开大量线程并执行一些负载的应用程序测试。

警告:如果您的应用程序不保持打开的连接或无法访问与数据库的连接池,那么数据库替代方案可能会更慢。数据库连接的初始创建可能相对较慢。但这不应该考虑在内,因为您应该编写您的应用程序以便始终保持开放连接。

关于database - 数据库和 Web 服务调用之间的速度差异是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/706712/

相关文章:

php - 使用 node.js 向 API 发出请求

database - EntityFramework 启用迁移 ArgumentException

javascript - 环回: Store object from remote method for later reuse within the Server

web-services - 服务器将数据从Clojure推送到ClojureScript

java - Keystore 证书适用于 Eclipse 但 Tomcat 不行

math - float 学有问题吗?

android - 跟踪 Android/iOS 下移动应用程序的数据库工作负载

java - 使用 JAX-WS 2.1 时请求 XML 中的不必要属性

algorithm - 如何使用 Jokers 验证 Rummikub 组合

algorithm - 如何从文件中删除重复项?