簡體   English   中英

Web服務器如何與數據庫通信?

[英]How does the web server communicate with the database?

這只是為了說明我認為它可能如何工作:假設Web服務器需要10個表中的數據。 最終將在客戶端上顯示的數據需要某種格式,可以在數據庫或Web服務器上完成。假設獲取一張表的原始數據的時間為1秒,而獲取格式化數據的時間為1秒一張表的時間為2秒(格式化一張表的數據需要花費一秒鍾的時間,並且可以在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
}

情況2:

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
}

假設無需花費任何時間(0秒)將數據從Web服務器發送到客戶端,因為在兩種情況下它都是恆定的。

在情況1中,每個表的數據將以2秒的間隔在客戶端上顯示,而完整的數據將在20秒后在客戶端上顯示。

在第2種情況下,第一個表的數據將在2秒后顯示,但接下來的9個數據將在第3、4,...,11秒顯示。

哪種方法正確,如何在流行的Web服務器和數據庫之間實現?

流行的Web服務器和數據庫可以以任何一種方式工作,具體取決於應用程序的編寫方式。

就是說,除非您有極端的情況,否則您可能會發現對性能的影響很小,以至於您的主要關注點應該是代碼的可維護性。 從這個角度來看,通常首選格式化應用程序中的數據(在Web服務器上運行),因為通常很難維護在數據庫級別實現的業務邏輯。

許多Web應用程序框架也會為您完成很多格式化工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM