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