Это мой первый вопрос здесь ... :) Хорошо .. Мне интересно, достиг ли кто-нибудь этого эффективным способом.
Я хочу поискать в друзьях друзей и, возможно, их друзей, чтобы узнать, присутствуют ли некоторые из них в моем хранилище данных.Я придумал несколько способов сделать это, но у всех них есть недостатки ..: /
Мой первый план состоял в том, чтобы сохранить сущность как
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-Я сталкиваюсь с этим, так что решение, использующее хранилище данных каким-либо умным графоподобным способом, вероятно, будет правильным решением.