29

我想知道将图形存储在持久存储中的最佳方法是什么,以便以后进行分析、搜索、聚类等。

我看到 neo4j 是一种选择,我很好奇是否还有其他可用的图形数据库。有没有人对更大的社交网络如何存储他们的基于图的数据(或其他需要存储类似图的模型的站点,例如 RDF)有任何见解。

像 Cassandra 或 MySQL 这样的选项呢?

4

4 回答 4

14

图数据库:

  1. HyperGraphDB:一种通用的、可扩展的、可移植的、分布式的、可嵌入的、开源的数据存储机制。
  2. InfoGrid:一个 Internet 图形数据库,带有许多附加的软件组件,使在图形基础上开发 REST-ful Web 应用程序变得容易。
  3. vertexdb:支持自动垃圾收集的高性能图形数据库服务器。

资料来源: http: //nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases

图形库:

  1. WebGraph是一个研究网络图的框架。从他们的页面 - “它提供了简单的方法来管理非常大的图表,利用现代压缩技术。”
  2. Dex是一个用于管理非常大的图或网络的高性能库。
  3. 这篇博客文章 - On Building a Stupidly Fast Graph Database - 提供了一些关于构建图形数据库的指南 - 他们使用的技术是“内存映射 I/O,基于磁盘的线性散列”。
于 2010-06-05T15:34:33.097 回答
4

免责声明:我是从图形分析的角度说的。

有几种用于存储图形数据的文件格式:GraphMLGXL和其他几种。但存储通常不是问题。在不将它们完全加载到 RAM 的情况下使用图表是棘手的部分。

RDF 模型过于通用,无法进行严肃的图形分析。如果您不介意您的分析速度很慢并自己编写算法,请使用现有的图形数据库 - 请参阅维基百科

要进行实际分析,请使用现有的图形分析库(如SNAP )将所有数据加载到 RAM 中,或查看此问题

于 2010-06-05T15:37:18.247 回答
2

这里没有绝对正确的答案;有多种选择,选择哪种严重取决于您的需求。通过大规模检索/遍历(例如社交网络和类似的后端),您很快就会遇到随机 I/O 瓶颈;我相信将您的图表存储在 RAM 中是目前唯一可行的做法。对延迟不敏感的应用程序有多种选择,包括neo4j(具有商业风味的开源)和Allegrograph(具有有限免费版的商业)。

在 Delver,我们最终在GigaSpaces之上的 RAM 中实现了我们自己的非规范化数据模型(本质上是一个表示图形的邻接表)(一些信息可以在本演示文稿中找到),并使用自定义 map-reduce 代码进行查询和数据分析。如果你走这条路,Cassandra似乎是一个可行的开源平台。

于 2011-02-20T10:31:36.257 回答
0

你可以看看 InfiniteGraph,它很快就会发布测试版(http://www.infinitegraph.com/

如果这是用于商业用途,那么您会看到它针对具有较大图表的站点。社交网站构建了定制的解决方案,这在当时对他们有用。但他们的内部解决方案比使用 InfiniteGraph 之类的解决方案更具限制性。像 Cassandra 或 MySQL 这样的产品并不是为这种多对多问题集而设计的。你能做到吗?当然,但它是大量的手写编码,并且不可扩展。如果您有一个真实的项目,请告诉我们,我们可以帮助您找出图表需求。谢谢,沃伦 wdavidson@objectivity.com

于 2010-06-05T15:12:05.847 回答