1. Neo4j the graph database
1/14/2020 10:46:25 AM
Neo4j the graph database
Neo4j,Database,Michael Hunger
https://appdevelopermagazine.com/images/news_images/Neo4j-the-Graph-Database-App-Developer-Magazine_u30t564b.jpg
App Developer Magazine

Neo4j the graph database



Richard Harris Richard Harris in Open Source Tuesday, January 14, 2020
25,236

We talked with Michael Hunger from Neo4j to find out what their company is all about. Neo4j is an open-source, native graph database that provides an ACID-compliant transactional backend for your applications.

ADM: What is Neo4j?

Hunger: Neo4j is an open-source, native graph database that provides an ACID-compliant transactional backend for your applications. Initial development began in 2003, but it has been publicly available since 2007. Neo4j is referred to as a native graph database because it efficiently implements the property graph model down to the storage level. This means that the data is stored exactly as you whiteboard it, and the database uses in-memory pointers to navigate and traverse the graph.

As the category-defining graph database platform, Neo4j powers applications tackling artificial intelligence, fraud detection, real-time recommendations, and master data management. Collectively, the Neo4j community has been using graph technology to solve some of society’s most pressing problems: climate change, curing cancer, accelerating humanity’s journey to Mars, advancing gender equality, improving government transparency, and pushing the boundaries of human knowledge.

ADM: For those that are confused, what's the difference between Neo4j and a relational database?

Hunger: Neo4j is a graph database that, simply put, is designed to treat the relationships between entities as equally important to the data on the entities itself. It is intended to hold data without constricting it to a pre-defined model. Instead, the data is stored as it’s first drawn out – showing how each individual entity connects with or is related to others.

Relational databases operate in an entirely different way. They store highly-structured data in tables with predetermined columns of specific types. Due to the rigidity of their organization, relational databases require developers and applications to strictly structure the data used in their applications. Connections are represented there via artificial foreign-key constraints that are used to join tables at query time, not like a graph database at insertion with persisted relationships.

ADM: Why are developers turning to graph database technology?

Hunger: There are many technical reasons why a graph database platform is superior to other technologies for connected-data applications — power, performance, flexibility, and developer productivity to name a few. Those technical advantages drive very significant business reasons for selecting graph technology as the right platform for many classes of modern applications.

For decades, relational methods have plagued software developers with the constant need to translate from business objects into relational tables and back again. In their infancy, relational systems were more flexible than the older technologies they replaced. But as relational systems grew in complexity, their sheer number of tables and joins often crippled system maintainability and performance.

Graph applications avoid the disconnect between the technical and business worlds by maintaining data in a rich model of entities and their relationships rather than in tables. And as a result, everyone—including developers, system architects, and business managers—can use the same understandable graph concepts to create data models and system designs that transform directly into applications.

ADM: What types of applications are the best use cases for graph technology? What are some of your favorites?

Hunger: The data demands of modern businesses present imposing performance requirements on today’s applications. Users expect sub-second response times from web applications, even those that integrate data from myriad disparate sources.

Relational systems cannot reliably deliver this level of responsiveness. As relational datasets grow in size and complexity, table indexes and joins become unwieldy and inefficient. And all too often, existing relational schemas fall apart when users start asking questions that were unforeseen when the system was first designed. The result? Application performance, user productivity, and corporate image suffer severely.

In contrast, a native graph database uses index-free adjacency to turn complex joins into fast graph traversals and millisecond response times regardless of dataset size. The rapid response of graph applications—just like responsiveness in business—conveys quality, order, and dedication that translates directly into customer confidence, loyalty, and revenue.

The beauty of graph database technology is that it can be used across several industries, markets, and verticals.  Today, thousands of organizations from startups to Fortune 1,000 companies use Neo4j to build new and innovative applications that leverage connections in data such as recommendations, impact analysis for network and IT operations, real-time routing for logistics and the next-generation business applications such as master data management, identity, and access management, content management, fraud detection, portfolio and risk management.

ADM: Is there a technology stack that works particularly well for building applications backed by graph databases?

Hunger: As many applications are built upon business object models which map directly to a graph structure, most stacks are a good fit. Especially if you can leverage one of the official drivers for JavaScript, Java, Python or .Net. As the Neo4j query language Cypher can return results as graphs, trees, and tables you can consume them in the shapes you need.

In the last 3 years, one stack has especially evolved to be a prime fit for graph databases and that is GRANDstack, which stands for GraphQL, React, Apollo and Neo4j Database. GraphQL being an API query language that makes front-end and API development easier sees "your business data as a graph" to expose. Based on a typesafe schema of your domain, GraphQL is able to shape queries for data based on the needs of the user interface and minimize roundtrips. It was created at facebook but is now in widespread use. The GRANDstack combines the modern application development tools and empowers developers to use a clean and low-code approach for serving comprehensible APIs backed by a real graph database.

ADM: Graph database skills are in demand, how can developers build these skills?

Hunger: Neo4j, and especially our developer relations team has made developer education one of the main priorities over the last 10 years. There are of course countless articles, videos, examples available. You can also thoroughly gain graph databases skills with our self-paced online courses and then get certified as a Neo4j Professional. Luckily a number of high-quality books from publishers like O'Reilly, Manning, and Apress are available. The canonical O'Reilly "Graph Databases" and "Graph Algorithms" books even for free to download. In the large graph user community developers can ask questions and help each other.

ADM: Where do you see the community going from a technology perspective?

Hunger: There is definitely a clear trend towards cloud hosted infrastructures, from managed databases to serverless functions and low-code approaches. On all levels of the development stack we see a very active evolution, be it in the runtimes like the JVM, middleware like Kafka or Akka, the API layers with GraphQL and the frontend with React and Vue.js. To reduce time to market, I think more opinionated stacks will continue to dominate, that favor convention over configuration and allow quick turnaround times for application development. An ongoing challenge is, of course, the management of highly distributed and complex systems (microservices) and software architectures, an area that graph databases are also widely used for.

About Michael Hunger

About Michael Hunger

Michael Hunger is the Director of Developer Relations at Neo4j. He has been passionate about software development for more than 25 years. For the last 10 years, he has been working on the open source Neo4j graph database filling many roles, most recently leading the Neo4j Labs efforts. As caretaker of the Neo4j community and ecosystem he especially loves to work with graph-related projects, users, and contributors.

As a developer Michael enjoys many aspects of programming languages, learning new things every day, participating in exciting and ambitious open source projects and contributing and writing software related books and articles. Michael spoke at numerous conferences and helped organized several of them. His efforts got him accepted to the JavaChampions program. Michael helps kids to learn to program by running weekly girls-only coding classes at local schools.