Telstra’s Graphie Award for Excellence in Data Discovery: Why Neo4j?

My First Neo4j Graph Database

My name is Harry Corfield, and I am a Data Architect at Telstra. I had not previously used Neo4j, although I have designed and developed systems using other databases and languages.

I was recently working on a project that was looking to understand our data landscape, and I recognized that it would be beneficial to model the data relationships using a graph database. This blog is about my personal experience developing my first Neo4j graph database.

The Neo4j GraphAcademy is a great place to start, as it offers several free training courses that provide a good introduction to the Neo4j Graph Data Platform including:

    • Overview of Neo4j 4.x
    • Querying with Cypher in Neo4j 4.x
    • Creating Nodes and Relationships in Neo4j 4.x
    • Using Indexes and Query Best Practices in Neo4j 4.x
    • Importing Data with Neo4j 4.x
The Overview of Neo4j 4.x course describes a graph database, graph data platform, and use cases. This helped me confirm that a graph database was suitable for my use case. This is an important step, as not all use cases are suitable for graph databases.

It was at this point that I decided to install the Neo4j Desktop, which provides a free development environment and utilizes a Neo4j server for other users.

The Neo4j AuraDB fully managed cloud service is also now available.

My next course was Importing Data with Neo4j 4.x, as the data sources I wanted to use were available in CSV (Comma Separated Values) files. While doing the course I started importing data using the LOAD CSV command to create nodes and relationships from a file for my graph database.

Cypher to create Nodes from a file:

LOAD CSV WITH HEADERS FROM ‘file:///<FileName>.csv’ AS row
MERGE (n:<NodeName> {id: row.<NodeId>)});

Cypher to create Relationships from a file:

LOAD CSV WITH HEADERS FROM ‘file:/// <FileName>.csv’ AS row
MATCH (<AttributeName1>:<NodeName1> {<AttributeName1>: row.<ColumnName1>})
MATCH (<AttributeName2>:<NodeName2> {<AttributeName2>: row.< ColumnName2>)})
MERGE (<AttributeName1>)-[:<RELATIONSHIP>]->(<AttributeName2>);

Now that I had created some graph nodes and relationships, I took the Querying with Cypher in Neo4j 4.x course. As I was already familiar with SQL (Structured Query Language), it was relatively easy to learn CQL (Cypher Query Language). Again, while taking the course I started performing Cypher queries on the graph nodes and relationships that I had created.

I would recommend that you start small and validate that what you’re doing will meet your use case requirements. Within a two-week sprint I was able to learn and install Neo4j, create nodes and relationships, query my graph database, and prepare a showcase to present to stakeholders.

The showcase provided valuable feedback that I was on the right track. It helped me identify other nodes, relationships, and queries that would be required, as well as identifying other stakeholders.

During the second sprint (week three/four) I did the Creating Nodes and Relationships in Neo4j 4.x course, while creating additional nodes, relationships, and Cypher queries for my project. I also completed the Using Indexes and Query Best Practices in Neo4j 4.x course, which helped me to create constraints for each node to ensure uniqueness, and indexes for the relationships to improve the performance of my Cypher queries.

Cypher to create a Constraint:

ON (n:<NodeName>) ASSERT n.<NodeId> IS UNIQUE;

Cypher to create an Index:

FOR (n:<NodeName>) ON (n.<AttributeName>);

While developing my graph database, I found the following Neo4j support information useful:

In an agile manner I continued to develop my graph database by adding new features and conducting showcases at the end of each sprint. During the fourth sprint (week seven/eight) I decided to review all the GraphAcademy Introduction to Neo4j 4.x training courses, as well as prepare to sit for the free Neo4j Certified Professional exam, which I passed. This approach helped consolidate my Neo4j knowledge and skills, as well as enhance my graph database.

For this Neo4j graph database development, I received the Telstra Networks & IT Group Executive award for Q1 FY22. This award recognized my leadership, dedication, and perseverance in identifying and building an industry leading Data Knowledge Map. It resulted in an improved data discovery roadmap, which empowered our people to make better data decisions, and saved both time and money.

I also showcased my Neo4j graph database to the Australian Neo4j team including Peter Philipp (General Manager – Neo4j ANZ) and Alexander Smart (Neo4j Enterprise Account Manager), who nominated my project for the annual GraphConnect Awards, otherwise known as the Neo4j Graphies. I was honoured to receive the 2021 Neo4j Graphie Award for Telstra Excellence: Data Discovery.

What other graph-based projects and initiatives do you think deserve some accolades? Get a head start on the 2022 Graphie Awards and get your nominations in today.

Nominate a Graph Superstar for 2022