我想知道在持久存储中存储图形的最佳方法是什么,以供以后分析,搜索,聚类等。
我看到neo4j是一个选项,我很好奇是否还有其他图形数据库可用。有没有人对大型社交网络如何存储基于图表的数据(或其他需要存储图形模型的网站,例如RDF)有任何见解。
像Cassandra或MySQL这样的选项呢?
答案 0 :(得分:14)
图表数据库:
来源:http://nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases
图表库:
答案 1 :(得分:4)
免责声明:我是从图表分析角度发言的。
有多种文件格式可用于存储图表数据:GraphML,GXL和其他几种。但存储通常不是问题。使用图表而不将它们完全加载到RAM中是一个棘手的部分。
RDF模型过于通用,无法进行严格的图形分析。如果您不介意分析速度慢并且自己编写算法,请使用现有的图表数据库 - 请参阅wikipedia。
对于实际分析,使用现有的图形分析库(例如SNAP)将所有数据加载到RAM中,或者查看This question。
答案 2 :(得分:2)
这里没有绝对正确的答案;有多种选择,其选择严重取决于您的需求。对于大规模的检索/遍历(例如社交网络和类似的后端),您很快就会遇到随机的I / O瓶颈;我相信将图形存储在RAM中是目前唯一可行的实践方法。对延迟敏感度较低的应用程序有多种选择,包括neo4j(具有商业风味的开源)和Allegrograph(商业版有限免费版)。
在Delver,我们最终在GigaSpaces之上的RAM中实现了我们自己的非规范化数据模型(本质上是一个表示图形的邻接列表)(某些信息可以在this presentation中找到),并且可以自定义map-reduce用于查询和数据分析的代码。如果你走这条路,Cassandra似乎是一个可行的开源平台。
答案 3 :(得分:0)
你可以看看InfiniteGraph,它将很快发布用于测试版(http://www.infinitegraph.com/)
如果这是用于商业用途,那么您将看到它针对的是具有更大图表的网站。社交网站构建了定制解决方案,当时为他们工作。但他们的内部解决方案比使用InfiniteGraph这样的东西更具限制性。像Cassandra或MySQL这样的产品并不是针对这种多对多问题集而设计的。你可以做到吗?当然,但它是很多手写编码,而且不可扩展。 如果您有一个真实的项目,请告诉我们,我们可以帮助您找出图形要求。 谢谢, 养兔场 wdavidson@objectivity.com