0

私のクライアントは、大通りの店のオフライン製品データベースを持っており、彼らは自分の目的のためにかなり頻繁に更新しています。彼らは現在、このデータベースからの製品情報を使用したいオンライン ストアを作成しています。

データベースをホストされたサーバーに移行し、オフライン データベースを放棄することは、現在のレガシー ソフトウェアのセットアップのため、オプションではありません。

私の質問は、オフライン データベースからオンライン データベースに情報を取得するにはどうすればよいですか? ローカル サーバーは常にインターネットに接続されているため、サーバーからデータを取得してオンライン サーバーにインポートするスクリプトをウェブサイト上で作成することは可能ですか? これが 24 時間ごとに実行されれば完璧です。しかし、それは可能ですか?もしそうなら、どうすればいいですか?

私が考えることができる他の唯一のオプションは、更新のたびにデータベースを手動でアップロードすることですが、これは実際には実行可能なアイデアではありません.

4

2 に答える 2

1

odbc接続を使用して、クイックブックでこのようなことをしました。それを使用して、データを MySQL に同期しました。ただし、この同期は 1 つの方法にすぎません。何かがいつ変更されたか (更新日) を示すキーがデータに含まれていない限り、多くの余分なデータを同期することになります。

SQLYog を使用して、odbc データ ソースに接続するスケジュールされたジョブをセットアップし、前回の同期以降の変更を、レポートの生成に使用していた mysql データベースにプッシュしました。データを MySQL にレプリケートできれば、その時点でオンライン ストアで簡単に利用できるはずです。

欠点は、リアルタイムではないことです。在庫が問題になる可能性があります。

于 2013-02-05T22:12:59.493 に答える
1

理想的な世界では、同じサーバー上で実行されるか、少なくともオフライン データベースと同じネットワーク上で実行される安らかな API を作成することを検討します。この安らかな API は、http を介して Web サーバーとして実行され、オフライン データベースからデータの JSON または XML 構造を返します。インターネット上で実行されているクライアントは、必要なデータをいつでも接続して取得できます。このような安らかな API には多くの利点があります。

まず安全です。オフライン データベースへの接続を公開することで、攻撃ベクトルを公開する必要はありません。必要なのは、安静な API へのパブリック アクセスを有効にすることだけです。API のロジックには、データベースに書き込む機能さえ含まれていない可能性があるため、API のセキュリティが最悪の場合でも侵害されたとしても、攻撃者ができることはデータを読み取ることだけであり、破損することはありません。

このような状況で安らかな API を使用することは、問題を適切に分離することを表しています。クライアント コードは、データベースについて何も認識してはならず、オフライン データベースが使用する内部システムについても認識すべきではありません。クライアントがオフライン システムを更新または変更したい場合はどうなりますか? この状況では、安静な API を更新するだけで済みます。データに接続しているクライアントは、API 以外は気にしないので、データベースの変更は簡単です。

API を検討するもう 1 つの理由は、同時実行性です。これについては前にほのめかしましたが、オフライン データベースのデータに複数のクライアントがアクセスする必要がある場合は、API があると便利です。API を待機させてリクエストを待機させる Web サーバーのセットアップでは、複数のクライアントが同時に API に接続できない理由はありません。HTTP はこれが得意です。

あなたは、古いデータを新しいデータベースに配置する必要があると話しました。このようなことは、API のエンドポイントを新しいデータベースのテーブルにマップし、必要なときに実行するだけでよいため、Restful API を使用して簡単に実行できます。新しいデータベースを忘れて、API をバックエンドとして使用することもできます。この解決策にはいくらかのキャッシュが必要ですが、データベースが必要でないと感じた場合は、データベースの複製を減らすことができます。

これらすべての欠点は、スクリプト上で API を記述することがより複雑であるという事実です。ですから、このような状況では、私はコースの馬を信じています。このデータベースが、将来拡張される長期プロジェクトのバックボーンである場合、API が最適です。それがプロジェクトの小さな部分である場合は、24 時間ごとに実行されるスクリプトを使用してスイングすることができますが、以前にこれを実行したことがあり、ソリューションを変更/編集する必要があると、少し「毛むくじゃら」になり始めます。これがお役に立てば幸いです。

于 2013-02-05T22:38:38.887 に答える