伺服器上的數據庫數量。我應該嘗試將這些對象合併在一起嗎?
背景
嗨,作為一名 BI 開發人員,我為一家中型公司(200-300 名員工)創建了各種腳本。這些腳本用於操作/聚合/清理來自不同來源的數據,通常這些操作的結果儲存在不同的表中(以執行提取、分析等)。
問題
我的老闆是個好人,但他喜歡在每次出現新的業務案例時創建一個新的數據庫和 SQL Server 代理作業(在同一台伺服器上)。例如,我們正在管理 10 多個數據庫,但其中很多只包含幾張桌子。SQL Server 代理作業也有同樣的問題,它們中的大多數只執行一個步驟/操作。
就我個人而言,我更喜歡乾淨的環境,並儘可能將表/作業組合在一起(即:將所有派生表儲存到一個數據庫中,而不是 2-3 個不同的數據庫中)。
但是,在我採取任何行動/審核之前,我想听聽您的回饋。我的意思是,從您的角度來看,最佳做法是什麼?當我們可以將這些數字除以 2 或 3 時,是否可以擁有 10 多個 DB / 50 多個工作?
謝謝,
編輯
我注意到這個問題被擱置了。很抱歉給您帶來不便,我將嘗試改寫我的問題:我執行一個包含 10 多個數據庫(同一公司)的 SQL Server。一些數據庫,沒有特別的原因(合法或其他),只包含幾個表。我覺得我可以整合這些數據庫。這是正確的方法嗎?還是可以隨時創建新數據庫?
PS:也許這個問題的答案是真正的“基於意見”。我只是想不出最好的方法是什麼。在某種程度上,這也是一個答案。
最佳實踐是最適合您的組織的方法。
如果你要和你的老闆討論這個,他有一定的做事方式,那麼你需要根據商業案例來計劃討論。
所以,首先:根據什麼對你很重要,什麼對你的老闆很重要,對以下各項分別進行兩次排名。如果這些排名相同,則需要重新評估;這不太可能
可維護性
- 通過圖形使用者界面?
- 通過手寫 SQL?
- 通過自動 SQL?
磁碟上的文件數
跨數據庫查詢
跨數據庫權限
- 請記住,DatabaseA 上的 EXECUTE 允許執行的對象訪問具有相同模式所有者的模式中的其他對象;但是,跨數據庫會改變規則
解決方案的初始、初稿的速度
添加數十個後續類似解決方案的速度
添加數十個後續相同解決方案的速度
對數十種現有的類似解決方案進行更改的速度
快速更改數十個現有的相同解決方案
易於調查為什麼解決方案 A6 不像解決方案 A23,而它們“應該”是相同的
易於在其他地方恢復整個數據庫集
數據分離,因此客戶 A 的數據不會與客戶 B 混合(通常是契約要求)
輕鬆將整個代理作業集移動到其他地方
所有解決方案的整體性能 - 分析器、擴展事件、索引、監控
外鍵
- 不能跨數據庫
本質上,這大部分歸結為:如果您希望盡快為每個一次性獨特事物提供一次性結果,那麼單獨的數據庫是有意義的,但是當不再需要它們時應該將它們銷毀。但是,從長遠來看,您將擁有數百個數據庫;這是想要的嗎?或者可能是由於契約而需要的?
我想說,整合的論點是圍繞外鍵(數據完整性)、解決方案的相同性(數據完整性)和手工操作。後者應該被自動化技術取代,這些自動化技術可以像處理 2 個數據庫一樣容易地處理 500 個數據庫,所以我會忽略它。
再次,知道什麼對你的老闆很重要;如果在對他們來說很重要的方面,整合是一種更優越的解決方案,那麼你就有很大的成功辯論的潛力。如果沒有,你不會。