2013-03-22 141 views
0

我正在使用php和pdo,有人告訴我如果我在數據庫中使用程序,我的程序會大大提高。存儲數據庫程序

我想知道什麼是可以提供一個程序,對於以下幾點改進:

  • 請求速度。
  • 安全問題。 (程序和數據庫)。
  • 可擴展性。
  • 盈利能力。
  • 何時使用方便,何時不使用。
  • 其他好點和壞點。

也想知道如果可能的PDO參數化查詢調用過程。

我很欣賞任何種類的材料關於這個問題(書籍,教程,代碼段,評論)。

回答

4

好的問題是什麼時候決定要在哪裏執行哪個程序部分。當我使用Classic ASP和MS SQL Server編寫應用程序時,我遇到了類似的問題。

在我回答你的查詢,我想指出的是Web應用程序具有最小的三個層次:

  • 表示層,例如客戶端的Web瀏覽器
  • 的應用層 - 在你的PHP或JSP或ASP服務器運行
  • 和數據庫層 - 數據所在的位置。

這是常識,無論可以在表現層執行的數據驗證,我們把它放在那裏。例如,檢查某個表單域是否爲空。

當應用程序必須在其他兩層 - 應用程序層和數據庫層開發時,這很有趣。很多不好的程序員編碼的方式使得在Web服務器和數據庫服務器之間進行很多往返行程的事情很少。我們應該考慮在這些時候編碼數據庫中的存儲過程。

關於你剛纔提到的幾點,我想回答:

  • 請求速度。

    由於Web服務器和數據庫服務器之間的往返時間較短,因此對Web服務器的請求處理速度更快。當您的應用程序變得非常複雜並且數據增長過大時(以幾百TB爲單位),差異尤其顯着。處理負載從Web服務器傳輸到您的數據庫服務器,因此您的Web服務器更適合您的客戶端請求。

  • 安全方面。 (程序和數據庫)。

    爲您的程序提供的安全性現在分爲兩個級別 - 在Web服務器級別和數據庫級別。您可以對這兩者之間的通信進行限制,以確保您的程序不會崩潰並且數據完好無損。

  • 可擴展性。

    Web服務器代碼和數據庫服務器代碼現在位於兩個不同的層。按照要求,這兩個層級可以獨立調整。確切地說,可伸縮性意味着here

  • 盈利能力。

    我不知道該如何回答這個問題,但一想到對面我的腦海裏就來了:如果你付出的數據庫服務器,讓它閒置,而Web服務器過載,有什麼意義呢?如果我支付的數據庫服務器,我會充分利用它給它一些我的web服務器的處理負荷。

  • 何時使用方便,何時不使用。

    最方便的是當有網絡和數據庫服務器之間存在太多的往返使用。我可能會一次又一次地提到這一點,但這個問題變成了一個令人頭痛的問題。

    不方便?那麼,在簡單的情況下,一個單一的SQL語句會執行一切必要的操作

  • 其他好點和壞點。

    • 您必須確定這兩層之間的通信 - 通過了什麼以及接收了什麼。保持一切記錄良好,因爲任何錯誤都會妨礙兩層。
+0

完美答案。 您已經覆蓋了問題的所有點在一個完美的方式。 非常感謝! – 2013-03-22 13:35:26