如何组织图数据库中的节点

时间:2012-04-23 10:27:52

标签: nosql neo4j graph-databases

我们正在构建图形数据库,我们想知道如何对图形结构进行建模。这个想法是让用户可以与几件事情(朋友,博客中的帖子等)联系起来。我们怀疑是否更好地拥有这样的中间节点:

User1 -+-> Friends -+-> User2
       |            |
       |            +-> User3
       |
       +-> Posts -+-> Post1
                  |
                  +-> Post2

或者,如果您将用户直接与他拥有的项目连接,请执行以下操作:

User1 -+-> User2
       |
       +-> User3
       |
       +-> Post1
       |
       +-> Post2

我们看到两种风格的好处和问题。我们很高兴听到有更多使用社交图谱的经验的人的意见。

1 个答案:

答案 0 :(得分:2)

首先要想到的是,如果你有许多(数千个或更多)不同类型的关系,你将遇到一个加载节点关系的当前问题(如果它尚未加载到缓存中)即使您只想获得某种特定类型的关系,也必须加载所有内容。我认为这个装载问题很快就会得到解决。

你可以记住的另一件事是,朋友可能不是很多,虽然帖子会和所有帖子直接连接到用户都会让你在帖子数量增加时遇到排序问题。这就是为什么我建议你把帖子放在用户的链接列表中,最新的一个。这将使它们按日期自然排序,如:

User -+-> Post3 --> Post2 --> Post1
  |
  +-> User2
  |
  --> User1