2016-10-08 6 views
1

DB内のいくつかのレコードの順位を維持して、最後のやりとりの時間に依存関係を変更する必要があります。私はおよそ定期的にDBを訪問し、DBサーバを過負荷にすることなくデータベースを継続的に更新する

に戻ってそれらすべてを書き込む前に各アイテムで)(LastRankedTime> 15分で

その後

適用ランクをすべての投稿を取得考えています

Post 
______________ 
Id  
Content 
LastAccessTime 
LastRankedTime 
Rank 

は、私が持っていますかもし私が10.000以上のレコードでランク付けをしなければならない場合、長いランクの計算や大きな読み込み/書き込みでサーバ/ DBのオーバーロードを心配するのですか?

この問題を解決するにはどうすればよいでしょうか? Db訪問ごとのレコード数が制限されたスレッドはどのように役立ちますか?

+0

どのデータベースを使用しているかによって、この種のメカニズムが既に存在する可能性があります。たとえば、SQL Serverでは、最後に見た行が更新されたかどうかを示す 'ROWVERSION'があります。 –

+0

しかし、他のメトリクスにも依存しているので、私はまだランキングをやり直すためにレコードを引き出す必要があります。だから多分それはこの場合にはあまり役に立たないでしょう。 – qkhanhpro

答えて

1

正常に動作します使用している列のインデックスを作成、そこに複数のデータベースノードにすることができ、あなたはclusterredデータベースと考えることができます。

1つのノードにのみデータを書き込みます。これはテーブルにインデックスを作成しません。挿入が速くなります。あなたはこのノードから読むことはできません。

一方で、他のノードは高速で検索できるように多くの索引付けが行われた読み取り専用です。

最初のノードは定期的にデータを他のノードと同期/複製します。このような同期の間隔を設定できます。これは、大量のトラフィックを伴う大規模なアーキテクチャーで通常行われる標準的なアプローチです。

+0

ありがとうございます。私は単純な限られたI/Oでバックグラウンドワーカーを使用して終了します。 DBが予期せず大きくなった場合、私はこの解決策を検討します – qkhanhpro

-1

は、あなたがそれはあなたが使用してどのようなデータベースによって

+1

この特定のケースでインデックスがどのように役立つか、より詳細な回答を提供できますか? – qkhanhpro

関連する問題