在我的一位雇主中,我们开发了REST(但也适用于SOAP)API。客户端即应用程序UI,将通过Web(在典型的生产部署中为LAN)对API进行调用。API将调用数据库。
在我们的讨论中反复出现的一个主题是性能:团队中的某些人认为,由于性能,您不应从单个API调用中进行多个数据库调用(通常是读取)。您应该对其进行优化,以便每个API调用仅(完全)一个数据库调用。
但这真的很重要吗?考虑到UI必须对API进行网络调用;相当大(毫秒级)。数据库经过优化,可以将内容保存在内存中并非常非常快地执行读取操作(例如,SQL Server可以将所有内容加载并保存在RAM中,如果可以的话,将消耗几乎所有的可用RAM)。
TLDR:当我们已经通过LAN进行网络调用时,担心多个数据库调用真的很重要吗?如果是这样,为什么?
明确地说,我说的是数量级-我知道这取决于具体情况(机器硬件,API和DB的选择等)。如果我有一个调用需要O(毫秒),那么是否会针对DB进行优化呼叫数量少一个数量级,实际上重要吗?还是这个问题比这还重要?
编辑:对于后代,我认为宣称在这种情况下我们需要通过组合数据库调用来提高性能是非常荒谬的,尤其是缺乏概要分析时。但是,是否执行此操作不是我的决定;我想知道认为这是优化Web API调用的正确方法的基本原理。