Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What can an RDBMS do that Neo4j (and graph databases) cant?

“A Graph Database –transforms a–> RDBMS”

The Neo4j site seems to imply that whatever you can do in RDBMS, you can do in Neo4j.

Before choosing Neo4j as a replacement for an RDBMS, I need some doubts answered.


I am interested in Neo4j for

  • ability to do quickly modify data "schema"
  • ability to express entities naturally instead of relations and normalizations
  • ...which leads to highly expressive code (better than ORM)

This is a NoSQL solution I am interested in for it's features, not high performance.


Question: Does Neo4j present any issues that may make it unsuitable as a RDBMS replacement?

I am particularly concerned about these:

  • is there any DB feature I must implement in application logic? (For example, you must implement joins at application layer for a few NoSQL DBs)
  • Are the fields "indexed" to allow a lookup faster than O(n)?
  • How do I handle hot backups and replication?
  • any issues with "altering" schema or letting entities with different versions of the schema living together?
like image 425
Jesvin Jose Avatar asked Jan 15 '12 18:01

Jesvin Jose


People also ask

What is the difference between Rdbms and graph database?

The most notable difference between the two is that graph databases store the relationships between data as data. Relational databases infer a focus on relationships between data but in a different way. The relational focus is between the columns of data tables, not data points.

What are graph databases not good for?

Graph databases are not as useful for operational use cases because they are not efficient at processing high volumes of transactions and they are not good at handling queries that span the entire database.

What are the advantages of using a graph database over a relational database?

Group by Aggregate Queries Due to the tabular model restriction, aggregate queries on a relational database are greatly constrained by how data is grouped together. In contrast, graph models are more flexible for grouping and aggregating relevant data.

Why did you prefer the graph database Neo4j not any other?

Neo4j delivers the lightning-fast read and write performance you need, while still protecting your data integrity. It is the only enterprise-strength graph database that combines native graph storage, scalable architecture optimized for speed, and ACID compliance to ensure predictability of relationship-based queries.


1 Answers

This is an extremely broad topic covering everything from modeling and implementation to IT and support. It's impossible to really answer all those questions here, especially without details on your situation. However, you seem to be exploring options and avenues. So, I'll just pass on some general food for thought as someone that's implemented a number of systems.

Everybody seems to think their new database paradigm is a replacement for relational databases. So, take those claims with a grain of salt.

I like to think in terms of 3 fundamental models: Relational, Document, and Graphing. Depending on your problem space one or even more of these is the right answer. I would not do financial transactions in anything but relational (SQL Based). If you are building a CMS, then a Document DB is the way to go. If my application is modeling networks (roads, people, connections, networks etc.) I use Neo4J.

As far as production quality, there are solid options in each category. Relational has a bunch. For document databases I'd go MongoDB or a higher level JCR system like Apache Jackrabbit. For graphing, I only have experience with Neo4j and it is rock solid for me.

Whatever you do, don't buy into the hype that "We have the one technology that solves all your problems." It's not there and it narrows your thinking.

like image 88
SteveS Avatar answered Sep 27 '22 22:09

SteveS