It’s All in the Relationships
Like a complex system grid or an air-traffic-control map, a graph database is represented as a network of nodes and connections called a labeled property graph. The nodes, which appear as circles or squares, represent entities such as people, products, companies or orders.
In Neo4j, the connections between database nodes are called relationships, and those relationships are as important as the nodes they connect. Each relationship is directional and knows its beginning and ending node, and each node knows about all other nodes with which it has an inbound or outbound relationship—an advantage known as index-free adjacency.
Native Graph Storage and Processing
But a property graph is a lot more than a picture. It actually describes how you access and query information in the database. To maximize efficiency and performance, a graph database platform must store and access data as it appears in the database’s property graph. A database platform that employs such an approach is known as a native graph database.
Graph Imposters Pay the Price
For datasets that are connected, complex or changing, non-native graph database approaches are inherently flawed with performance, integrity, ease-of-use and scalability risks.
Relational databases bolt on extra processing layers that translate graph queries into relational-table-based storage and processing models used by the underlying database technologies. The result is considerably slower performance and application responsiveness that often renders graph applications completely unusable.
Most NoSQL database technologies add similar translation layers and inefficiencies to create graph applications, again resulting in sluggish performance and even risking corrupt or unsuccessful graph query results.
Neo4j: The Native Graph Database
Neo4j is a native graph database from top to bottom, with native graph storage and processing. By treating graph relationships as first-class citizens, Neo4j writes and reads data from storage using access methods optimized for traversing graph nodes and relationships.
With no need to translate requests into non-graph methods or syntax, Neo4j delivers fast, accurate results for even complex queries of connected graph data.
Is Relational Technology Dead?
Does all this mean that the days of relational database technology are coming to a close? Certainly not. Relational approaches are appropriate for tabular data with static schemas, but not for the demands of highly connected or changing datasets. And for queries that traverse multiple levels through graph data—such as friends-of-friends-of-friends queries—the resulting swarm of table index lookups relegates relational performance to unacceptable levels.
In stark contrast, graph databases use index-free adjacency to traverse millions of data records with sub-second response times, even when those queries mine data several layers deep. For more details, see Index-Free Adjacency and the Need for Speed.