我是图表数据库的新手,并且有一个问题可能很容易为你们解答。
如果我决定使用图形数据库(例如Neo4j)作为应用程序等社交网络,我是否还要保存该数据库中的个人资料信息和帖子,还是需要第二个数据库,如MySQL?
我找到的所有示例都只在图表数据库中保存了一些属性(例如名称和关系)。因此,我的问题。
非常感谢
答案 0 :(得分:1)
您可以将该信息直接存储在图形数据库中。它不仅可行,而且甚至建议使用,因为该信息可能会影响您要对数据库运行的各种遍历查询。
在任何时候,您可能希望为经常交互的用户创建单独的图层(通过帖子)。在图表数据库中掌握这些信息会很方便。
同样适用于个人资料信息。也许您只想在特定类型的配置文件(单人等)上运行遍历,然后您需要在图表数据库中掌握该信息。
我想说:除非你有特定的理由在图表数据库旁边使用MYSQL,否则你应该在图数据库中做所有事情。
要记住的一些事情:
额外关注:
所以我应该为每个配置文件创建一个节点,包含配置文件属性和与帖子节点的关系?
这有点棘手,答案是肯定的,但根据用户发布的帖子数量,该用户节点(顶点)可能会成为超级节点。 “超级节点”是具有不成比例的大量入射边缘的顶点。这可能会导致性能问题。为了解决这个问题,您需要确保图形数据库可以正确处理这些实例;通常通过实现以顶点为中心的索引。我有一段时间没有检查,但上次我做了Neo4j不支持这些。 OrientDb和Titan(以及其他人)这样做。如果Neo4j现在有一些支持,有人可以纠正我。
这将取决于你决定如何遍历图表,你认为你将需要在遍历中扫描多少外发边缘等等。一般来说,你需要通过弄清楚哪些查询来启动这个过程你要制作,然后相应地对图表进行建模。
Neo4j与OrientDb之间的区别有何不同?
Neo4j限制似乎在理论上被定义。从这里的额外评论来看,似乎他们计划很快增加它们。 OrientDb和Titan被认为是显着更大图形的数据库,因此目前为什么它们的限制更高。 实际上,即使这些限制是相当远的,真正的问题是“你打算击中他们”。我过去对此回答是肯定的,这就是我今天使用Titan的原因。但是Neo4j的局限性通常足以满足大多数人的需求。