0

データ バックエンドが MySQL データベースであるデスクトップ python アプリケーションがありますが、以前のデータベースはネットワーク アクセスされた xml ファイルでした。xml を利用していたときは、アプリケーションの起動時にスレッドが生成され、xml ファイルの変更を単純にチェックし、変更された日付が (ユーザーが更新したために) 変更されるたびに、アプリが更新され、複数のユーザーがビジネスを進めながら、アプリの変更を使用して確認することができました。

現在、このプログラムは成熟しており、どこでも使用できるようにオンライン プレゼンスに向けて進んでいます。Xml は窓の外にあり、データベース アクセス方法として SQLAlchemy で MySQL を使用しています。ただし、情報が 1 つの xml ファイルに格納されるのではなく、SQL データベース内の複数のテーブルに分割されるため、プロットが濃くなります。これは、ある種の「最後に変更された」テーブル値または構造の考え方を複雑にします。したがって、問題は、データが変更され、アプリを更新する必要があることをユーザーにどのように通知するかということです。ここに私の考えのいくつかがあります:

  1. 各テーブルには最後に変更された列が必要です (これは最悪のオプションのようです)
  2. 最後に変更された列を保持する別のテーブル?
  3. サーバーを介したある種のプッシュ通知?
  4. おそらくアプリが接続できるSQLデータベースをホストしている同じサーバー上で非常に小さなpythonスクリプトを実行する機能があり、(ソケットを介して?)接続されているすべてのクライアントとの間で情報をやり取りできることを言及する必要がありますか?

追加情報:

  • やり取りされる情報は、かなり低帯域幅です。一部の画像の可能性を伴う大部分のテキスト (50k を超えることはめったにありません)。
  • 現在のクライアント数は非常に少なく、数十です。しかし、このプロジェクトは、クライアント数が数百に達する可能性のある大企業によって採用される可能性があります。それでも、近い将来、帯域幅が問題になることはありません。

とにかく、私にとっては少し新しい領域なので、どうしますか? 前もって感謝します!

4

1 に答える 1

0

私が理解しているように、これはクライアントサーバーアプリケーションではなく、共通のリモートストレージを備えたアプリケーションです。
1つのアイデアは、Webサービスに変更することです(これにより、長期的にはほとんどの問題が解決されます)。
もう1つのアイデア(Webに切り替えたくない場合)は、タイマーを使用してインターフェイスのデータを定期的に更新することです。
もう1つの方法(およびより複雑な方法)は、すべての更新を受信し、それらをデータベースに保存してから、接続されている他のクライアントに変更をプッシュするサーバーを用意することです。
あなたが言及した最初の2つのアイデアには、メンテナンス、スケーラビリティ、および設計の醜さの問題があります。
私の意見では、最後の2つははるかに優れていますが、それでも私はWebサービスが最高であることに固執しています。

于 2012-04-10T15:19:30.107 に答える