# Consulting

## Consulting

The Aurelius team is versed in the theory of graphs/networks as well as in the technologies that are used in solving graph-related problems. A summary of the types of consulting services offered are provided below.

**Development**: Applying graphs to real-world problems requires the design and development of graph-based software. Aurelius supports clients via graph architecture design, domain modeling, data parsing, traversal/query development, and system deployment.**Analysis**: Numerous statistical techniques can be applied to a graph/network in order to distill patterns within the complex structure. The results of such statistics can help clients to better understand their domain, design more intelligent algorithms to exploit their domain model, and can be used to drive decision making in their organization.

We are experts in applying the following technologies to your graph related problems.

Titan is an Apache2-licensed, open source graph database. The distributed storage systems Cassandra, HBase, and Hadoop are leveraged to facilitate the representation and processing of massive-scale graphs within a multi-machine cluster.

TinkerPop is a free, open source graph technology stack. The technologies are compatible with numerous graph systems/databases from various open source and commercial vendors. Members of the Aurelius team are founders and contributors to TinkerPop.

Hadoop is a distributed storage (HDFS) and computing (MapReduce) framework that simplifies massive-scale data analysis. Aurelius is versed in Hadoop and its ecosystem and utilize this technology for cluster-oriented graph computation and analysis.

R Statistics is a rich statistical programming language and visualization environment that has numerous libraries that support graph/network analysis. The Aurelius team uses R to analyze and visualize graphs in order to expose patterns that are difficult to recognize using traditional statistical techniques.

## Typical Consulting Engagement

A typical consulting relationship with Aurelius may unfold as follows. A client has data in a traditional database like an RDBMS or in a large clustered environment such as HDFS or HBase. The client realizes the graph-nature of their data and wishes to exploit it using graph algorithms (e.g. recommendation, ranking, reasoning, etc.). The Aurelius team studies the data, defines a graph schema, and writes the parsers and synchronizers that map the current representation over to a graph representation within an appropriate graph engine solution. Next, we train on graph querying/traversing and help define and implement n-number of graph algorithms that are useful in the client’s domain (or as specified by the client). We perform standard graph analysis techniques to understand the statistics of the client’s graph in order to predict the performance characteristics of the algorithms. The ultimate goal is to provide real-time performance and thus, if necessary, make use of graph traversal optimization techniques (e.g. graph sampling, random walks, local convergence, path precomputing, etc.). Finally, our team coordinates with the client’s production team to deploy the graph solution and expose the algorithms to other systems within the client’s larger software architecture. Once a system is up and running, Aurelius can continue its relationship with the client via software maintenance, incorporating new data sources, defining and implementing new algorithms, graph-related training/lecturing, and/or a technology subscription/support package.

**Please contact us about applying our expertise to your problems.**