Understanding Graph Databases

Posted by Steve Sarsfield on Nov 13, 2018 2:07:20 PM
Find me on:

What Enterprise Architects should know about Graph

The description of graph databases that you get when you Google it are mostly academic. I see a lot of descriptions about graph databases that talk about seven bridges in Königsberg or Berners-Lee, the inventor of the internet. There are theories and visions which are fine, but for me, I still think it’s important to lead with the relevance. Why are graph databases important to you?

Imagine the data that’s stored in a local restaurant chain. If you were keeping track, you’d store customer information in one database table, the items you offer in another and the sales that you’ve made in a third table. This is fine when I want to understand what I sold, order inventory and who my best customer is. But what’s missing is the connective tissue, the connection between the items, along with functions in the database that can let me make the most of it.

A graph database stores the same sort of data, but is also able to store linkages between the things.  John buys a lot of Pepsi, Jack is married to Valerie and buys different drinks. I don’t have to run JOINs to understand how I should market to each individual customer.  I can see the relationships in the data without having to make a hypothesis and test it.

This new connected information layer does a lot for you. It’s not just about buyer intent, but it could be helpful in a lot of use cases and it is very helpful in machine learning or when you want analysis or inferencing to be done by the machine (see the table below).

Examples of applications for the semantic layer

Semantic Info Stored

Example

Use Case

Ownership

 

Susan owns a Honda. Who else owns a Honda?

Buyer Intent

Interest

Steve is interested in Football. Who else?

Designed by

Frank Lloyd Wright designed the Guggenheim. What else?

Knowledge Graph

<classification>

 

Guggenheim is a museum. What are other museums?

Connections

via port e.g. server1 connected via port 8080 to server2. Did this happen more than expected?

Network/IT operations

Is associated with 

 

gene is associated with cancer. What other genes?

Life Sciences

Many more


Since traditional databases are designed with tables, not the linked data, SQL won’t do anymore. This has given rise to SQL-like languages (but for linked data sets or graph data structures) like SPARQL, Gremlin and Cypher to name a few. A major difference is the analytical functions you need to act upon the linked data. If I wanted to find the most popular time to buy a certain product on your web site, or if I wanted to rank popularity of an item, for example, there’s new syntax for that. You need to learn the language of connected data to make the most of it.

Can’t you can do that with a RDBMS?

Yes, it is possible to create these linkages in a traditional Relational Database Management System (RDBMS). However, to perform these tasks in traditional databases, database administrators have toiled to maintain unique keys and reconstruct relationships with JOINs. If graph databases are used, both the subject and its relationship, known as subjects and predicates, are already known. There’s no need to reconstruct the connections.

Inferring that Zoe is the daughter of Mary if you have previously defined that Mary is the mother of Zoe is another example. You do not necessarily need to specifically define both relationships because graph databases are smart about this. By comparison, relational database cannot understand anything that isn’t defined. Therefore, this inferencing capability has clear value when looking at interests, households and communities.

Caveat – Graph databases have specialties

Like traditional RDBMS, graph databases can be either transactional or analytical. Choose your focus when you choose your graph database. For example, the popular Neo4J is focused on transactional (OLTP) graph database while AnzoGraph is an analytical (OLAP) graph database. It’s seemingly a subtle distinction when you are first trying graph databases. However, you may need a different engine for running quick queries that touch upon single entities (e.g. What car does Susan own?) and analytical queries that poll the whole database. (e.g. What is the average price for a car paid by people like Susan?). Graph OLAP databases are becoming very important as Machine Learning and AI grows since a number of Machine Learning algorithms are inherently graph algorithms and are more efficient to run on a graph OLAP database vs. running them on a RDBMS.

If you want to learn more about SPARQL, the W3C-defined standard language of Graph Databases, check out one of the many SPARQL tutorials online. There’s ample opportunity to try a graph database, like AnzoGraph.

Try the Free AnzoGraph Beta

Tags: Graph, Analytics, Graph Database

Subscribe to the Smart Data Blog!

Comment on this Blogpost!