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.
We needed a graph database to record relations between different corporate entities. We want to track relations like beneficial owners, subsidiaries, related parties, etc. There could be many edges and the edges needed to record various metadata about the relations like the date that relation became significant. Importantly, we wanted to be able to run relational queries that would be tricky with postgres.
Pros
Easy to query deep paths (for Ultimate Beneficial Owner)
Storing metadata for edges
Easy detection of obscurely connected entities
Cons
We felt we could only scale easily vertically
We felt limited by Neo4j's hosted machine options
Limited constraints to enforce relational patterns
Likelihood to Recommend
When we had to calculate ownership of deeply nested subsidiaries, Neo4j was awesome. Using Cypher’s variable-length paths (-[:OWNS*..10]->), you can write a script that traverses the entire tree and multiplies the "metadata" (% ownership) along the edges in a single pass. In Postgres, this would require a massive recursive CTE that is difficult to debug.
VU
Verified User
Engineer in Information Technology (11-50 employees)
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.
[Neo4j] is being used on the commercial side of our organization to help create network maps and see relationships between customers or end-users. I am not sure if other areas of the business are using it at the moment. I would say it is still in its infancy at our company, though.
Pros
Show relationships between different data points
Visualize network maps
Show stronger influencers
Cons
Be quicker at processing data
Have less lagging when interacting with the network map
Be able share with other users on a server
Likelihood to Recommend
Neo4J is great for creating network graphs or illustrating how things are related. It is also good for finding individuals or things that have greater influence than others in a system. It is not appropriate if you have standard data sets that can be analyzed using conventional methods or visualized using Tableau, for example.
As [we are] working in the US healthcare domain, we have to deal with large databases like UMLS. It also contains more than 12 relationships among the nodes. To analyze and build a relational module, Neo4j is good choice for us. Mostly Neo4j is used in the R&D department for analysis. But it is also in use at application level to support queries on a large dataset.
Pros
It's very efficient on large datasets to support the multiple relations between the nodes.
Inserting or updating any node or relation is also very easy through the UI or a script
Provides very good graphical representation to analyse or present a dataset
Very good interactive UI for analysis of any dataset
Cons
Though the performance is good on a small dataset it requires a well configured server for a large dataset
Also graphical representation for less complex dataset is good but for complex dataset in which more than 10 relation possible graphs are not good
Also the interactive UI for a complex dataset is little bit complex
Likelihood to Recommend
Neo4j is well suited for POC and analysis purposes on some subsets of large data sets; also very efficient query language to query the knowledge. But if you have to deal with a large and complex data set, it's not a good option.
VU
Verified User
Employee in Research & Development (501-1000 employees)
We use Neo4j to manage all the relationships of our data. We didn't want to use anything else because joins get too slow for querying. Neo4j is actually the glue to our platform. Everything is connected using Neo4j, having it makes the management of our data fairly easy and also allows for easy analysis and reports.
Pros
Easy way to query data.
Easy way to insert and store relationships.
Easy to visualize data in Neo4j browser.
Easy to learn.
Cons
Sometimes hard to visualize complex data analyses.
Tough to see space used.
Tough to allocate memory or other configurations.
Likelihood to Recommend
If you are looking for a graph database solution Neo4j is the way to go. It is the easiest and most robust solution to use on the market. Even so, the community version is free and the community support around Neo4j is really good. The database performance is extremely fast.
We used Neo4J to store data that have tree relationships. It is being used by our entire organization for various data to be stored. It addresses the problem of storing data that has multiple relationships pretty well. Storing data in Neo4J allows for a very efficient way to look up nodes and their relationships are quicker than storing similar data in traditional SQL database.
Pros
Mature Query language, I found Cypher QL to be mature in handling all sorts of problems we throw at it. Its expressive enough to be intuitive while providing rich features for various scenarios.
Native support for REST API, that makes interacting with Neo4J intuitive and easy.
Support for Procedures in Java, procedures are custom code that could be added to the Neo4J to write custom querying of data. The best part about the procedures is it could be invoked using the REST API. This allows us to overcome any shortcomings from their Cypher query language.
Nice UI and interface for executing the Query and visualizing the response.
UI access controlled by User credentials allows for neat access controls.
Awesome free community edition for small-scale projects.
Cons
Support for language based libraries. Currently, Neo4J only supports Java-based libraries. We used node and found issues with documentation and support for this library. It helps if Neo4J supports libraries in popular languages.
Support for triggers, that's one of the neat features of Postgres and other traditional SQL databases.
Support for indexes for data lookup. Looking up multiple nodes information using Neo4J is not very efficient, it is more optimized for looking up relationships between nodes. So adding that support would be very useful.
Likelihood to Recommend
Its very well suited for storing graph types relationship information, such as a group of people and their relationships. Data modeling this sort of information in a traditional SQL database is a pain and inefficient. Using Neo4J allows for efficient modeling of data while providing rich querying capabilities using Cypher. Its also a great fit for any programming language because of its support for REST API.
It's less appropriate for any other data structure other than Graph data. So as with any DB, evaluate the data structure and query and if the querying revolves around relationships, then Neo4J is a fit. If there is more need for looking up individual nodes and their associated information, Neo4J might not be the most efficient solution in the market.
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
Neo4j provides the framework for our business’ cloud solution, which helps companies digitize their supply chains. It is used primarily by our developer team, but our entire organization benefits from it. We were looking for a solution that would be able to handle very complex queries without sacrificing performance, and Neo4j really addresses these issues.
Pros
Very quick to get our project up and running (prototype built in less than 3 months).
No performance issues even for very large amounts of data, and extremely quick search response time. No need to worry about problems for users of our platform.
Always easy to extend functionality – Neo4j helps us accelerate our company development.
Cons
Our developer team is very happy with the functionalities provided by Neo4j.
Likelihood to Recommend
Neo4j is well suited for any company dealing with complicated and interconnected data.
Neo4j was an experiment for us. We needed to model people and relationships for which graph databases were most suited. Google search resulted "Neo4j" on top, so we tried it, and it is awesome! The project, unfortunately, has been shut down, but at the time, we used it as the primary database for the application. The database model was designed such that every piece of information could be mapped to either a node or an edge, so we didn't need to use any sort of relational or other no-SQL database.
Pros
Neo4j is extremely fast.
Neo4j has its own query language CYPHER which is very intuitive and easy to use.
Neo4j supports API in almost every language like Java, Python, PHP, NodeJS, etc.
Cons
One of the hardest challenges that Neo4j had to solve was the horizontal scaling problem. I am not updated on recent developments, but at the time of my use, I couldn't find a viable solution.
Neo4j does not play with other open source APIs like Blueprint. You have to use the native Neo4j API.
There wasn't a visual tool to see your data. Of course, third party tools are always available, but I would have loved something which came with the Neo4j bundle. I love that Docker comes bundled with Kitematic, so it's not wrong to hope that Neo4j could also ship with some default visualization software.
Likelihood to Recommend
If you have a graph problem, or if you can model your data in nodes and edges, my friend, you need a graph database. And Neo4j is the leading one. So that is reason good enough to use it.
But if you try and use it without a use case, you are in for a rough ride. It is hard to switch from a relational or JSON like data structure to a graph one. You wouldn't have access to all the joins and tables (at least not in the traditional sense).
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).