can QuickGraph support these requirements? (includes database persistence support)

二次信任 提交于 2019-12-25 12:08:17

问题


Would QuickGraph be able to help me out with my requirements below?

(a) want to model a graph of nodes and directional relationships between nodes - for example to model web pages/files linked under a URL, or modeling IT infrastructure and dependencies between hardware/software. The library would include methods such as

* Node.GetDirectParents()   //i.e. there could be more than one direct parent for a node
* Node.GetRootParents()  //i.e. traverse the tree to the top root parent(s) for the given node
* Node.GetDirectChildren()
* Node.GetAllChildren()

(b) have to persist the data to a database - so it should support SQL Server and ideally SQLite as well.

If it does support these requirement then I'd love to hear:

  1. any pointers to any parts of QuickGraph to dig into?

  2. what is the best concept re it's usage in terms of how to use database persistence - is it a simpler design to assume every search/method works directly on the database, or does QuickGraph support smarts to be able to work in memory and the "save" to database all changes at an appropriate point in time (e.g. like ADO.net does with DataTable etc)

Thanks in advance


回答1:


Greg,

a. Yes, Quickgraph can fairly easily search the nodes in this manner. I've already provided one example in your other question.

b. As far as I know, SQL serialization is not "built-in" to QuickGraph; you'd have to build your own custom implementation. Since most graphs represent more than just a simple list of vertices and nodes, it would be pretty hard to accomplish this automatically (and natively) in QuickGraph, but fairly simple to implement yourself.

  1. You might check out the GraphML serialization section in the QuickGraph source. That may give you some hints to get started.
  2. QuickGraph works in memory, it doesn't work "against" a persistent store and isn't designed to (since persistent stores are pretty slow generally). So, you'd need to save the information manually. However, you can monitor different QuickGraph events like VertexAdded, VertexRemoved, EdgeAdded, and EdgeRemoved to determine when the graph has changed, and then perform serialization at those times.

-Doug



来源:https://stackoverflow.com/questions/2718241/can-quickgraph-support-these-requirements-includes-database-persistence-suppor

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