FlockDB предоставляет очень хороший способ моделирования социального графа: в системе всего два объекта: Пользователь и Дружба. где Пользователь представляет вершины графа, а дружба представляет ребра между двумя пользователями. Как это:
Пользователь (id, имя, фамилия, имя, дата рождения, регистрационная отметка времени)
Дружба (id, user1_id, user2_id, глубина, другие параметры дружбы ...)
У этого подхода есть ряд преимуществ
- Вы можете указать параметры для дружбы, как друг, близкий друг, в отношениях
- Вы можете выбрать, является ли ваша дружба направленной или нет.
Мой вопрос: как реализовать это с помощью хранилища данных, предоставляемого Google AppEngine. вот моя первая попытка, но я не понимаю, как на самом деле назначить ключи сущностям дружбы.
class User(db.Model):
name = db.StringProperty()
age = db.IntegerProperty()
registeration_ts = db.DateTimeProperty(auto_now_add=True)
class FriendShip(db.Model):
user1 = db.Key() // key to some user in user1
user2 = db.Key() // key to some user in user2
creation_ts = db.DateTimeProperty(auto_now_add=True)
updated_ts = db.DateTimeProperty(auto_now_add=True)