[Global GraphHack] Graphsplaining

With the help of @mckenzma and @mdfrenchman, I am happy to present Graphsplaining - your all-in-one solution to optimizing your graph. By evaluating your current graph and queries, Graphsplain will 'splain ways to help make your graph faster, stronger, and graphier.

TL;DR; A recommendation engine for cypher performance tuning.

Its a full stack tool that will watch your graph, record what it sees, and highlight potential performance bottlenecks and possible indexes you might want to add. It allows you to define your own checks (performed against the explain Plan of each of your queries) for things such as cartesian products, or EAGER plans when the Statement has USING PERIODIC COMMIT, or anything you want!

It stores all the information IN a graph (a separate one that lives in a docker container so you don't clutter your own production/dev graph), to allow you to graph your graph.

It will, if your main graph is running enterprise, scrap the query log and store that data.

And it ships today with a frontend with some charts based on the data currently found (these are live! run more queries and they will update :slight_smile: some tables about performance tuning (potential indexes and bottle necks), and the ability to review current performance checks and create new ones.

In the future, perhaps some new charts and some additional pre-defined performance checks (or any other features the community might suggest!) In any case, it was a fun project to throw together and hopefully will help keep a watch out for some performance tuning you could do!

In honor of Graphhack, Graphsplaining is currently live (with the Movie dataset and Northwind dataset in the "main" graph):

Graphsplaining Frontend
Graphsplaining Graph (Movie/Northwind)

If you want to run some read queries against the database, I set up a guest user:
username: guest
password: explain

Have fun!