翻譯|使用教程|編輯:莫成敏|2020-01-15 15:21:21.883|閱讀 235 次
概述:Giorgi Abashidze解釋了他的團隊如何將兩階段部署過程與SQL Compare命令行以及一些SQL同義詞一起使用,以自動為其每個客戶進行自定義部署,而只需要在源代碼管理中為每個版本維護一個分支。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
SQL Compare是一款比較和同步SQL Server數據庫結構的工具。現有超過150,000的數據庫管理員、開發人員和測試人員在使用它。當測試本地數據庫,暫存或激活遠程服務器的數據庫時,SQL Compare將分配數據庫的過程自動化。
在以前的文章中,從使用SQL比較命令行的源代碼控制到數據庫,我解釋了我的團隊如何使用SQL Compare命令行為我們的客戶自動化數據庫部署,而無需訪問實際的登臺數據庫或生產數據庫,這是不可能的這是一個銀行數據庫。我演示了如何僅通過訪問我們的開發數據庫(包含在TFS源代碼管理下),如何使用SQL Compare命令行來部署所有客戶通用的數據庫元數據和代碼。
但是,除了此共享代碼外,還必須為我們的每個客戶提供每個軟件版本的唯一變體,以便向他們提供可滿足其不同業務和合規性要求的自定義例程。我們每個客戶都需要其中一些例程,當然,此專有功能應始終僅部署到該客戶的生產數據庫中:至關重要的是,任何客戶都不能看到專門為另一位客戶編寫的邏輯。
我們如何實現這一目標?傳統觀點似乎是,在每個發行版中,我們將數據庫版本的每個特定于客戶的變體視為一個單獨的分支。但是,這可能會增加構建的復雜性。有了一些創造力,我們可以避免這種情況,而是為每個新版本創建一個分支,我們可以使用該分支來維護和部署我們每個客戶的所有共享邏輯,以及專用于無限數量客戶的邏輯。
在本文中,我將解釋如何使用SQL Compare命令行、同義詞和一些獨創性來完成所有這些工作。
我們如何將客戶特定的例程存儲在單個數據庫中
因此,為了更接近于開發數據庫的構造方式,我們假設我們的Trunk結合了我們所有的邏輯。假設我們有三個客戶Cust1,Cust2和Cust3。
我們還提供了一些代碼,即一個稱為loan.calculate_effective_rate的SQL存儲過程,該程序根據某種算法來計算一段時間內貸款的實際支付利率,稱為“有效利率”。 所有客戶的代碼都是相同的,但是有一天客戶Cust1要求我們更改其版本的算法,這意味著我們現在需要維護和部署“有效費率”程序的兩個不同版本。
首先,我們需要按照Cust1的要求,為Effective_rate過程實現替代算法(從這里開始,我將使用其縮寫形式)。 我們只有一個開發數據庫,稱為Trunk,并且由于任何例程中每個例程的名稱都必須唯一,這意味著我們必須有一種命名策略來區分這些變體。
我們做的方法是:
這意味著所有客戶的應用程序代碼現在都必須調用該effective_rate_default過程,但必須調用的Cust1除外effective_rate_cust1。但是,我們不希望對任何客戶的調用代碼進行任何更改。畢竟,該過程的目的沒有改變,但是我們現在有多個相同的操作實現(計算貸款的有效利率)的方法。相反,我們使用同義詞來表示具有多個實現的任何操作。換句話說,調用者代碼從不直接調用確切的實現,而是調用操作(SQL同義詞)。
因此,在這種情況下,我們將創建一個SQL同義詞并將其部署給每個客戶,該SQL同義詞的名稱為effective_rate,表示effective_rate_default過程。 當然,僅對于Cust1,此同義詞必須不引用默認過程,而是引用Cust1變體。 但是,正如我已經提到的,我們在源代碼管理中僅維護一個數據庫,而在Trunk(以及任何發行分支)中,每個同義詞始終僅引用相關操作的默認實現。 那么我們如何實現這一目標呢?
答案是一個兩階段的部署過程。第一階段向每個客戶部署effective_rate_default過程以及引用該過程的effective_rate同義詞。第二階段僅將effective_rate_cust1過程部署到Cust1,然后刪除Cust1數據庫中的effective_rate同義詞,并創建一個引用effective_rate_cust1的新同義詞。
通過遵循這種方法,基于對每個客戶的SQL同義詞和兩階段部署過程,我們可以在一個開發數據庫中包含所需的專用例程,因此仍然可以為我們的客戶提供代碼,考慮到不同的業務和合規性要求。
讓我們看看如何使用SQL Compare命令行實現此兩階段部署過程。
本教程內容較多,分為上下兩篇文章,想要查看教程后續內容,請繼續關注我們網站!或者下載SQL Compare試用版嘗試一下~
相關內容推薦:
SQL Compare教程:使用SQL Compare命令行從源代碼管理到數據庫
SQL Compare使用教程:如何在SQL Compare中使用自定義過濾器
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: