首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在中建模像flockDB这样的社交图

如何在中建模像flockDB这样的社交图
EN

Stack Overflow用户
提问于 2011-04-14 10:13:26
回答 2查看 495关注 0票数 4

FlockDB提供了一种非常好的方法来建模社交图:系统中只有两个实体,即用户和友谊。其中,用户代表图的顶点,友谊代表两个用户之间的边。如下所示:

用户(id,first_name,last_name,birth_data,registration_timestamp)

友谊(id,user1_id,user2_id,depth,其他友谊params .)

这种方法有许多优点。

relationship

  • You中的
  • 可以指定像朋友、密友这样的情谊对词,可以选择你的友谊是否是定向的。

我的问题是如何用Google AppEngine提供的DataStore来实现这一点。这是我的第一次尝试,但我不明白如何才能真正为友谊实体分配钥匙。

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2011-04-14 15:22:03

一种方法是像这样建模:

代码语言:javascript
复制
class User(db.Model):
 name = db.StringProperty()
 friends = db.SelfReferenceProperty(collection_name="subscribers")

这将是一个表示用户和朋友的简单模型。但我认为它会有两个缺点:

  1. ,因为友谊不是一个实体,所以我们不能给它分配属性--
  2. ,因为现在保存了一个集合,我不知道它查询的速度有多快,就像获取朋友的朋友一样。
票数 0
EN

Stack Overflow用户

发布于 2011-09-05 03:03:49

不要使用db.Key() (它是一个值,而不是属性类),而是使用db.ReferenceProperty(User)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5665342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档