Computer networks are probably the best example of graphs these days. I started therefore to consider graph database as an excellent tool for storing experimental results of my networking complexity analysis method. It’s a project that I’m doing (starting to do) in which I will try to create a better method of computer network complexity audit by combining few of already existing methods and by additionally enhancing some of their algorithms to get more precise results out of the whole thing.
The idea is that most of network complexity measurement mechanism rely strongly on graph theory in which most metrics for measuring network/graph complexity is related to connectivity, node distance, and similar graph characteristics but with no particular way of measuring implementation complexity nor operation complexity of resulting network. Furthermore, existing methods do not contain a way to evaluate network system from economic perspective in any way, which would greatly increase the use cases for this new method, specifically in planing and designing phases.
What that means? It means that network complexity evaluation method, which can evaluate future network design implementation from technical and economic perspective in the same time, could potentially help, not only engineers, to select the best feasible network solution but also help company’s executives to select the most cost-effective solution.
As you may know, normal, relational databases use tables which are related using index field in for of separate (mostly) first column in that table. The other table can relate to that index (mostly number) to catch the whole row of data from another table. An that’s it. You can save some data in one table, some other data in another and get out the information you need combining more tables without the need to have all the data inside one huge table and in this way avoiding data redundancy and creation of to big and hard to search data sets.
A graph has two types of elements, node and relationship. Each node is an entity like place, thing, person or something, and relationship is connecting two nodes describing how they are related.
Graph database is not using tables and relation between them. It is more focused on the connections between sets of nodes which carry most important parts of the data (relations). You have those nodes and the relations between the nodes (connections which are now the new tables). Connections between nodes have much more data than the relations in the “old” Databases.
Relations are just pointers which relate (usually in only one direction) one table cell to whole other row in other table inside that database.
In graph databases relations carry the important part of data, explaining how one entity is connected to another and how strongly or by which means. Nodes with more connections are usually more important that those with less connections etc. Nodes can also have some attributes but only those which describe in short the difference between nodes.
The great thing in graph databases is that data describing most real world systems, and then most computer systems and applications (because they copy real world systems in their way of work), is more elegantly and more precisely represented, saved, indexed and searched by graph database.
Idea – Plan
The idea and possible plan in my project is to build a Graph Database in which I will save all the attributes from my network design models in order to get the structure that will be used to evaluate the complexity of those suggested network topologies.
Basically, things like graph distances, weight, symmetry, centrality, global complexity, average complexity, normalized complexity, sub-graph count, total walk count, vertex accessibility etc. can all be part of complexity evaluation and data which represents those metrics is probably suitable to easily be saved into a graph database for advance handling and investigation.
Research project about the whole thing is in the beginning and I will surely write more about it here. Latest updates and eventually some work in progress can be seen here https://www.researchgate.net/project/Measuring-Computer-Network-Complexity and more updates are on the way shortly.