2009-08-19 8 views
2

Webページに多数のデータを表示するシナリオがあります。方法:更新時にのみデータベースから値を取得する

午前中に特定の時刻に(午前7時)またはプロセスを手動で開始するときにのみ、何らかのプロセス(これは制御できません)によってデータがデータベースに取り込まれます。 (PS、同じデータを異なる形式でWebページ上の他の場所で使用されるが、異なるチャネルからされている。)

私はページ上のいくつかのロジックを入れていることを考えた

  1. 午前7時10分の場合にのみデータを取得します。データはXMLファイルに読み込まれ、XMLファイルからデータが読み込まれます。しかし、誰かが手動でプロセスデータベースを更新すると更新されますが、私のウェブページは午前7時10分まで更新されません。データの同期が1秒であっても受け入れられません。

これを行うにはどうすればよいですか?スマートなソリューション?私は、同じデータのデータベースへの往復を何度も繰り返さないようにしたい。

SQL Server 2000、ASP。

答えて

0

何らかのポーリングソリューションが必要です。

私の頭のちょうど上に、私はこのようなことをします。インサートとudpates際に別のテーブルの上にある制御フラグを更新するために移入され

  1. 設定テーブル(テーブルA)にトリガが、この管理テーブルを呼び出すことができます。

  2. 午前7時から午前7時10分まで、1秒ごとにコントロールテーブルをポーリングするようにウェブサイトを設定します。新しいデータがテーブルAに到着したことを制御テーブルが示している場合は、そのデータを取得してページを更新します。それ以外の場合は何も行いません。しかし、1秒ごとに制御フラグをポーリングするのは大したことではありませんが、データが同期していない場合、実際には大きな問題であると自問する必要があります。毎秒ではなく10秒ごとにポーリング。私はこの権利を読んでいる場合...

    それは同じデータであれば

    、あなたはおそらくにデータを適切なフィールドをインデックスしてマッサージすることにより、データベースへの旅行への負荷を軽減することができます

0

[OK]をクエリをスピードアップするために構造的に理想的な形式ではありません。

問題は、データが変更されたかどうかを確認する唯一の方法は、クエリを実行することであるため、DBのポーリングを避けることはできません。最も安全な方法は、構造とクエリを最適化してサーバーへの課金をできるだけ少なくすることです。

+0

+1でDBをポーリングすることができません。あなたのサイトがたくさんのトラフィックを取得した場合、DB往復を減らすために結果に1秒のキャッシュを実装することができます。 –

1

SqlCacheDependencyを使用できますか?

BTWは、同期が1秒ではなく、現実的な目標ではありません。

+0

Bro! .NET 1.1でもないのは、従来のASPです。あなたは2.0の機能を指している:) –

関連する問題