Поиск api на графике Facebook с помощью Google App Engine - PullRequest
2 голосов
/ 03 марта 2011

Это мой первый вопрос здесь ... :) Хорошо .. Мне интересно, достиг ли кто-нибудь этого эффективным способом.

Я хочу поискать в друзьях друзей и, возможно, их друзей, чтобы узнать, присутствуют ли некоторые из них в моем хранилище данных.Я придумал несколько способов сделать это, но у всех них есть недостатки ..: /

Мой первый план состоял в том, чтобы сохранить сущность как

class Ent(db.Model):
  facebook_id = db.StringProperty()
  friends = db.StringListProperty()
  other_ents_count = db.IntegerProperty()

class OtherEnt(db.Model)
  ent = db.ReferenceProperty(Ent)
  #some properties I would possibly like to filter over

, а затем просто создать сущностидля каждого Facebook-идентификатора, входящего в мое приложение

Чтобы выполнить поиск, вы должны запросить Ent-сущность с facebook_id в качестве ключа

Ent.get_by_key(facebook_id).filter(other_ents_count>0)

Проблема сейчас в том, что этот график взрывается отсюда,потому что мне нужно сначала сделать запрос для зарегистрированных пользователей, скажем, 200-500, а затем запрос для их друзей 200-500 * 200-500 ..

Я решил использовать mapreduce, чтобы сделать его параллельным, но я еще не определился с этим .. Есть ли кто-нибудь, кто имеет опыт работы с этим, у кого есть лучшее решение для этого?

Следует отметить, что у меня есть доступ к списку друзей любого Facebook-Я сталкиваюсь с этим, так что решение, использующее хранилище данных каким-либо умным графоподобным способом, вероятно, будет правильным решением.

1 Ответ

1 голос
/ 03 марта 2011

Я согласен с комментарием Ника, но я чувствую, что это особенно тяжело для GAE. Графовые базы данных больше подходят для этой проблемы.

Как говорится, вы можете получить что-то, работающее с GAE, используя фильтры Блума .

Фильтр Блума сузит количество записей, которые вы должны искать. Это, наряду с тем, что задается в Пересечение в Google App Engine , может привести вас к решению. (Обязательно прочитайте мой комментарий )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...