
My First Steps into Graph Databases: Learning Neo4j Fundamentals
Discovering a new way to think about data relationships: My journey learning Neo4j graph databases, from understanding graph theory to mastering Cypher and graph data modeling. Completed Neo4j Fundamentals, Cypher Fundamentals, and Graph Data Modeling Fundamentals certifications.
Peter Mangoro
When I first heard about graph databases, I'll admit I was skeptical. After years of working with relational databases—tables, joins, foreign keys—the idea of storing data as nodes and relationships felt... unconventional. But as someone who's always curious about new ways to solve problems, I decided to dive into Neo4j's Fundamentals course.
What I discovered was a completely different way of thinking about data—one that's more intuitive, more powerful, and honestly, more fun.
Certificates:
- Neo4j Fundamentals Certification
- Cypher Fundamentals Certification
- Graph Data Modeling Fundamentals Certification
Why Graph Databases?
Before diving into Neo4j, I had to understand: what makes graph databases different?
Traditional relational databases are great for structured data with clear relationships. But what happens when you need to understand complex, interconnected relationships? What if you need to explore connections of varying depth? What if the relationships themselves are as important as the data?
That's where graph databases shine.
The "Aha!" Moment
The course started with something I thought I knew: graph theory. But seeing it applied to databases was eye-opening. Graphs are mathematical structures consisting of edges and vertices—in Neo4j's world, these become relationships and nodes.
What clicked for me was understanding that Neo4j stores relationships as first-class citizens. In a relational database, relationships are implicit—you discover them through JOINs at query time. In Neo4j, relationships are stored directly, making traversal incredibly fast.
The key insight: Queries in graph databases are proportional to the amount of data touched during a query, not the size of data overall.
What I Learned: The Fundamentals
Graph Elements
The course introduced me to Neo4j's core building blocks:
Nodes: Represent individual records—things or facts. A person, a product, an event, a book.
Labels: Group nodes together and serve as starting points for queries. A node can have multiple labels (like :Person:Customer).
Relationships: Connect two nodes with exactly one start and end node. Each relationship has a single type.
Properties: Key-value pairs that can exist on both nodes and relationships.
When Graphs Make Sense
The course highlighted specific scenarios where graph databases excel:
- Understanding relationships between entities: Perfect for social networks, recommendation systems, or organizational charts
- Hierarchical problems: Family trees, organizational structures, file systems
- Exploring relationships of varying depth: "Find all friends of friends" queries
- Route and path evaluation: Navigation, logistics, network analysis
Common Use Cases
Learning about real-world applications helped me see the practical value:
- E-commerce platforms combine ratings, purchase history, and browsing history for real-time recommendations
- Investigative journalism (like ICIJ) uses Neo4j to explore networks of global companies and identify persons of interest
- Enterprise systems use graphs for planning, cost analysis, impact analysis, and troubleshooting
The Neo4j Advantage
What makes Neo4j special? It's a native graph database designed specifically for graph traversal.
In relational databases, JOINs are computed at read-time. In Neo4j, relationships are stored in a way that allows for quick pointer-chasing in memory. This means:
- Faster queries: Traversing relationships is incredibly fast
- Scalable: Performance scales with the data you touch, not total data size
- Intuitive: The data model matches how we naturally think about relationships
Modeling Rules
One of the most valuable lessons was learning how to model data in a graph:
Nodes typically represent things: Person, Product, Event, Book, Subway Station
Relationships are typically verbs:
- Personal connections:
(:Person)-[:KNOWS]->(:Person) - Facts:
(:Person)-[:LIVES_IN]->(:Location) - Hierarchies:
(:Parent)-[:PARENT_OF]->(:Child)
Verbs can also be nodes: When you need to associate multiple facts with an action. For example, grouping multiple product purchases through a single (:Order) node.
This modeling approach felt more natural than designing tables and foreign keys.
Writing My First Cypher Queries
Learning Cypher—Neo4j's query language—was surprisingly intuitive. The syntax reads almost like natural language:
// Find all people who know someone who lives in New York
MATCH (p:Person)-[:KNOWS]->(friend:Person)-[:LIVES_IN]->(city:City {name: "New York"})
RETURN p.name, friend.name
Coming from SQL, Cypher felt more declarative and easier to understand. Instead of thinking about JOINs and WHERE clauses, I could describe the pattern I wanted to find.
Mastering Cypher: The Query Language
After completing the Fundamentals course, I immediately dove into Cypher Fundamentals to deepen my understanding of Neo4j's query language. This course focused on the practical aspects of working with graph data.

