2011-08-07 3 views
0

FacebookのIDを持つアカウントエンティティがあります。Google App Engineの大きなIN句のクエリ

クライアントは、すべてのfacebook ids(クライアントのfacebook friends)をサーバーに送信することがあります。

私たちは、クライアントが提供したfacebook idsのすべてのアカウントを選択します。

ルーピングとコールでは、各フェイスブックIDには、1000人以上の友達がいると考えられるため、かなり遅いようです。さらに、GAEはIN句で30問に制限されています。

誰も同じような状況でしたか?どのように扱ったのですか?

ありがとうございます!

答えて

1

モデルを使用するためのキーとしてFacebook IDを使用するモデルを設定できます。 get_by_key_name(key_names = fb_ids)fb_idsのキーを含むすべてのモデルを一度に取得します。

model = FBModel(key_name=fb_id) 
+0

が、これは、ユーザーが事前にサーバーにすべての彼のFacebookの友達をアップロードするか、単に彼のfacebook_idでアカウントのエンティティを更新する必要が意味するものではない:

class FBModel(db.Model): account = db.ReferenceProperty(reference_class=Account) 

モデルを作成する場合は? – dnkoutso

+0

facebookのapiまたはデータベースから友人データを取得しようとしていますか?明らかにあなたの友人の友人はあなたのFacebookのIDと情報を持っているあなたのためのアカウントを持っている必要があります。 –

+0

各クライアントは、Facebookの友達を受け取り、自分のデバイス(モバイルアプリ)に保存します。その後、GAEリクエストを実行すると、このデータベース全体をJSONArrayにシリアル化して送信します。 次に、サーバーはこのデータを取得し、クライアントが提供したセット内のすべてのアカウントを見つけようとします。 私はあなたの解決策がそれをするかもしれないと思う、私は何か類似のビデオを見た。 コメントがありましたら、私は興味を持っています:)そうでなければ、私はそれを試して、応答をマークします。 – dnkoutso