Try a Neo4j Graph Database Right Here, Right Now
What is it that a graph database enables you to accomplish that another type of database won’t? A Neo4j graph database lets you analyze, experiment with and accurately estimate the levels of relationship, influence and impact that elements of data (“nodes”) have on one another.
- If your goal is to ascertain whether a drug approved for treating one condition may be applicable in treating a completely different condition, a graph database can shed light on its prospects.
- If your aim is to determine whether rerouting shipping and freight-carrying vehicles could more efficiently and promptly deliver goods to market centers desperately in need of them, a graph database can give you the tools you need to evaluate this.
- If you’d rather not lease time on an academic supercomputer to attain a result that both your company and your species require (leaving us all with ample time to put that result to use) the right graph will cut through the clutter of traditional relational databases and document databases.
Put another way, a graph database is the right tool to use when the purpose of your inquiry is not just to recall the data you’ve already stored, which existing database structures do well enough. It’s to evaluate the depths, degrees and integrities of relationships within your data elements and point the way toward the solution you’re looking for.
A regular database is there to recall. A graph database is here to solve.
See It Now
In a special arrangement with The New Stack, Neo4j has set up a testbed for you to try using a fully prepopulated Neo4j AuraDB cloud-based, open source graph database engine. Your AuraDB console will open in a new tab, so you can read along here as you try things there. You don’t have to register or enter your name first. Though, we do hope you will register after you’ve discovered how Neo4j works and how it may play a problem-solving role in your organization that you may not have considered before. But first, we want you to use Neo4j to see what it does and how it works.
Now You See It
You may be familiar with using a database browser or console where you establish a connection with a database, enter SQL commands directly into a command line and see the results in a scrollable window. The Neo4j tool on the Test Drive page, conceptually speaking, isn’t all that different. Of course, right now it’s tailored for use with any of three sets of preimported sample data. The full cloud-based Neo4j AuraDB engine uses a full-scale browser of its own.
Here’s what you’re looking at: StackOverflow, as you may know, publishes its complete, up-to-date data on questions its users have fielded, and their responses, in portable data formats. It’s a huge database, so for the purposes of the Test Drive page, we extracted data around a set of 300 questions asked and answered about the Neo4j database.
The first test query you see when the Test Drive page opens is a statement written in the Cypher language, not SQL. A Cypher query asks Neo4j to reveal all the nodes (data entities represented in the graph by circles) whose relationships with other nodes match a pattern. This can be a very complex pattern, although it’s quite simple here. Cypher employs special characters to help you draw those patterns into the statements as though they were ASCII art.
Here’s this Cypher query up close:
MATCH (q:Question)<-[:ASKED]-(u:User)-[:PROVIDED]->(a:Answer) RETURN q, u, a LIMIT 10
As you know, the principal keyword in SQL for specifying data to be retrieved from a set is SELECT. Its Cypher counterpart is MATCH. Inside this MATCH statement, you can see where the parentheses ( ) enclose elements (nodes) that would be inside circles. Relationships in the graph are represented by arrows; those arrows are re-created here in Cypher, literally sticking through the names of properties.
Find Out Why and How
The purpose of every database is to group related information together so that it stays grouped. Every query retrieves the rest of the information in a group, or a record, when you supply it with part of the information from that group. A graph database is a subset of the database set. Not only does it store related data, but also why it’s related — the relationships. So when you query the database, you will see all the related data plus their relationships. And because those relationships were produced as a graph to begin with, the retrieved relationships may be displayed as a graph just as easily.
There are three key relationships in this data set: one representing a user asking a question, another representing a user receiving a response to a question and a third representing a user providing a response to a question. The Cypher statement declares three variables q, u and a to represent the three classes of nodes in this data set. And from the results mode buttons to the left of the results area, you can choose to see the results as a traditional list, or even in JSON.
But what we actually want here is a mapping of who asked what, and who responded. It’s through the visual projection of this data that we become fully informed. Picture in your mind the table produced by an SQL query that asks for q, u and a, all laid out in rows and columns. Now imagine the effort it would take for you to piece together the relationships between these three elements, and convey those relationships in a single model. You can’t really do it without a graph.
Now, you could invest in an add-on that re-interprets that product table in a graphical format, perhaps not unlike this graph. But if it’s the relationships you want from the beginning, then you could choose to use a graph database from the beginning and save yourself the headaches.
A graph database is not a relational database with a graph visualization tool mounted on top of it so it can spit out reports with circles and arrows that you paste into PowerPoints. It’s also not an add-on, attachment or accessory for the database you currently have. Rather, it’s a means of storing relationships between data elements, or nodes, along with the data. This way, your query can be focused on relationships, and you can make calculations and analyses based on relationships. A true graph database answers both how and why things are related to one another.
The first edit you might try is to copy the Cypher query from the results pane to the database prompt, and delete MATCH 10 from the end. Then using the controls on the lower right of the graph, zoom out to see the full graph for the complete data set of 300 entries.
Where from Here?
This is just a taste of the robust experience of using Neo4j with a complete set of data and analysis tools. You can take the next step without investing a single cent. You can register for AuraDB Free, set up a database in our fully managed cloud service and use the full Cypher language to create functions and analyses that you can incorporate into applications with the same languages you use now, including Python, Java and Node.js.
Here are some of the options open to you now:
- Chapter 1 of our new guide, “Graph Databases Explained,” introduces you to the transformative power of relationships in problem-solving.
- Learn more about the underappreciated aspects of graph database in this article from The New Stack.
- Neo4j GraphAcademy offers complete, self-paced, multipart video courses designed to build up your skills so you can add them to your résumé.
- Register now for Neo4j AuraDB Free and take your time learning about graphs and Cypher. There will never be a fee to use anything you’ve built on the Free tier.
- Explore more about the Cypher language in the Neo4j Cypher Manual.
- Watch Neo4j’s Chris Gioran give a step-by-step explanation of the principles and value of graph databases in his comprehensive video series, “Under the Hood.”
- Download your free copy of “Full Stack GraphQL Applications with React, Node.js, and Neo4j” by William Lyon, from Manning Publications.