Пересечение в Google App Engine - PullRequest
1 голос
/ 03 февраля 2011

Когда пользователь Facebook подключается к моему сайту, я хочу сузить список друзей пользователя Facebook до тех, которые уже зарегистрировались для моего сайта.

Итак, у меня есть два списка

  • Список в коде друзей Facebook пользователя (около 1000)
  • Таблица GAE всех пользователей FB, которые подписались на мой сайт (около 1000)

Самый эффективный способ сделать это, сделать один запрос для UID всех зарегистрированных пользователей FB и выполнить пересечение в коде?

Что было бы наиболее эффективным способом, если бы более 10 000 пользователей FB зарегистрировались, где их нельзя было получить по запросам в течение <30 секунд? </p>

1 Ответ

5 голосов
/ 03 февраля 2011

Немного переверни проблему на голове. Когда пользователь входит в систему, извлекает его список друзей и сохраняет числовые идентификаторы facebook в свойстве списка объекта пользователя. (Вы также можете использовать индексный объект ... посмотрите на доклад Бретта Слаткина по поводу разветвления в GAE.)

Что-то вроде

class User:
  friend_ids = db.ListProperty()

Когда новый пользователь входит в систему, просто выполните запрос и отфильтруйте friend_ids = :id. Это должно дать вам список существующих пользователей, которые являются друзьями вашего текущего пользователя . Который я считаю, на самом деле то, что вы хотите.

Пользовательский запрос, отфильтрованный по свойству списка, вернет пользователя, если запрашиваемый идентификатор содержится в списке, если вы с ним не знакомы. Документы здесь .

...