Need advice about which tool to choose?Ask the StackShare community!

Neo4j

1.2K
1.4K
+ 1
352
OrientDB

75
107
+ 1
14
Add tool

Neo4j vs OrientDB: What are the differences?

Introduction

In this article, we will discuss the key differences between Neo4j and OrientDB, two popular graph databases. Graph databases are designed to handle highly connected data, making them suitable for use cases such as social networks, recommendation engines, and fraud detection systems. While both Neo4j and OrientDB offer graph database functionalities, they differ in several aspects, which are outlined below.

  1. Data Model: Neo4j uses a property graph data model, where nodes represent entities and edges represent relationships between those entities. Each node and edge can have key-value properties associated with it. On the other hand, OrientDB supports multiple data models, including graph, document, and key-value models. This flexibility allows OrientDB to handle different types of data more seamlessly.

  2. Language Compatibility: Neo4j uses the Cypher query language, which is specifically designed for querying graph data. It offers a simple and expressive syntax, making it easy to work with graph structures. In contrast, OrientDB supports multiple query languages, including SQL for querying relational data, and Gremlin for querying graph data. This provides more flexibility in terms of language choice, but may require additional learning if using OrientDB.

  3. Scalability: Neo4j is known for its scalability and ability to handle large graph datasets. It offers horizontal scalability through a clustering feature called Neo4j Causal Clustering, which allows for high availability and fault tolerance. OrientDB also supports horizontal scalability, but its clustering mechanism, called Distributed Multi-Master Architecture, requires manual configuration and does not provide the same level of automatic failover as Neo4j.

  4. Consistency: Neo4j guarantees strict consistency, meaning that all nodes and relationships are always in a fully consistent state. This ensures data integrity but can impact the availability of the database, especially in distributed environments. OrientDB, on the other hand, offers eventual consistency, which allows for better availability but may result in temporary inconsistency during concurrent updates.

  5. Native Graph Storage: Neo4j has a native graph storage engine optimized for handling graph data structures efficiently. This enables fast traversal and querying of graph structures, making it suitable for use cases that heavily rely on graph traversals. OrientDB, on the other hand, does not have a dedicated native graph storage engine, as it is designed to support multiple data models. While OrientDB can handle graph data efficiently, it may not provide the same level of performance as Neo4j for graph-specific operations.

  6. Community and Ecosystem: Neo4j has a large and active community, with extensive documentation, tutorials, and a wide range of third-party integrations and tools. This vibrant ecosystem makes it easy to find support and resources when working with Neo4j. Although OrientDB also has a community and ecosystem, it is relatively smaller compared to Neo4j, which may result in fewer readily available resources and integrations.

In summary, Neo4j and OrientDB differ in their data models, query languages, scalability mechanisms, consistency guarantees, native graph storage optimization, and community/ecosystem size. Each database has its own strengths and considerations, and the choice between them depends on the specific requirements and use case of the project.

Advice on Neo4j and OrientDB
Needs advice
on
Azure Cosmos DBAzure Cosmos DBNeo4jNeo4j
and
OrientDBOrientDB

We have an in-house build experiment management system. We produce samples as input to the next step, which then could produce 1 sample(1-1) and many samples (1 - many). There are many steps like this. So far, we are tracking genealogy (limited tracking) in the MySQL database, which is becoming hard to trace back to the original material or sample(I can give more details if required). So, we are considering a Graph database. I am requesting advice from the experts.

  1. Is a graph database the right choice, or can we manage with RDBMS?
  2. If RDBMS, which RDMS, which feature, or which approach could make this manageable or sustainable
  3. If Graph database(Neo4j, OrientDB, Azure Cosmos DB, Amazon Neptune, ArangoDB), which one is good, and what are the best practices?

I am sorry that this might be a loaded question.

See more
Replies (1)
Recommends
on
ArangoDBArangoDB

You have not given much detail about the data generated, the depth of such a graph, and the access patterns (queries). However, it is very easy to track all samples and materials if you traverse this graph using a graph database. Here you can use any of the databases mentioned. OrientDB and ArangoDB are also multi-model databases where you can still query the data in a relational way using joins - you retain full flexibility.

