может ли QuickGraph поддерживать эти требования? (включает поддержку постоянства базы данных) - PullRequest
0 голосов
/ 27 апреля 2010

Сможет ли QuickGraph помочь мне с моими требованиями ниже?

(a) хотят смоделировать график узлов и направленных отношений между узлами - например, для моделирования веб-страниц / файлов, связанных по URL-адресу, или для моделирования ИТ-инфраструктуры и зависимостей между аппаратным и программным обеспечением. Библиотека будет включать такие методы, как

* 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) необходимо сохранить данные в базе данных - поэтому он должен поддерживать SQL Server и, в идеале, SQLite.

Если это действительно поддерживает это требование, то я хотел бы услышать:

  1. любые указатели на любые части QuickGraph копаться?

  2. какова лучшая концепция? использование с точки зрения того, как использовать Постоянство базы данных - это более простой дизайн, чтобы принять каждый поиск / метод работает непосредственно на база данных, или поддерживает QuickGraph ум, чтобы иметь возможность работать в памяти и "сохранить" в базе данных все изменения в соответствующей точке время (например, как ADO.net делает с DataTable и т. Д.)

Заранее спасибо

1 Ответ

1 голос
/ 06 мая 2010

Грег

а. Да, Quickgraph может довольно легко искать узлы таким образом. Я уже привел один пример в вашем другом вопросе .

б. Насколько я знаю, сериализация SQL не является «встроенной» в QuickGraph; вам придется создать свою собственную реализацию. Поскольку большинство графиков представляют собой нечто большее, чем просто список вершин и узлов, было бы довольно сложно выполнить это (автоматически) в QuickGraph, но довольно просто реализовать это самостоятельно.

  1. Вы можете проверить раздел сериализации GraphML в источнике QuickGraph. Это может дать вам несколько советов для начала.
  2. QuickGraph работает в памяти, он не работает «против» постоянного хранилища и не предназначен для этого (поскольку постоянные хранилища обычно работают довольно медленно). Итак, вам нужно сохранить информацию вручную. Однако вы можете отслеживать различные события QuickGraph, такие как VertexAdded, VertexRemoved, EdgeAdded и EdgeRemoved, чтобы определить, когда график изменился, а затем выполнить сериализацию в это время.

-Doug

...