9

メイン エンティティが でStory、ユーザーが各ストーリーに投票できるアプリケーションがあります。各投票vote_countは、ストーリーの a を増やします。

ストーリーの書き込み競合が心配なので、各ストーリー のシャード カウンターを使用して投票を追跡する予定です。

ここで私の質問: 投票数順に並べられた記事のリストを取得するにはどうすればよいですか? 例: 最も投票数の多い 50 のストーリーを表示します。

私が最初に考えたのは、カウンター値を読み取り、実際のストーリーのプロパティを更新するタスクを定期的に実行することです。投票によるクエリの結果が少し古かったとしても問題ありません。

4

2 に答える 2

2

少し時期尚早の最適化を行っているようです。あなたがそれらを必要とすることが明らかになるまで、シャードされたカウンターをスキップします. あなたがそうするだろうと確信しているなら、ぜひ、それらから始めてください. 定期的なタスクを実行し、結果を各ストーリーのプロパティにキャッシュすることに関しては、これも時期尚早の最適化である可能性があります。

私はGoogle App Engineを直接使用した経験がないので、誰かが共有する情報を持っていることを願っています.

于 2010-08-22T22:01:15.220 に答える
1

定期的にデータを合計することは、カウンターのシャーディング分散に対抗するための良い戦略かもしれません。

他の場所で説明されているように、シャードなしでカウントするための他の戦略を試すこともできます。

http://blog.notdot.net/2010/04/High-concurrency-counters-without-sharding

(カウンターをmemcacheに保持し、蓄積された値を定期的にデータストアにフラッシュします)

わずかなカウントエラーに対してアプリはどの程度重要ですか?

于 2010-08-25T21:07:33.043 に答える