Sql-Server

SQL Server:數據庫集成和同步

  • December 28, 2013

我有n 個具有相同數據架構的 SQL Server 數據庫。

另一方面,我有一個 Web 應用程序需要為某些實體檢索儲存到n 個數據庫中的資訊的聯合。

一種可能的解決方案是使用 SSIS(SQL Server 集成服務)和 BIDS(商業智能開發工作室)應用 ETL 操作(提取、轉換和載入)。

通過應用 ETL 操作,我獲得了一個可以從我的 Web 應用程序中使用的數據庫(倉庫)。有關基本草圖,請參見下圖。

方案1

問題在於,Web 應用程序不僅訪問倉庫進行讀取,還訪問寫入和更新資訊。

如果實體正在更新到倉庫中,則需要將相同的更新應用到原始源中。

注意。進入源和倉庫的資訊可以經常更新。

複製能否成為將更新同步到正確來源的倉庫的好方法,或者我可以使用其他工具嗎?

也許我可以考慮另一種策略而不是 ETL 和倉庫?

如果您的更新/插入總是發生在 n 個數據庫中的一個數據庫上,並且您在每個請求上讀取的行數較少,則可以使用連結伺服器和分佈式分區視圖 (DPV) 來創建單個數據庫的錯覺:http: //technet.microsoft.com/en-us/library/ms188299(v=sql.105).aspx。這可以在不引入複製複雜性的情況下完成。

DPV 有幾個限制,如果您不小心,可能會給您帶來較差的性能。在不知道您要執行的查詢的更多詳細資訊的情況下 - 我只能建議您嘗試一下,看看是否能解決您的問題。

一種選擇是將您的n 個相同的 SQL Server 數據庫替換為針對您的數據倉庫的可寫視圖。

通過這種方式,您可以將所有數據保存在一個位置,但您可以使用視圖來過濾數據,以便每個子集都可以作為不同的實體進行查看。由於您實際上只有一份數據副本,因此插入/更新/刪除是對過濾視圖還是對未過濾表進行並不重要。雙方會同時看到,永遠不會出現同步問題。

請注意,為了使視圖可寫,必須強制執行某些條件。見這裡

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