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

标签 nosql neo4j graph-databases

我们正在构建一个图数据库,我们想知道如何对图结构建模。这个想法是让用户可以与几件事相关( friend 、博客中的帖子等)。我们怀疑是否有这样的中间节点更好:

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

或者,如果您直接将用户与其拥有的元素联系起来,如下所示:

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

我们看到了这两种风格的好处和问题。如果我们能听到具有更多使用社交图的经验的人的意见,那将是很棒的。

最佳答案

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

您要记住的另一件事是, friend 可能不会很多,尽管帖子会并且所有帖子都直接连接到用户也会让您在帖子数量增加时遇到排序问题。这就是为什么我建议您将帖子放在用户的链接列表中,最新的放在最前面。这将使它们按日期自然排序,例如:

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

关于nosql - 如何组织图数据库中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10278811/

相关文章:

javascript - 如何构建无需安装、仅客户端的数据库 Web 应用程序

jruby - bundler 无法识别平台?找不到 gem

javascript - 无法在 javascript 中建立 neo4j - bolt 驱动程序连接

sql - 如何编写一个选择查询或服务器端函数,从许多数据点生成一个整洁的时间流图?

graph-databases - 一键安装 - Dgraph - Gru

mysql - 什么样的数据库最适合存储音频文件?

python - 在 DynamoDB 表中存储项目,其中键和范围键可能重叠

MongoDB 所有具有整数值的字段的总和

node.js - 如何在代码中解析带引号的搜索查询

sql - 如何将 RDMS 数据库与图形数据库混合使用