In SQL, you can use Common Table Expressions (CTEs) and use them to write a recursive query that reads all parent nodes of a tree.

I would recommend ArangoDB if your samples also have disparate or nested attributes so that the document model (JSON) fits, and you have many complex graph queries that should be performed as efficiently as possible. If not - stay with an RDBMS.

See more
Get Advice from developers at your company using StackShare Enterprise. Sign up for StackShare Enterprise.
Learn More
Pros of Neo4j
Pros of OrientDB
  • 70
    Cypher – graph query language
  • 61
    Great graphdb
  • 33
    Open source
  • 31
    Rest api
  • 27
    High-Performance Native API
  • 23
    ACID
  • 21
    Easy setup
  • 17
    Great support
  • 11
    Clustering
  • 9
    Hot Backups
  • 8
    Great Web Admin UI
  • 7
    Powerful, flexible data model
  • 7
    Mature
  • 6
    Embeddable
  • 5
    Easy to Use and Model
  • 4
    Best Graphdb
  • 4
    Highly-available
  • 2
    It's awesome, I wanted to try it
  • 2
    Great onboarding process
  • 2
    Great query language and built in data browser
  • 2
    Used by Crunchbase
  • 4
    Great graphdb
  • 2
    Great support
  • 2
    Open source
  • 1
    Multi-Model/Paradigm
  • 1
    ACID
  • 1
    Highly-available
  • 1
    Performance
  • 1
    Embeddable
  • 1
    Rest api

Sign up to add or upvote prosMake informed product decisions

Cons of Neo4j
Cons of OrientDB
  • 9
    Comparably slow
  • 4
    Can't store a vertex as JSON
  • 1
    Doesn't have a managed cloud service at low cost
  • 4
    Unstable

Sign up to add or upvote consMake informed product decisions

- No public GitHub repository available -

What is Neo4j?

Neo4j stores data in nodes connected by directed, typed relationships with properties on both, also known as a Property Graph. It is a high performance graph store with all the features expected of a mature and robust database, like a friendly query language and ACID transactions.

What is OrientDB?

It is an open source NoSQL database management system written in Java. It is a Multi-model database, supporting graph, document, key/value, and object models, but the relationships are managed as in graph databases with direct connections between records.

Need advice about which tool to choose?Ask the StackShare community!

What companies use Neo4j?
What companies use OrientDB?
See which teams inside your own company are using Neo4j or OrientDB.
Sign up for StackShare EnterpriseLearn More

Sign up to get full access to all the companiesMake informed product decisions

What tools integrate with Neo4j?
What tools integrate with OrientDB?
    No integrations found

    Sign up to get full access to all the tool integrationsMake informed product decisions

    Blog Posts

    What are some alternatives to Neo4j and OrientDB?
    Titan
    Titan is a scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster. Titan is a transactional database that can support thousands of concurrent users executing complex graph traversals in real time.
    MongoDB
    MongoDB stores data in JSON-like documents that can vary in structure, offering a dynamic, flexible schema. MongoDB was also designed for high availability and scalability, with built-in replication and auto-sharding.
    Cassandra
    Partitioning means that Cassandra can distribute your data across multiple machines in an application-transparent matter. Cassandra will automatically repartition as machines are added and removed from the cluster. Row store means that like relational databases, Cassandra organizes data by rows and columns. The Cassandra Query Language (CQL) is a close relative of SQL.
    JanusGraph
    It is a scalable graph database optimized for storing and querying graphs containing hundreds of billions of vertices and edges distributed across a multi-machine cluster. It is a transactional database that can support thousands of concurrent users executing complex graph traversals in real time.
    Dgraph
    Dgraph's goal is to provide Google production level scale and throughput, with low enough latency to be serving real time user queries, over terabytes of structured data. Dgraph supports GraphQL-like query syntax, and responds in JSON and Protocol Buffers over GRPC and HTTP.
    See all alternatives