2012-04-10 20 views
0

データバックエンドがMySQLデータベースですが、以前のデータベースがネットワークアクセスされたxmlファイルであるデスクトップPythonアプリケーションがあります。 xmlで動くと、xmlファイルの変更をチェックするアプリケーションの起動時にスレッドが生成され、変更された日付が変更されるたびに(ユーザーが更新するたびに)、アプリは自動的に更新されるため、彼らが彼らのビジネスについて行ったときにアプリケーションの変更を使用して見ることができます。SQLテーブル更新をユーザーに通知する最も良い方法は?

プログラムは成熟しており、オンラインでの存在に向かっているので、どこでも使用できます。 Xmlはウィンドウの外にあり、データベースアクセスメソッドとしてSQLAlchemyと共にMySQLを使用しています。ただし、情報はXMLファイルに格納されなくなり、SQLデータベースの複数のテーブルに分割されるため、プロットは太くなります。これは、ある種の「最後に変更された」表の値または構造のアイデアを複雑にします。したがって、データが変更され、アプリをリフレッシュする必要があることをユーザーにどのように伝えますか?

  1. 各テーブルには、最後に変更された列(これは史上最悪のオプションのように思える)
  2. いくつかの最終変更列を保持している別のテーブルを必要とします:ここに私の思考の一部ですか?
  3. サーバー経由で何らかのプッシュ通知がありますか?
  4. 私はおそらく、アプリケーションが(ソケットを介して)接続できるSQLデータベースをホストしている同じサーバー上で、おそらく非常に小さなPythonスクリプトを実行できることを言及する必要があります。クライアント?

いくつかの追加情報:かなり低帯域幅となり、前後に渡さ

  • 情報。ほとんどの場合、画像の可能性があるテキスト(ほとんど50k以上)。
  • 現在、クライアント数は数十人と非常に少なくなっています。しかし、このプロジェクトは、クライアント数が数百に達する可能性のあるいくつかの大企業で手に入る可能性があります。将来的に帯域幅が問題になることはありません。

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

+0

クライアントの数、各クライアントにプッシュする必要のあるデータの量などについて、いくつかの啓発を提供できますか?最適なソリューションは、システムの特性に依存し、高帯域幅のアプリケーションに必要なよりエキゾチックなソリューションです。 –

+0

OPをいくつかの追加情報で更新しました。主にテキストデータです。 – Cryptite

+0

さらに、データが非常に古くなっているかどうかは本当に重要ですか?わずかに古くなったデータに耐えることができますか、これはユーザーエクスペリエンスではありませんか? –

答えて

0

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

+0

それはクライアント - サーバーになる可能性を秘めています(http://chat.stackoverflow.com/rooms/9919/discussion-between-cryptite-and-li-aung-yip)クライアント間で通信が行われる可能性があるため、サーバーを経由する必要があります。私は、不必要なデータ負荷のように見えるので、5秒ごとにブランケットリフレッシュすることを躊躇しています。リフレッシュするデータは、通常、「リフレッシュ」と言ってもそのトリックを行うほど小さいので、リフレッシュに_changed_データを含める必要はありません。それは少なくともいくつかの種類のWebサーバーのやりとりが行く方法になるように思えます... – Cryptite

+0

Webサービスはスケーリングが良く、私の意見では維持しやすく、最新のデータが更新されたインタラクティブなインターフェイスが必要な場合いくつかのajaxを追加することができます。それはあなたのアプリケーションが何をするかによって異なります。 – Mihai

+0

ある時点ではWebインターフェイスがあるかもしれませんが、現在のところ、単にデスクトップアプリケーションであることを意図しています。 – Cryptite

関連する問題