既存の ERP システム (WinMagi) と対話する Web アプリケーションをセットアップする必要があります。ERP は基本的に xBase (FoxPro) データベースのフロントエンドです。データベースは社内サーバーにあります。私の知る限り、ERPにはAPIはありませんが、EDIモジュールを介して注文書などを受け入れることができます. Web アプリケーションは、オンライン注文を受け付け、レポート用のデータを照会できる必要があります。
これまでの私の計画:
- クラウドでホストされている VM 上の SQL サーバー インスタンスに xBase DB を同期します。
- (ERP からの片道 -> SQL Server)
- この同期プロセスを ERP と Web アプリケーション間のインターフェイスとして使用します。
- EDI を使用して発注書を ERP にプッシュします。
- ここでの私の考えは、(ERP によって) 制御され受け入れられたインターフェイスを介して ERP でデータを作成または更新する方が、データの同時実行の観点から安全であるということです。
質問/懸念:
- xBase DB から SQL DB を更新する最良の方法は何ですか? 車輪を再発明する必要がないように、これを行うことができる既存のライブラリはありますか?
- 同期中に xBase DB はロックされますか? それとも、ライブ ERP に問題を引き起こしますか?
- 同期中のデータの同時実行性/整合性の問題を回避するにはどうすればよいですか?
- このシステムは、Web アプリにライブ データを提供しません。これにより、どのような問題が予想されますか?
- この種のプロジェクトでは、ある言語を別の言語よりも優先する必要がありますか? 私の計画は、Java/Hibernate MVC を使用することでした。
私はおそらくこれについて間違った方法で進んでいますか?Web アプリを xBase DB と直接接続したほうがよいでしょうか? このアプローチですぐに頭に浮かぶいくつかの問題は、オフィスとクラウドベースの VM 間のネットワークの問題と、ERP を直接インターネットに開放することによる潜在的なセキュリティの脆弱性です。
あなたが提供できるかもしれないアドバイスや提案は大歓迎です!! 前もって感謝します。
更新 - 2012 年 9 月 3 日
現在データコピーを行っている方法(同期ではありません)-夜間に実行されます:
- オフィスの Linux ボックスは、必要な DBF を ERP サーバーの読み取り専用共有からローカル ストレージにコピーします。
- DBF は、Dave Burton のすばらしいdbf2csv perl スクリプトを使用して CSV に変換されます。
- 結果の CSV は、リモート VM に rsync されます。データにはわずかな変更しかないため、これは非常に高速です。
- rsync が完了すると、リモート VM は本番 DB への mysqlimport を実行します。
このアプローチの利点
- ネットワーク アクセスは読み取り専用であるため、ERP が破損することはありません。
- データを同期するためにカスタム ロジックを実装する必要がないため、リモート VM でデータが間違っている可能性があるという懸念はありません。
- データ コピーは夜間に実行されるため、実行時間はそれほど重要ではありません。
- 現在の実行時間は、1 レコードあたり約 20 ~ 30 フィールドの 100 万を超えるレコードで約 7 分です。
- 最も長いフェーズは、DBF のコピーと CSV への変換です。
短所
- DBF は毎回完全にコピーする必要があります。
- DBF は毎回完全に変換する必要があります。
- コピー中のテーブルは、mysqlimport 中にロックされます。インポートは夜間に実行され、mysqlimport には約 20 秒しかかからないため、これはそれほど大きな問題ではありません。