Data modeling with Neo4j – moving away from traditional SQL
Data modeling using SQL is very different from the usual data modeling we do using Neo4j. The nearest mapping of SQL using the Neo4j graph database will be as follows:
SQL |
Neo4j |
---|---|
The primary elements of any table, such as person, product, and so on |
Node |
Two different tables joined via a foreign key |
Relationship |
Tuple or row |
Properties or attributes |
Relational databases have a very rich model to store/express data, but it comes at a cost. To express relationships, the user has to use joins, which have their own cost. The more the number of relationships to be expressed, the more the number of joins over the table. This phenomenon has a serious impact on performance. Thus, in spite of having a rich model for the storage of data, SQL limits this when using queries that require the usage of a rich model.
In Neo4j, the preceding limitation has been simplified by the removal of joins when expressing interrelated data using relationships...