我的項目的總體目標是收集來自多個911調度中心的當前緊急事件信息,並通過web服務將該信息發送給我們的服務器,它將顯示我們地區的緊急事件清單。我目前在每一個調度中心收集數據的方式是這樣的:頻繁間隔(3秒...)跟蹤(非特定數據庫服務器)數據庫更改
- 調度中心具有某種數據庫服務器上運行的存儲所有的事故信息
- 我有一個查詢數據庫中設置一個以xml格式返回所有當前緊急事件
- 我有一個每3秒鐘運行一次查詢(實際上是一個存儲過程)的Windows服務,然後將該數據(xml)發送到我們的webservice
- 當我們的服務器接收信息,它會刪除(從我們的數據庫,而不是調度中心)所有當前的事件信息和重新將它與「新」數據放在一起
這種方法的問題是我們發送大量冗餘數據。我想要做的只是發送自上次運行sproc以來發生更改的數據庫行。我的想法是讓我的Windows服務做這樣的事情。運行sproc並將結果存儲在某種數組/字典中。下一次運行sproc(3秒鐘後)是將新結果與現有數組進行比較,並僅提取差異併發送它們...想將數據作爲JSON而不是XML發送到我們的Web服務。 。不知道有什麼想法的人有最好做到這一點(不一定是特定的代碼,但更多的概述...)使用C#...
編輯
經過一番調查多,我想我想要的是沿着「數據集到列表」類型的過程......這將允許我將每個記錄轉換爲自定義對象,然後創建這些對象的列表...然後可以存儲該對象列表在內存中,可以使用下一組數據(3秒鐘後)與原始列表進行比較,以查看是否有任何更改... Windows服務不一定會調用SQL Server sproc,因此需要將此代碼與其他數據庫服務器配合使用。應該注意的是,記錄數在每個數據集返回將可能只有10-15最多......我們不是在談論成千上萬的記錄......
標題提到「非特定數據庫服務器」,所以我認爲調度中心數據庫是一個異構混合。不只是SQL Server。 –
這是正確的Martin,調度中心可以使用任何類型的數據庫服務器,所以我想要的邏輯可以在任何地方使用,而不僅僅是SQL Server ... –
CDC存在其他RDBMS'。 HTTP://文檔。oracle.com/cd/B28359_01/server.111/b28313/cdc.htm http://flexviews.sourceforge.net/flexcdc.html http://pgfoundry.org/projects/postgrescdc/ –