2010-08-25 58 views
4

我的任務是實施一個系統,用於不斷接收來自合作伙伴的大量數據。合作伙伴方面的數據模式與我們的不同,所以當數據被接收並導入到我們的數據庫時,必須進行一些轉換。從合作伙伴處繼續傳輸數據

解決此任務的最佳方法是什麼?

我對方程兩邊都有一些控制,即如果我們選擇使用WCF,我們的合作伙伴將執行該服務。但重要的是要儘可能地限制合作伙伴的節目數量。理想情況下,他們會使用SQL Server的某些功能來導出他們的數據,然後讓我們處理其餘的問題。

其他相關因素:

  • 使用SQL Server兩側(在我們身邊2008年,未知的合作伙伴)。
  • .NET 4和/或任何來自Microsoft的盒子,沒有第三方產品。
  • 轉移是一種方式,即從合作伙伴轉移給我們。
  • 數據量大約是數以萬計的每日傳輸的更新記錄/對象。
  • 數據模型相當複雜,有幾個表和關係。
  • 的解決方案應該是寬容的合作伙伴方的變化(我們不知道什麼時候&怎麼變他們的模型)
  • 可維護性和可靠性比性能更重要,即我們不需要最新數據,但服務應該易於修改,並且不能失敗/停止。

我在問這個問題,因爲我不知所措,但可以完成的方式有多少。作爲.NET開發人員,我傾向於實現WCF或者甚至是一些基於xml的自定義交換。但我知道Biztalk可能適合這裏的法案,而SQL Server可能有一些我不知道的漂亮功能。

任何指針,想法和建議是最受歡迎的!

+1

什麼是大量的數據? 100GB /小時?複製速度有多快。它應該是某種預定的批量加​​載或更多事件驅動/每個記錄的基礎? – 2010-08-25 06:34:35

+0

對不起,「大」我的意思是「成千上萬的記錄每天」,這將需要一些處理,但幾乎不會對我們的帶寬造成太大的壓力。批量或事件驅動也取決於我們提出的解決方案。它可以是夜間工作,也可以是連續更新的單個記錄/對象。 – 2010-08-25 06:42:01

回答

2

除了Will的建議,你可以看看SSIS(SQL Server Integration Services)。有了這個,你可以導出到一個FTP站點,然後在另一端導入它。

2

如果你想要一個完整的數據庫副本,那麼log shipping是一個不錯的選擇,否則檢查出replication,它可以讓你更好地控制拷貝的內容。

您可以按照原樣複製數據並處理電線一側的轉換邏輯。

+0

我認爲我們正在尋找更多面向服務的體系結構:如果我們要維護數據庫的完整副本,這也意味着我們在對其模型進行更改時必須進行更改。必須有某種中間契約,它定義了數據及其結構。 – 2010-08-25 06:46:38

+0

日誌傳送和複製都將應用模式更改 - 因此這可能不是一個突破問題。 – 2010-08-25 06:55:55

+0

是的,但之後我們會有一個「神奇地」在一夜之間改變的數據庫,可能會破壞我們的導入/轉換代碼。 :) – 2010-08-25 06:57:46

0

也許,這裏就是我會做它:

  1. 保持合作伙伴的數據庫的本地副本。讓我們稱這個分段,因爲你會在這裏轉換數據。使用數據比較(VS 2010功能,你可以當然自動化)或複製來實現這一點。我不確定Replication是否觸發CDC,但Data Compare確實會。
  2. 在暫存數據庫上啓用更改數據捕獲。這樣只會給您更改的記錄,因此您可以選擇性地轉換數據並更新數據庫。
  3. 構建和部署掃描CDC表的SSIS作業,轉換數據並加載到數據庫中。

據我所知,數據比較在模式發生變化時效果很好(它忽略了模式更改)。 CDC也運行良好,只需要在模式更改並刪除第一個捕獲實例時創建第二個捕獲實例。