我需要設置一個與現有ERP系統(WinMagi)交互的Web應用程序。 ERP基本上是xBase(FoxPro)數據庫的前端。數據庫位於內部服務器上。據我所知,ERP不具備API,但可以通過EDI模塊接受採購訂單等。 Web應用程序應該能夠接受在線訂單和查詢數據以進行報告。如何將基於xBase的ERP連接到Web應用程序?
我迄今爲止的計劃:
- 同步化的xBase數據庫的SQL Server實例上託管虛擬機雲。
- (從ERP單程 - > SQL服務器)
- 使用此同步過程作爲ERP和Web應用程序之間的接口。
- 使用EDI將採購訂單推回ERP。
- 我在這裏想到的是,從數據併發的角度來看,通過控制和接受(通過ERP)接口創建或更新ERP中的數據會更安全。
問題/顧慮:
- 什麼是更新從的xBase數據庫的SQL數據庫的最佳方式?有沒有預先存在的庫可以做到這一點,所以我不必重新發明輪子?
- 在同步期間xBase DB會被鎖定嗎?否則導致現場ERP問題?
- 如何在同步期間避免數據併發/完整性問題?
- 此係統不會向網絡應用提供實時數據。由此我可以期待什麼樣的問題?
- 對於這類項目,我應該選擇哪種語言而不是另一種語言?我的計劃是使用Java/Hibernate MVC。
我可能會用這種錯誤的方式?我的網頁應用程序直接與xBase DB連接會更好嗎?這種方法讓人想到的一些問題是辦公室和基於雲的虛擬機之間的網絡問題,以及將ERP直接開放到互聯網的潛在安全漏洞。
任何意見或建議,您可能能夠提供將不勝感激!提前致謝。
更新 - 2012年9月3日
如何我目前在做數據複製(這不是一個同步) - 在夜間運行:
- 在辦公室複製所需的dBFS的Linux機器從ERP服務器上的只讀共享到本地存儲。
- 使用Dave Burton的奇妙的dbf2csv perl script
- 將DBF轉換爲CSV將生成的CSV與rsync'd到遠程VM。數據只有很小的變化,因此速度很快。
- 一旦rsync完成,遠程VM將對生產數據庫執行mysqlimport。這種方法
- 的ERP不能以任何方式與網絡接入被損壞的
優點是隻讀的。
- 對於超過100萬條記錄,每條記錄大約有20-30個字段,當前運行時間約爲7分鐘。
- 最長階段是DBF複製並轉換爲CSV。
缺點
- dBFS電平在全每次都被複制。
- DBF每次都必須全部轉換。
- 正在複製的表在mysqlimport期間被鎖定。這並不是一個太大的問題,儘管導入在夜間運行,而mysqlimport只需要大約20秒。
我在想一個像Talend,CloverETL或Pentaho這樣的ETL工具對你來說很合適。這樣你就不會重新發明輪子並能夠控制同步。 – Andrew 2012-03-12 16:04:38
感謝@Andrew的建議。我會研究它。你對其他問題/疑慮還有其他想法嗎?你知道xBase DB是否會被鎖定並導致內部ERP問題? – max 2012-03-12 21:22:09
如果您從xBase DB中選擇,您應該可以使用NOLOCK語句。這當然是一種「髒讀」,有一些缺點,但它是一種選擇。 – Andrew 2012-03-13 13:21:45