ARTICLES
Graph Service - Proof of Concept
The Topology Map in OpenNMS has some architectural problems. Mainly that there is no "service layer" implemented, which causes mostly performance issues. Besides this no API or persistence model is enforced. This prevents easy integration with 3rd party applications or even provide a new UI implementation.
Therefore I started playing around with a new Topology implementation (See issue HZN-1452) for more details).
In order to not confuse it with existing implementations, it is called Graph Service or Graph Engine here.
The core of this implementation should be a Graph Service which works on a pre-defined Graph Model to allow for an easier integration with other systems,
as well as to persist existing topologies and also expose them either as XML or JSON.
A first prototype was implemented focussing mostly on the following problems:
-
Loading of the Graph is asynchronous and only if the graph is fully loaded, it is available. While requests for the same graph, will still return the already loaded version. If the graph reloads, it is replacing the existing graph when fully loaded.
-
The graph MUST not always be loaded. The prototype however did that.
-
A clear model, which can be used to share Graphs within OpenNMS
-
A clear model to export/import Graphs
-
Possibilty to persist graphs (e.g. into postgres, or later in a graph database)
-
Better SearchProvider implementation
-
Add capability to lazy load heavy properties to a vertex/edge, to improve performance.
-
Detect changes to implement some kind of timeline and only send updates which allows to build graphs over time
The prototype is in a Proof-Of-Concept branch and can be reviewed here