2010-06-04 212 views
28

我想知道什么来存储持久性存储图的最佳途径的最好办法是,以供日后分析,搜索,聚类等什么是存储在图形持久存储

我看到的Neo4j作为一个选项,我很好奇,如果还有其他图形数据库可用。有没有人对大型社交网络如何存储其基于图的数据(或其他需要像模型一样存储图的网站,例如RDF)有所了解。

像Cassandra或MySQL的选项呢?

+0

泰坦:https://github.com/thinkaurelius/titan – jcadcell 2015-07-09 19:44:23

回答

0

你可以看看InfiniteGraph,这将很快(http://www.infinitegraph.com/)发布了测试版

如果这是用于商业用途,那么你会看到它面向的,将有更大的图形站点。社交网站建立了自定义解决方案,这些解决方案当时适用于他们。但是他们的内部解决方案比使用InfiniteGraph更受限制。像Cassandra或MySQL这样的产品并不是针对这个多对多的问题集而设计的。你可以做到吗?当然,但是这是很多手写代码,并且不可扩展。 让我们知道如果你有一个真正的项目,我们可以帮你找出你的图表需求。 谢谢, 沃伦 [email protected]

14

图形数据库:

  1. HyperGraphDB:通用,可扩展的,可移植的,分布式的,可嵌入的,开放源码的数据存储机制。
  2. InfoGrid:一个互联网图数据库与许多额外的软件组件,使图形基础上的REST富web应用程序的开发变得容易。
  3. vertexdb:支持自动垃圾收集的高性能图形数据库服务器。

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

图形库:

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

免责声明:我是从图表分析的角度来讲的。

有几种存储图形数据的文件格式:GraphML,GXL和其他几种。但存储通常不是问题。使用这些图表而不将它们完全加载到RAM中是棘手的部分。

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

对于实际分析,使用现有图分析库将所有数据加载到RAM中,如SNAP或请参阅This question

2

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

在Delver我们最终实现我们自己的非规范化的数据模型(基本上邻接表来表示图)在上GigaSpaces顶部RAM(一些信息可以在this presentation找到),自定义地图,减少代码查询和数据分析。如果你走这条路,Cassandra似乎是一个可行的开源平台。