いくつかの (+100) ショップの場所からいくつかの MS Access データを読み取り、VPN のエンドポイントにあるリモート MS SQL サーバーにいくつかのデータを保存する必要があるアプリケーションを構築しました。サイトから本社サイトへの接続の品質が不安定な場合があるため、顧客から、同期機能を備えたオンライン/オフラインの実装を提供するように依頼されました。
そこで、SQL Server の IP の到達可能性を検出する関数を作成し、関連する挿入/更新操作の前、およびタイマー ベースで、さまざまな条件で関数を実行しました。タイマーは主に、長時間の接続ドロップダウンの場合に一時的な場所にローカルに保存することを強制することを目的としています (その後、夜間など、通信がより信頼できるときに一括同期を実行します)。
接続障害はときどき発生するものだと思っていたのですが、実際にはそれ以上の頻度で発生することがわかりました。
私は、より信頼できるアプローチが何であるか疑問に思っています。
私が最も恐れている状況は、3 つの挿入と 1 つの更新のグループを開始した後に接続が失われることです (グローバル パフォーマンスに基づいて、いくつかのサーバー ベースのデータを使用してすべての検証を行うと推定すると、実行時間は約 2000 ミリ秒になります)節約ごと)。私はある種のコミットとロールバックのアプローチを提供しましたが、それが非常に有用であるとは確信していません。
どんな提案も歓迎します。
ル
また、ショップの顧客に関する情報を更新する必要があるため、オンライン/リアルタイムのシナリオが重要であると言わざるを得ません。顧客が何かを購入した場合、商品を返品した場合 (5 分後または 5 日後) に報酬ポイントが蓄積されます。彼のアカウントからポイントを削除する必要があります。したがって、この点に関しては、一種の夕方/夜の同期はあまり望ましくありません。
実際、5分後に別の顧客が何かを購入する可能性があるという事実に対処し、トランザクション中に接続が失われた場合、彼のポイントの間違った挿入/更新を回避する方法を考えています。 POS アプリケーション (顧客がメンバーであるかどうか、およびポイントを獲得する資格があるかどうかを知る必要があるため、POS アプリでは顧客に関する情報はなく、ショップで行われた販売に関する情報のみがあるため)。