What I Learned in Cypher Fundamentals
The course covered essential CRUD operations in Cypher:
Reading Data (Querying):
- Using
MATCHto find patterns in the graph - Filtering with
WHEREclauses - Returning specific properties or entire nodes
- Understanding pattern matching and relationship traversal
Writing Data (Creating):
- Creating nodes with
CREATE - Establishing relationships between nodes
- Setting properties on both nodes and relationships
- Using
MERGEto avoid duplicates
Modifying Data (Updating):
- Updating node and relationship properties with
SET - Removing properties with
REMOVE - Deleting nodes and relationships with
DELETE - Understanding when to use
DETACH DELETE
Best Practices:
- Writing efficient queries
- Using indexes effectively
- Understanding query performance
- Following Cypher style guidelines
The Power of Cypher Patterns
What struck me most was how Cypher patterns directly represent the graph structure. A query like:
MATCH (person:Person)-[:KNOWS]->(friend:Person)
WHERE person.name = "Alice"
RETURN friend.name
This reads almost like English: "Match a person named Alice who knows friends, and return the friends' names." The pattern (person:Person)-[:KNOWS]->(friend:Person) visually represents the relationship structure.
CRUD Operations in Graphs
Coming from SQL, I expected CRUD operations to be similar, but they're actually more intuitive in Cypher:
- Create:
CREATE (p:Person {name: "Alice"})- creates a node with properties - Read:
MATCH (p:Person) RETURN p- finds and returns nodes - Update:
MATCH (p:Person {name: "Alice"}) SET p.age = 30- updates properties - Delete:
MATCH (p:Person {name: "Alice"}) DELETE p- removes nodes
The syntax is cleaner and more expressive than SQL for graph operations.
Graph Data Modeling Fundamentals
After Cypher Fundamentals, I completed Graph Data Modeling Fundamentals to learn how to design graph schemas and build instance models. This course covered creating graphs and refactoring them for clarity and efficiency.

Certificate: View Graph Data Modeling Fundamentals Certification
What I Learned
Understanding the graph data model
- What a graph data model is and how it differs from relational modeling
- How to describe a graph data model in terms of nodes, relationships, labels, and properties
Modeling and creating nodes
- How to model nodes for a domain (instance model)
- Creating nodes that represent the right entities with appropriate properties
Modeling and creating relationships
- How to model relationships between nodes
- Creating relationships for an instance model with the right types and properties
Testing the graph data model
- How to validate and test a graph data model
- Verifying that the model supports the queries and use cases you need
Graph refactoring
- Refactor to add labels: Introducing or refining labels on nodes to improve queryability and organization
- Eliminate duplicate data: Removing redundancy and normalizing structure in the graph
- Add specific relationship types: Replacing generic relationships with clearer, more specific relationship types
- Add intermediate nodes: Introducing nodes between existing nodes to represent events, actions, or other concepts (e.g.
(:Person)-[:PLACED]->(:Order)-[:CONTAINS]->(:Product)) and improve query flexibility
This course tied together the concepts from Neo4j Fundamentals and Cypher Fundamentals and showed how to design graphs that are both clear and efficient to query.
Key Takeaways
1. Relationships Matter
In graph databases, relationships aren't just connections—they're data. You can store properties on relationships, query them directly, and traverse them efficiently.
2. Performance Scales Differently
Graph databases excel at relationship-heavy queries. A query that might require multiple JOINs in SQL can be a simple pattern match in Cypher.
3. Modeling is More Intuitive
Modeling data as nodes and relationships often matches how we naturally think about problems. This makes the database schema easier to understand and maintain.
4. Use Cases Are Specific
Graph databases aren't replacing relational databases—they're solving different problems. When relationships are central to your use case, graphs are powerful.
What's Next?
After completing Neo4j Fundamentals, Cypher Fundamentals, and Graph Data Modeling Fundamentals, I have a solid foundation in graph databases. The next courses I'm considering:
- Importing CSV data into Neo4j: Practical skills for getting data into Neo4j
- Graph Data Science: Using graph algorithms for insights
I'm particularly excited about exploring:
- Real-world applications: Building recommendation systems or network analysis tools
- Integration: Combining Neo4j with my existing data analytics workflows
- Advanced Cypher: Complex queries, aggregations, and performance optimization
Resources for Learning More
Neo4j has an incredible ecosystem of learning resources:
- Documentation: neo4j.com/docs/
- Community: community.neo4j.com
- Sandboxes: sandbox.neo4j.com for hands-on experimentation
- GraphAcademy: graphacademy.neo4j.com for certifications
- Graph Gists: neo4j.com/graphgists/ for use case examples
Reflection
Learning Neo4j has changed how I think about data. Coming from a background in relational databases and data analytics, I initially saw graphs as just another tool. But they're more than that—they're a different paradigm for understanding relationships.
The course was well-structured, practical, and gave me a solid foundation. Earning the certification felt like validation that I understood the fundamentals, but more importantly, it opened my eyes to a new way of solving problems.
I'm excited to continue exploring graph databases and see how they can enhance my data analytics projects. Whether it's recommendation systems, network analysis, or understanding complex relationships in healthcare data, I now have a new tool in my toolkit.
Certificates:
- Neo4j Fundamentals Certification
- Cypher Fundamentals Certification
- Graph Data Modeling Fundamentals Certification
Course: Neo4j GraphAcademy
This blog post reflects my personal learning journey with Neo4j. I've completed Neo4j Fundamentals, Cypher Fundamentals, and Graph Data Modeling Fundamentals, and I'm excited to continue exploring graph databases. If you're curious about graph databases or have questions about getting started, feel free to reach out!
Predicting Hospital Readmissions: A Machine Learning Journey
How I built three ML models to predict 30-day readmissions in diabetes patients using Logistic Regression, CART, and Random Forest
Building a Serverless ETL Pipeline on AWS: From Raw Data to Interactive Dashboards
How I built a complete data analytics pipeline using AWS serverless services—processing CSV files, cleaning data, enabling SQL analytics, and serving insights through interactive dashboards—all for less than $2/month.