2011-02-25 60 views
1

我有一個桌面應用程序從web服務接收數據並將其存儲在本地postgresql數據庫中(而web服務從SQL Server數據庫中檢索數據)。在這個過程結束時,我的本地數據庫中至少有250萬條記錄在表格內,但是這個數據將從de webservice以約300行的時間在大約15天的時間內批量接收。什麼是比較兩個不同數據庫之間大量數據的最佳方式?

我需要的是一種方法來確保我的本地數據庫具有與服務器數據庫完全相同的信息。

我正在考慮爲接收到的每個批次創建一些校驗和,然後在收到所有批次後,再整個表的另一個校驗和,但我不知道這是否是最好的解決方案,如果是,我不知道從哪裏開始創建它。 PS:TCP已經處理完整性檢查,所以我甚至不知道這是否需要,但數據相同是至關重要的。

+0

作爲本所暗示的,在很大程度上取決於你是否有SQL Server數據庫的控制。由於您使用的是Web服務來提取數據而不是使用SQL Server管理工具來提取數據,因此我假設您不具備對SQL Server端的控制權,但它可以幫助您確認這一點。 – 2011-02-25 15:48:24

+0

好,而我確實有過兩個Web服務和SQL Server的控制,這是強制性的我,我使用的數據網絡服務拉(塊狀),推動(非常小的,在過程的結束)。 – 2011-02-25 16:51:25

+0

我忘了提及的兩件事情是SQL服務器中的表格在postgresql服務器中有不同的方式。數據很多表和數據庫之間的傳播上的SQL Server的側面和包含本地PostgreSQL數據庫上的數據只是一小部分,只是一個單一的表。而且會有幾個桌面應用程序在不同的地方運行,從Web服務中拉出不同的行。 – 2011-02-25 17:00:33

回答

0

我可以看到一個校驗如何能可能是有用的,但轉型的你正在做的量可能會使其不切實際的。您必須根據數據的原始格式或轉換後的格式導出校驗和;這兩個都不會有效。

你有一些奇怪的限制(在那裏我自己),所以它是一種很難拿出明確的戰略不知道所有的細節。也許下列建議中的一個會起作用。

  1. 遷移完成後,SQL Server端和PostgreSQL端的簡單計數(*)。

  2. 遷移完成後,從SQL Server端和PostgreSQL端轉出一列鍵,然後對這些文件進行分類和比較。

  3. 如果1和2是不可能的,因爲有限的訪問SQL Server,也許傾倒了Web服務調用的結果到單個文件的位置,你走,然後在提取PostgreSQL的同一數據結束,並比較這些文件。

有可用於比較文件許多工具,如果你選擇的選項2或3

+0

嗯...那麼從web服務的返回對象(**列表 **)創建校驗和呢?這樣我會創建另一個包含列表和列表的crc代碼的對象,然後返回它,以便我可以在桌面應用上進行相同的校驗和並將它們進行比較。它會起作用嗎? – 2011-02-28 15:18:59

+0

我不是任何一種校驗和的專家,但是從我讀過的內容來看,他們通常應用在傳輸的兩端,數據的整體通常是相同的並且格式相同。我不知道你能夠在一堆客戶端和單獨的進程中計算校驗和。也許你可以,但該操作的複雜性可能超過其實用性。 – 2011-02-28 17:25:06

0

您是否可以控制Web服務和SQL Server數據庫?如果你這樣做,SQL Server更改跟蹤應該做到這一點。 MSDN更改跟蹤將以每個表格爲基礎跟蹤每個更改(或者只是您關心的更改)。每次您同步時,只需將它傳遞給您的版本號,它就會返回所需的變更集以使您更新。

+0

這將是偉大的,但我沒有這個選項。我必須使用網絡服務來做到這一點。主要是因爲這個項目的構思方式,但也有一個事實,即MS SQL Server *可能會在未來被Oracle服務器所取代。 – 2011-02-25 17:29:07

+0

我不是故意暗示刪除Web服務。我的意思是你可以在Web服務中公開SQL更改跟蹤功能。我這樣做是爲了將數據複製到WinMo掌上電腦。我建議這樣做的主要原因是因爲處理更新和刪除操作可能很困難,而改變軌道使得這些操作變得微不足道。如果數據庫遷移到Oracle,仍然無法工作。 – Ben 2011-02-28 17:26:17