代表DAG(有向无环图)

时间:2010-10-10 01:37:00

标签: sql ruby-on-rails-3 nosql directed-acyclic-graphs

我需要在DAG中存储依赖项。 (我们正在以非常精细的水平绘制新的学校课程)

我们正在使用rails 3

考虑

  • 比它更深
  • 非常大
  • 我估计每个节点有5-10个链接。随着系统的增长,这将增加。
  • 许多读物,很少写
  • 最常见的是查找:
        
    • 第一和第二学位的依赖关系   
    • 搜索/验证依赖项

我知道SQL,我会考虑NoSQL。

寻找有关实施选项的良好比较的指示。

对我们可以从快速入手的内容感兴趣,但是稍后过渡到更强大/可扩展的内容会更少痛苦。

4 个答案:

答案 0 :(得分:12)

我在SQL中找到了建模有向非循环图的例子:

http://www.codeproject.com/KB/database/Modeling_DAGs_on_SQL_DBs.aspx?msg=3051183

答案 1 :(得分:4)

我认为图表数据库Ruby bindingsNeo4j即将推出的版本(目前为测试版)应该非常合适。它用于Rails 3.底层数据模型使用节点和定向关系/边缘以及两者上的键/值样式属性。为了扩展以读取为主的架构,Neo4j使用master/slave replication设置。

答案 2 :(得分:4)

您可以使用OrientDB作为图表数据库。它针对关系进行了高度优化,因为它们存储为链接而不是JOIN。具有1,000个顶点的双向图的加载需要几毫秒。

Rails的语言绑定尚不可用,但您可以将其与HTTP RESTful调用一起使用。

答案 3 :(得分:1)

您可能需要查看act_as_dag gem。

https://github.com/resgraph/acts-as-dag

对于那些可能需要一些背景知识的人来说,还有一些关于Dags with SQL的好文章。

http://www.codeproject.com/Articles/22824/A-Model-to-Represent-Directed-Acyclic-Graphs-DAG-o