SQL databases are really fast when you need all the information stored together in a record row, but they are a bad fit when you need to search for relationship patterns that are not already stored together in your database. A significant performance penalty is incurred for every additional table that needs to be joined for a query. That is why SQL databases are notoriously bad at deducting relationships from datasets. Graph databases however are really good at this task.
Neo4j, a very popular open source Graph database stores its data in a property graph. In combination with a graph query language called Cypher that is optimized for between-record pattern recognition, this storage pattern makes it easy to write queries that search for new patterns in a database and for objects that have a specified relationship with another object.
This makes graph databases excel at a number of tasks:
- Explore large non-uniform datasets
- Recommend content
In the workshop, we will set up a Drupal 7 site with Neo4j and Rules. The reason why we don’t go for Drupal 8 is because the Rules module is not ready yet. Using Rules and Cypher queries is the easiest way to showcase how graph databases can be integrated into Drupal. We will develop a module that displays different analytics / recommendations in blocks based on the data that is entered to Neo4j through Rules. In the second half, we can do a “bring your own site” workshop, where we discuss how we can use Neo4j with your Drupal 7 or Drupal 8 website.