我打算創建一個VB.net應用程序,用於從數據庫(MS Access)中檢索數據並將其存儲到Web服務器(MySQL數據庫)中。我真的很困惑。我打算使用任務計劃程序,以便程序自動運行。我打算每隔5分鐘設定一次。如何在不同的DBMS之間進行復制時避免數據冗餘?
如何避免數據冗餘?
例如,我計劃在5分鐘後獲得銷售額,5分鐘後我會再次完成銷售。我認爲在這種情況下會有冗餘。我想問你關於這種情況的想法:你將如何處理它?
我打算創建一個VB.net應用程序,用於從數據庫(MS Access)中檢索數據並將其存儲到Web服務器(MySQL數據庫)中。我真的很困惑。我打算使用任務計劃程序,以便程序自動運行。我打算每隔5分鐘設定一次。如何在不同的DBMS之間進行復制時避免數據冗餘?
如何避免數據冗餘?
例如,我計劃在5分鐘後獲得銷售額,5分鐘後我會再次完成銷售。我認爲在這種情況下會有冗餘。我想問你關於這種情況的想法:你將如何處理它?
在評論中你說「我沒有任何關於如何用ODBC替換原生表的想法」。
這是阻止你將數據整合到MySQL中的唯一障礙嗎?如果是這樣,請嘗試使用此建議來設置到MySQL表的ODBC鏈接。
如果您還沒有MySQL,請爲MySQL安裝ODBC驅動程序。最新版本可在此處獲得:Download Connector/ODBC
從Windows ODBC數據源管理員爲您的MySQL數據庫創建一個DSN(數據源名稱)。
創建新的Access數據庫,並使用DSN創建與所提供的網頁鏈接@jmoreno指導鏈接。
如果鏈接表的訪問名字比你原本用於本地Access表的名稱不同,將其更改爲匹配原來的名稱。
然後你就可以從舊的Access應用程序導入表單,查詢,報表等。 理想情況下一切都會正常工作,因爲Access會找到它需要的表名,並不會在意它們是外部的而不是本地表。但是,您需要解決Access和MySQL之間的任何數據類型不兼容問題。
您需要在接入應用程序使用的每臺機器上的MySQL ODBC驅動程序。我個人更喜歡處理這個問題,而不是單獨的Access和MySQL數據存儲之間同步的挑戰。 (因人而異)
當你準備部署,我們也可以將ODBC連接到DSN的連接,使客戶機就不需要每次都配置了DSN。有關詳細說明,請訪問Access MVP的Doug Steele的Using DSN-Less Connections。
非常感謝你的想法..我真的很感激它.. –
您需要仔細考慮如何識別自上次同步週期以來發生更改的數據。如果每行數據都有'最後更新'時間戳(已編制索引),則可以編寫一個進程,依次從每個表中選擇最近更新的行。這對於原始數據庫(MS Access)來說有點沉重,而且你還必須在MySQL數據庫中標識出相應的行來替換(需要替換的地方)。當然,您可以將不同的表格放在不同的更改時間表上。例如,美國各州的表格可能每年不會更改一次,但您的客戶訂單表格(或SO問題和答案表格)在五分鐘內可能會發生很大變化。
一些DBMS有其他機制,特別是在他們自己的副本之間工作。某些DBMS還提供了一種有時稱爲「更改數據捕獲」(CDC)的機制,可讓您獲取更改的數據。有時,在具有「事務日誌」或「邏輯日誌」(但不包括CDC或類似的東西)的DBMS中,可以「挖掘」日誌文件(或記錄備份)以查找更改。但是,日誌通常針對DBMS內部恢復流程進行了優化,而不是供您使用。
先生。有什麼與我的查詢?你能詳細闡述CDC嗎? @Jonathan Leffler –
谷歌破碎了嗎? –
那麼,顯然你必須跟蹤你已經處理的數據項目(可能在不同的元數據空間/數據倉庫),以避免冗餘。元數據應該用於過濾從源處理過的記錄。邏輯和元數據中需要的內容取決於這裏的確切用例。
如果有可能,應該避免在這種情況下使用兩個數據庫。
查找有關鏈接表管理器的信息 - Access使用的數據不必存儲在Access中。
如果你必須這樣做,然後看看如何使用/升級到Access 2010和使用數據宏(觸發),把新的/更改的數據到臨時表,你清楚了,一旦你」已經複製了數據。
謝謝你的想法主席.. :) –
那麼先生,在這種情況下,它只取決於程序?避免冗餘? –
將銷售數據直接輸入到MySQL,而不是通過Access數據庫文件。如果您有用於數據輸入的基於Access的基於表單的應用程序,請將本機(Jet/ACE)表與ODBC鏈接替換爲其對應的MySQL。沒有關於保持2個獨立數據集同步的更多問題。 – HansUp
@HansUp:先生,我沒有關於如何使用ODBC替換原始的表。我的概念做的是,我將創建一個程序,可以從微軟的Access獲取數據,然後把它的數據庫的任何想法網絡服務器(MySQL),以便通過互聯網訪問。 –