Representing a DAG (directed acyclic graph)

穿精又带淫゛_ 提交于 2019-12-03 09:16:52

问题


I need to store dependencies in a DAG. (We're mapping a new school curriculum at a very fine grained level)

We're using rails 3

Considerations

  • Wider than it is deep
  • Very large
  • I estimate 5-10 links per node. As the system grows this will increase.
  • Many reads, few writes
  • most common are lookups:
    • dependencies of first and second degree
    • searching/verifying dependencies

I know SQL, I'll consider NoSQL.

Looking for pointers to good comparisons of implementation options.

Also interested in what we can start with fast, but will be less painful to transition to something more robust/scalable later.


回答1:


I think the upcoming version (beta at the moment) of the Ruby bindings for the graph database Neo4j should be a good fit. It's for use with Rails 3. The underlying data model uses nodes and directed relationships/edges with key/value style attributes on both. To scale read-mostly architectures Neo4j uses a master/slave replication setup.




回答2:


I found this example of modeling a directed acyclic graph in SQL:

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




回答3:


You could use OrientDB as graph database. It's highly optimized for relationships since are stored as link and not JOIN. Load of bidirectional graph with 1,000 vertices needs few milliseconds.

The language binding for Rails is not yet available, but you can use it with HTTP RESTful calls.




回答4:


You might want to take a look at the act_as_dag gem.

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

Also some good writing on Dags with SQL for people that might need some background on this.

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



来源:https://stackoverflow.com/questions/3898637/representing-a-dag-directed-acyclic-graph

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!