2011-07-12 110 views
1

我讀過一些應用程序,通過拒絕除執行之外的所有mysql用戶權限來強化應用程序的安全性。我需要這樣的方案,因爲我的應用程序在返回值之前需要進行一些檢查,並且觸發器不是選項,因爲在SELECT查詢中不允許。如何僅使用存儲過程創建MySQL應用程序?

所以,問題是:如果您正在編程一個只需訪問存儲過程的應用程序,那麼您如何構建您的應用程序?我從來沒有見過這種應用程序,我想看看其他人在重新開始之前做了什麼。

回答

3

只是安靜地,你最終會心智。我一直在那裏(有商店PROC驅動程序),它有很多缺點,只是有幾個是:

  • 「代碼更改」,實際上數據庫改變,這會導致特殊問題在生產,因爲您必須刪除/創建您的過程並涉及DBA,並且您不能執行「二進制」版本或「熱」版本。
  • 你需要做的節目是很難找到(DB存儲過程VS的Perl/JAVA/PHP等)
  • 測試和調試是非常困難的專業知識 - 幾DBS提供行步調試
  • 你確實有有一個數據庫來運行你的代碼 - 難以模擬/單元測試等
  • 你與數據庫供應商緊密聯繫 - 沒有「行業標準」的PL/SQL語言,因此移植是困難的(移植基本上是一個重新 - 寫)
  • PL/SQL只能處理最簡單的邏輯應用程序 - 它只是不適合業務邏輯

在向上側:

  • 通常,分貝操作可以由原子和更快
  • 訪問可以在細粒度「動作基礎」來控制,而不是一個「數據基礎」

編輯:細粒度的訪問通常(並很容易)在應用程序層控制。

恕我直言,我永遠不會實現使用存儲過程。可能存在一些以數據庫爲中心的問題,可以使用存儲過程更好地解決問題,但其原因必須是令人信服的,才能證明去那裏是正確的。

+0

我其次。存儲例程看起來很棒,直到你開始大量使用它們: – wonk0

+0

我的理由是你的第二個「優勢」:我需要一個細粒度的訪問控制。順便說一句SP是我發現實現它的最簡單的方法,但我會接受新的建議,當然! – Ivan