2010-07-22 66 views
1

我現在正面臨存儲過程(數據庫可移植性等)的所有這些缺點。我們將把我們的VB.Net/ASP/SQL Server應用程序遷移到像Mono/Postgresql這樣的完全國際化的應用程序。將存儲過程遷移到應用程序

我們面對的許多問題之一是我們有800-900個存儲過程。我們正在考慮的是將這些SP中的邏輯移動到應用程序代碼中。我已經搜索過人們是如何做到這一點的,或者是如何做到的,但是我發現的很少。大多數關於存儲過程的信息都是關於什麼應該在他們等等。所以我得出結論,最好的方法是將SQL檢索/更新類型查詢作爲存儲過程,並將其移動到業務邏輯進入應用程序。

所以我的問題是什麼是最好的方法來採取這樣的事情(可能沒有一個最好的方法,但一些建議,從哪裏開始會很好)?

感謝 利亞姆

回答

1

由於存儲過程中提供給您的數據庫的接口,你現在需要確保所有存儲過程的調用將在同一客戶端的代碼。如果您目前從應用程序中的多個位置調用SP,或者甚至是多個應用程序(可能是多模式),則它們都需要通過通用代碼。我首先要確保每個SP只從客戶端庫的一個地方調用。然後,存儲過程中的所有邏輯都將被該方法調用封裝。如果您的存儲過程使用事務來確保複雜操作的完整性,那麼這些事務現在需要在應用程序庫中啓動並提交。

重構最終是必需的,即使您無法移植所有SP,也是有好處的。

0

我也遇到過將ASP.NET + SQL Server應用程序遷移到Postgres數據庫的情況。 而不是將SP遷移到您的應用程序代碼,將它們轉換爲等效的pl/pgsql函數會更容易。 您需要做的只是更改ADO.NET提供程序,而不需要對應用程序代碼進行任何更改。有很多postgres(npgsql)的提供者將SP和postgres函數視爲等價的。

+0

嗨Avinash,謝謝你的回覆。實際上我已經將所有存儲過程轉換爲Postgres函數。我認爲我們應該將存儲過程合併到應用程序中的主要原因是我們很可能會爲我們提供應用程序的不同語言使用多個數據庫。因此,管理數據庫只是存儲數據。 – startupsmith 2010-07-26 21:29:43

相關問題