2013-03-23 20 views
0

我們在一個較大的套件中有很多模塊都使用一組通用的存儲過程和函數,這在很大程度上部分歸因於它們都使用一組通用數據,表。這種方法可以確保所有模塊在進行相同的呼叫時都能得到相同的答案 - 這是一件非常好的事情(尤其是在金融行業)常見功能/存儲過程和不兼容更新

但是,這種方法的缺點是,當我們更新套件中的一個模塊時需要更改共享存儲過程或函數之一,它要求我們幾乎更新整個套件。由於時間和成本,這是一件壞事。

每次更新單個存儲過程時,可採用哪種策略來緩解此套件升級問題,同時最大限度地降低管理複雜性。

這與Microsoft有DLL(s)/ API的版本問題類似,您可能會在API上看到需要xxx2版本的簽名更改,這不是您理想的原因基本上有兩個版本,都需要維護和升級,因爲它們會失去同步的能力(即同一問題有兩個不同的答案)。

在這方面的任何戰略或最佳做法將不勝感激。

在此先感謝。

Whatty

回答

0

兩種策略是視圖和存儲過程。

使用視圖來訪問表中的數據。這樣,您可以更改基礎表(對於一個模塊),而不必立即更改其他模塊。最終,你也可以開始改變這個模塊。例如,您可能會將一個表分成兩個不同的表,以供一個模塊使用。其他模塊永遠不會注意到,因爲它們訪問視圖,而您只是修改視圖以返回原始數據。

沿着這些線條,您永遠不會想要使用select *,因爲列,名稱或其排序可能會更改。

第二種策略是將所有insert,updatedelete轉換爲存儲過程。這有第二個好處,您可以在過程中檢查,記錄和通知。你可以嘗試用觸發器和約束來模擬這個,但是我發現存儲過程的方法更易於維護。