TrustRadius Insights for Neo4j are summaries of user sentiment data from TrustRadius reviews and, when necessary, third party data sources.
Pros
Fast and Efficient Performance: Many users have praised Neo4j for its extremely fast performance, allowing for quick processing of queries and efficient handling of large datasets. The software's ability to handle complex tasks without any performance issues has been highlighted by multiple reviewers.
Intuitive Query Language: Reviewers have appreciated the intuitive and easy-to-use query language, Cypher, which makes it simple to write and execute queries in Neo4j. This mature query language offers rich features and is capable of effectively handling a wide range of problems, making it a preferred choice for many users.
Flexible Integration Options: Neo4j's support for APIs in various programming languages such as Java, Python, PHP, and NodeJS has been highly valued by users. This flexibility allows for seamless integration with different systems and provides ease of use when working with external applications or services.
Scaling is a huge issue in Neo4j. Clusters are supposed to allow horizontal scaling and they say they support billions of nodes, but in fact, a database with ~600 mil nodes and 1.5TB in size is barely manageable. Backups slow, count() times out, server restart will take hours (!!!!). And 2GB hard transaction limit is another hard candy of a clustered mode, requiring to use things like apoc.iterate for long updates, making them impossible to rollback in case something goes wrong (apoc.iterate commits results on the go).
So - if you need scaling, think twice.
Pros
Graph traverse.
Cons
Scaling and clustering.
Transactions limitations.
Performance on millions of data.
Backup and restore.
Likelihood to Recommend
Small to medium data sets (up to tens of millions of nodes) work acceptably. Big data sets - hundreds of millions - look another way.
VU
Verified User
Employee in Engineering (Computer Software company, 1001-5000 employees)
I am using it as schemaless data store to persist my knowledge graph. As the name indicates, neo4j is a perfect choice when the query pattern is about finding the relationships between entities. I evaluated it with similar use cases, besides knowledge graph, where finding patterns was essential. It is a very good choice when joins are very common in a relational store. As the data is completely materialized, all joins are in constant time which tremendously improves query performance out of the box without extra system design.
Pros
When joins are a common in a relational store, switching to Neo4j is better
When pattern matching and surfacing interesting insights is the goal, neo4j's cypher is pretty powerful
When schema is not completely known beforehand and needs to be evolved with time
Cons
Better support for aggregation queries
Drivers for Spark where ML or more computationally heavy jobs are to be performed
Native support for complex properties for nodes and relationships
Likelihood to Recommend
When pattern matching in data is crucial
When data exploration is common query pattern
When a graph algorithm solves the problem better at scale
When evolving schema is important
When constant time joins in a relational database are common
When schemaless transaction support is required
When thinking in patterns is a more common way to derive insights from the data
We use Neo4j as storage for data that can naturally be modeled as a graph (think nodes and edges). It allows us to create rich objects with multiple properties, ingest them at reasonable rates, and the search against the graph and return results fast enough that you can run a website directly off it.
It's not a general data storage solution, but for applications where you can about the graph or network nature of the data it excels.
Pros
It's very easy to install.
The built in web interface is incredibly useful. It enables you to quickly test out queries and visualize the results.
Third-party libraries/APIs are well represented. CYPHER isn't actually that hard to write directly, either.
Cons
It would be nice to have some concept of namespaces, or some way of roughly making a single instance multi-tenant. It'd be nice to make sandboxing easier.
Automatic backups could be improved.
Likelihood to Recommend
Neo4j should only used when your data can be modeled as a graph (e.g. nodes and edges) AND you actually care about its network qualities. It's not a general purpose data store. If you have large amounts of text to store, you'll need to augment Neo4j with something else like ElasticSearch. Also Neo4j can be a little wonky with date time data (e.g., attempts at representing date time objects explicitly on the graph, as opposed to properties, is going to be a challenge).