Web 服务器如何与数据库通信?

How does the web server communicate with the database?

这只是为了解释我认为它可能是如何工作的: 假设 Web 服务器需要 10 table 秒的数据。最终将显示在客户端上的数据需要某种格式,这可以在数据库或网络上完成 server.Let 说获取原始数据的时间 table 是 1秒,为一个 table 获取格式化数据的时间为 2 秒(为一个 table 格式化数据需要一秒钟,并且可以在 Web 服务器或数据库上轻松完成格式化。 )

让我们考虑以下情况进行交流:

案例 1:

for(i = 0; i < 10; i++)
{
    table[i].getDataFromDB(); //2 sec - gets formatted datafrom DB, Call is completed before control goes to next statement

    table[i].sendDataToClient(); //0 sec - control doesn't wait for completion of this step
}

案例二:

for(i = 0; i < 10; i++)
{
    table[i].getDataFromDB(); //1 sec - gets raw data from DB, Call is completed before control goes to next statement

    table[i].formatData(); //0 sec - will be executed as a parallel process     which takes 1 sec to complete (control moves to next statement before completion)
}

formatData()
{
    //format the data which takes 1 sec
    sendDataToClient(); //0 sec - control doesn't wait for completion of   this step
}

假设将数据从 Web 服务器发送到客户端不需要时间(0 秒),因为这两种情况下它都是不变的。

情况一,每table的数据会在客户端每隔2秒显示一次,完整的数据会在 20 秒后在客户端上。

在情况 2 中,第一个 table 的数据将在 2 秒后显示,但接下来的 9 个数据将在第 3,4,...,11 秒显示。

流行的网络服务器和数据库之间正确的方法是什么,它是如何实现的?

流行的网络服务器和数据库可以以任何一种方式工作,具体取决于应用程序的编写方式。

也就是说,除非遇到极端情况,否则您可能会发现对性能的影响很小,因此您的主要关注点应该是代码的可维护性。从这个角度来看,格式化应用程序(在 Web 服务器上运行)中的数据通常是首选,因为通常更难维护在数据库级别实现的业务逻辑。

许多 Web 应用程序框架也会为您完成大部分格式化工作。