2011-06-06 79 views
1

是否有可用於保持數據庫同步的標準消息協議/ API?或者用於創建和解析消息的API。如何同步來自不同公司的斷開連接的系統的兩個數據庫

我們公司正在與另一家公司合作,爲兩種不同類型的用戶提供兩種不同的軟件包。數據位於兩個單獨的數據庫中,但部分數據庫必須保持同步。

他們的系統對我們來說幾乎是一個黑盒子。反之亦然。

那麼需要跟蹤更新,並將它們轉換爲消息並將它們發送到Web服務,將它們映射回目標數據庫字段並提交它們。

數據庫模式不匹配。

我知道我們將不得不推出大部分這種自我,但圍繞消息或技術的一些想法會很好。

回答

0

提供的答案給了我一些很好的想法,但我認爲我們最終會做一些有點不同的事情。

我們正在使用MSMQ,並定義了一個標準的消息傳遞系統,我們將自行推出。

至於我們如何知道事情發生了什麼變化,我現在還不確定。

3

一個解決方案:SQL Server Integration Service。它從SQL Server 2005出現。這正是你需要的。它在數據轉換服務中被稱爲SQL Server 2000中的DTS。這是爲了將數據從一個點導入/導出/轉換而創建的。這從SQL Server 2005中很容易使用(DTS非常糟糕)。因此,基本上,您將不得不編寫包來從其數據庫導入數據,轉換,過濾等,這正是您需要將數據插入到數據庫中的方式。反之亦然。

關於黑匣子的事實,您應該生成數據庫關係設計以使其更容易。

編輯 爲了防止您需要安裝它,我記得SQL Server 2005安裝程序中的錯誤根本不安裝SSIS。我必須在安裝程序系統要求步驟中滿足所有警告才能獲得它。

+0

這是什麼意思?「關於黑匣子的事實,你應該生成數據庫關係設計,以使其更容易'??你的意思是我們應該同意一個設計,並讓它們都一樣。不幸的是,公司政治不允許我不這樣想。目前這兩個系統都在生產中,功能有限。 – peter 2011-06-06 23:54:29

+0

如果您有對其數據庫的讀取訪問權限,則可以生成數據庫關係模式,以便能夠查看每個表,每個表之間的關係,每個主鍵和每個外鍵,每種類型。這將更容易理解如何獲取您的數據。最後,我最近不得不同步幾個不同的數據庫以存儲統計信息,並使用SSIS。這完全符合我的需求。因此,如果您安裝了SQL Server 2005/2008,請啓動SSIS並嘗試。這只是「圖形編程」,不需要編寫單行代碼(只有SQL)。 – 2011-06-07 00:00:19

+0

因此,SSIS可以讓某些活動「觸發」數據流動。例如。在數據庫之一我更新某個記錄,可以導致觸發器將數據發送到數據庫二? – peter 2011-06-07 01:46:37

0

你有兩個問題:

  • 跟蹤已經被同步
  • 適用於同行

的變化有,結合瞭解決這兩個問題的解決方案的變化,我相信你知道它:複製。 Merge Replication將允許兩個站點更新數據,並且還會提供合併衝突解決方案。但是,複製只適用於表格模式相似的情況,並且由於模式更改必須在站點之間進行仔細協調而對開發帶來很大限制。實際上,當這些網站由獨立公司運營時,很難長期維護。

如果你想推出自己的更改跟蹤部分已內置支持的SQL Server:

既可以用於同步解決方案作爲意思是檢測什麼改變。

應用更改可以通過Web服務解決,但SQL Server中也有內置解決方案,可實現更高的可伸縮性和吞吐量:Service Broker。只要通信API(消息協議)保持不變,依靠消息定義的同步API允許兩個站點按照自己的步調發展並幾乎隨意更改模式。

相關問題