Sql-Server

伺服器上的數據庫數量。我應該嘗試將這些對象合併在一起嗎?

  • January 11, 2018

背景

嗨,作為一名 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 個數據庫,所以我會忽略它。

再次,知道什麼對你的老闆很重要;如果在對他們來說很重要的方面,整合是一種更優越的解決方案,那麼你就有很大的成功辯論的潛力。如果沒有,你不會。

引用自:https://dba.stackexchange.com/questions/195028