Web applications 如何在GoogleAppEngine中建立类似flockDB的社交图模型
FlockDB提供了一种非常好的建模社交图的方法:系统中只有两个实体:用户和友谊。其中,用户表示图的顶点,友谊表示两个用户之间的边。像这样: 用户(id、名、姓、出生数据、注册时间戳) 友谊(id、user1\u id、user2\u id、深度、其他友谊参数…) 这种方法有许多优点Web applications 如何在GoogleAppEngine中建立类似flockDB的社交图模型,web-applications,google-app-engine,Web Applications,Google App Engine,FlockDB提供了一种非常好的建模社交图的方法:系统中只有两个实体:用户和友谊。其中,用户表示图的顶点,友谊表示两个用户之间的边。像这样: 用户(id、名、姓、出生数据、注册时间戳) 友谊(id、user1\u id、user2\u 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)
一种方法是这样建模:
class User(db.Model):
name = db.StringProperty()
friends = db.SelfReferenceProperty(collection_name="subscribers")
这将是一个代表用户和朋友的简单模型。但我认为它有两个缺点:
db.ReferenceProperty(User)
代替db.Key()
(这是一个值,而不是属性类)