1

私はGoogle App Engineのデータストアに取り組んでおり、イベントを管理するためのアプリを開発しています. 私は2つのエンティティを持っています:

- user
- event
    - attribute eventDate

ユーザーは 1 つ以上のイベントをフォローできるので、リンク テーブルを作成します。

- UserEvent
    -User key
    -Event key

私の問題は、eventDate 順に並べられた、ユーザーが後に続くイベントのリストが必要なことです。

どのようにできるのか?

私は3つの解決策を見つけましたが、誰も好きではありません...

  1. 注文されたすべてのイベントに対してクエリを実行し、UserEvent で発生するイベントが 1 つだけあるものだけを反復して選択します(おそらく数千のイベントがあるため、ユーザーは少数しかフォローしません..)
  2. すべてのユーザー イベント (userKey でフィルタリング) をクエリし、結果を順序付きリストに入れます(ページネーションなしですべてのイベントを一度にロードする必要があるため、好きではありません)。
  3. テーブル UserEvent に属性 eventDate を追加します(イベントに 3000 人のフォロワーがいる場合、3000 人の更新を行う必要があるため、私は好きではありません...)

ありがとうアレッサンドロ

4

2 に答える 2

0

このような非正規化が本当に気に入らない場合は、CloudSQL の使用を検討してください。

于 2012-04-27T12:08:38.663 に答える
0

特定のユーザーのイベントを常にクエリする場合は、イベントの ListProperty を User エンティティに格納することを検討できます。

- user
    - attribute eventList []key

エンティティの最大サイズ (現在は 1MB) によって制限されます。リストがインデックス化されている場合、エントリは 5000 に制限されます。

于 2012-04-27T12:10:53.763 に答える