0

私は、データストアで集計クエリを実行する方法について多くのことを読んできました (stackoverflow などを介して)。答えの優勢は、それは楽しい方法で行うことができないということです. order byしかし、それらの回答は時代遅れであり、同じ人々が、データストアなどで行うことはできないと主張する傾向があります.

現在存在しているように、実際ORDER BYにはデータストアで指定できます。ということで、集計も可能なのか気になります。

Alpha、Brave、Charie、Delta、Echo の 5 人の候補者がいるシナリオを考えてみましょう。そして10,000人の有権者。候補者とそれぞれの得票数を順番に取得したい。データストアでそれを行うにはどうすればよいですか? 私はJavaを使用しています。

また、余談ですが、答えがまだ「いいえ」であり、ファンインが最善の選択肢である場合: ファンイン スレッドは安全ですか? ファンインとは、各候補者が受け取る投票をカウントする明示的なカウンターを保持することを意味します (別の でtable)。複数のユーザーが同時に投票しているときに、データで競合状態やその他の障害が発生する可能性はありますか?

4

1 に答える 1

1

集計によって、データストアに投票の総数を計算させることを意味する場合、いいえ、データストアはそれを行いません。

あなたが説明していることを行う最良の方法は次のとおりです。

  • 候補ごとにシャード カウンターのセットを作成します (App Engine シャード カウンターの Google 検索)。
  • 誰かが投票すると、指定されたデリゲートのシャード カウンターを更新します。
  • 投票を読みたい場合は、デリゲートをクエリしてから、デリゲートごとにシャード カウンターをクエリし、それらを合計します。
  • パフォーマンスを向上させるための Memcache。ドキュメントで利用可能な GAE シャーディング カウンターの例は、これをよく示しています。
于 2013-05-30T21:53:45.757 に答える