理想的な世界では、同じサーバー上で実行されるか、少なくともオフライン データベースと同じネットワーク上で実行される安らかな 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 時間ごとに実行されるスクリプトを使用してスイングすることができますが、以前にこれを実行したことがあり、ソリューションを変更/編集する必要があると、少し「毛むくじゃら」になり始めます。これがお役に立てば幸いです。