例として、コンピューター A に元のデータベースがあり、コンピューター B が対象となり、そのデータベースを受信するように設定されている場合、B はローカルの postgresql サーバーにデータを保存 (キャッシュ) しますか、それともソースから継続的にデータを取得しますか? この質問の目的は、そのような接続を構成すると、データ転送速度が失われ、インターネット接続に永久に依存することになることを知ることです。ERP と POS のリモート関係のための優れたフレームワークを確立するための提案も大歓迎です。前もって感謝します。
1 に答える
これは完全にクライアントに依存します。私が知っている PostgreSQL 用のクライアント ライブラリはどれも、クエリ結果のキャッシュを行いません。Ruby gem libpq
、Perl psqlODBC
、または Python の.pgJDBC
Pg
DBD::Pg
psycopg2
Ruby ActiveRecord、Hibernate/EclipseLink、およびその他の JPA 実装など、いくつかの高レベルの抽象化と ORM システムはキャッシュを行います。このキャッシュは、オフラインでクエリを満たすことはめったにありません。通常は、オブジェクト ID を確認した後に、変更されていないオブジェクトデータの再フェッチを減らすためです。結果セットにあります。
オフライン データベースが必要な場合は、非同期マルチマスター レプリケーションまたはアプリケーション層の同期と競合解決アルゴリズムが必要です。後者を強くお勧めします。非同期マルチマスター レプリケーションは素晴らしいように思えますが、実際には、特に予測できない切断期間がある場合は、まったくひどいものです。アプリは変更のログを保持し、中央サーバーと通信して一連の変更を交換する必要があります。競合を処理するには、非常に慎重に計画する必要があります。金融アプリケーションのためにこれを DIY しようとすることはお勧めしません。
このトピックについては多くの文献があり、多くの記事が書かれています。車輪を再発明するのではなく、そこにあるものを読み始めてください。たとえば、モバイル アプリでローカル SQLite データベースとの間で同期を使用する方法については、かなりの情報が見つかります。