メイン画面の Github/Bitbucket ニュース フィードのようなものを考えています。
複数のプロジェクト(数十または数百)を見ている複数のユーザー(数十または数千)がいます。各プロジェクトには、最新の更新ステータス メッセージがあります。
組み合わせた結果は次のようになります。
- プロジェクト A: 問題 #3 オープンからクローズへの変更
- プロジェクト B: @someuser が issue #231 についてコメントしました
- プロジェクト C: @anotheruser が問題 #1493 を開いた
- プロジェクト B: @ thirduser が issue #231 についてコメントしました
SQLを使用する場合、次のようなことを考えます
select * from notifi where projId in (<user's watching list>)
しかし、GAE の場合、これは同時に複数のクエリを作成するものとして実装されます。これは効率的ではありません。また、30 を超えるプロジェクトを見ているユーザーには機能しません ( https://developers.google.com/appengine/docs/python/datastore/gqlreferenceによると、同時に 30 を超えるクエリを実行することはできません)。
どうすれば似たようなものを実装できますか?