Convert Figma logo to code with AI

orientechnologies logoorientdb

OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries.

4,743
871
4,743
304

Top Related Projects

Apache Cassandra®

26,228

The MongoDB Database

13,251

Graphs for Everyone

13,543

🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.

JanusGraph: an open-source, distributed graph database

20,370

The high-performance database for modern applications

Quick Overview

OrientDB is a multi-model, open-source NoSQL database management system written in Java. It supports graph, document, key/value, and object models, making it versatile for various data storage and retrieval needs. OrientDB combines the power of graphs with the flexibility of documents and the familiarity of SQL syntax.

Pros

  • Multi-model support (graph, document, key/value, object)
  • SQL-like query language for ease of use
  • High performance and scalability
  • Built-in support for multi-master replication

Cons

  • Steeper learning curve compared to some other NoSQL databases
  • Limited ecosystem and community support compared to more popular databases
  • Documentation can be inconsistent or outdated in some areas
  • Some users report stability issues in high-load production environments

Code Examples

  1. Creating a new database and adding a vertex:
OrientDB orient = new OrientDB("remote:localhost", OrientDBConfig.defaultConfig());
ODatabaseSession db = orient.open("mydb", "admin", "admin");

OVertex person = db.newVertex("Person");
person.setProperty("name", "John");
person.setProperty("age", 30);
person.save();
  1. Performing a SQL-like query:
String query = "SELECT FROM Person WHERE age > 25";
OResultSet rs = db.query(query);
while (rs.hasNext()) {
    OResult result = rs.next();
    System.out.println(result.getProperty("name"));
}
rs.close();
  1. Creating an edge between two vertices:
OVertex person1 = db.newVertex("Person");
person1.setProperty("name", "Alice");
person1.save();

OVertex person2 = db.newVertex("Person");
person2.setProperty("name", "Bob");
person2.save();

OEdge knows = person1.addEdge(person2, "Knows");
knows.setProperty("since", new Date());
knows.save();

Getting Started

To get started with OrientDB:

  1. Download and install OrientDB from the official website.
  2. Add the OrientDB Java driver to your project's dependencies:
<dependency>
    <groupId>com.orientechnologies</groupId>
    <artifactId>orientdb-client</artifactId>
    <version>3.2.2</version>
</dependency>
  1. Use the following code to connect to a local OrientDB instance:
OrientDB orient = new OrientDB("remote:localhost", OrientDBConfig.defaultConfig());
ODatabaseSession db = orient.open("mydb", "admin", "admin");

// Perform database operations here

db.close();
orient.close();

Competitor Comparisons

Apache Cassandra®

Pros of Cassandra

  • Highly scalable and distributed architecture, designed for large-scale deployments
  • Strong support for multi-datacenter replication and high availability
  • Tunable consistency levels for read and write operations

Cons of Cassandra

  • Limited support for complex queries and joins compared to OrientDB
  • Steeper learning curve and more complex configuration
  • Less flexible data model, primarily focused on wide-column store

Code Comparison

OrientDB (SQL-like query):

SELECT FROM Customer
WHERE city = 'New York'
AND orders.size() > 5

Cassandra (CQL):

SELECT * FROM customers
WHERE city = 'New York'
AND order_count > 5;

Note: Cassandra doesn't natively support nested queries or complex operations like orders.size(). Additional application-level logic or denormalization would be required to achieve similar functionality.

Both databases offer their own query languages, with OrientDB providing more flexibility for complex operations within the database, while Cassandra focuses on simpler, high-performance queries suited for its distributed architecture.

26,228

The MongoDB Database

Pros of MongoDB

  • Larger community and ecosystem, with more resources and third-party tools
  • Better scalability for large-scale distributed systems
  • More extensive documentation and official support

Cons of MongoDB

  • Less flexible data model compared to OrientDB's multi-model approach
  • Higher resource consumption, especially for complex queries
  • Limited support for graph-based operations and relationships

Code Comparison

MongoDB query:

db.users.find({ age: { $gt: 30 } }).sort({ name: 1 }).limit(10)

OrientDB query:

SELECT FROM User WHERE age > 30 ORDER BY name LIMIT 10

Both databases offer similar querying capabilities, but OrientDB's SQL-like syntax may be more familiar to developers with relational database experience. MongoDB's query language is more JavaScript-oriented, which can be advantageous for developers working primarily with Node.js or similar environments.

OrientDB's multi-model approach allows for more complex data relationships and graph-based queries, while MongoDB excels in document-based operations and distributed scalability. The choice between the two depends on specific project requirements, team expertise, and the nature of the data being stored and queried.

13,251

Graphs for Everyone

Pros of Neo4j

  • More mature and widely adopted graph database with a larger community
  • Powerful Cypher query language optimized for graph operations
  • Robust enterprise features and scalability options

Cons of Neo4j

  • Proprietary license for enterprise features
  • Steeper learning curve for developers new to graph databases
  • Higher resource requirements for large-scale deployments

Code Comparison

Neo4j (Cypher query):

MATCH (p:Person)-[:KNOWS]->(f:Person)
WHERE p.name = 'Alice'
RETURN f.name

OrientDB (SQL-like query):

SELECT expand(out('KNOWS').name) FROM Person WHERE name = 'Alice'

Both databases offer graph capabilities, but Neo4j focuses solely on graph data models, while OrientDB supports multiple data models (document, key-value, graph). Neo4j's Cypher language is more expressive for graph queries, whereas OrientDB's SQL-like syntax may be more familiar to some developers. OrientDB provides more flexibility in data modeling, but Neo4j excels in pure graph operations and has a more extensive ecosystem of tools and integrations.

13,543

🥑 ArangoDB is a native multi-model database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions.

Pros of ArangoDB

  • Multi-model database supporting key/value, document, and graph data models
  • Native support for JavaScript and AQL (ArangoDB Query Language)
  • Built-in web interface for administration and query execution

Cons of ArangoDB

  • Steeper learning curve due to its multi-model nature
  • Less mature ecosystem compared to OrientDB
  • Higher memory consumption, especially for large datasets

Code Comparison

ArangoDB query example:

FOR user IN users
  FILTER user.age >= 18
  RETURN { name: user.name, age: user.age }

OrientDB query example:

SELECT name, age FROM User WHERE age >= 18

Both databases offer powerful query languages, but ArangoDB's AQL is more JavaScript-like, while OrientDB's SQL is closer to traditional SQL syntax.

Key Differences

  • Data model: ArangoDB is multi-model, while OrientDB is primarily a graph database with document capabilities
  • Query language: ArangoDB uses AQL, OrientDB uses SQL-like syntax
  • Performance: OrientDB generally performs better for graph operations, while ArangoDB excels in document-based queries
  • Scalability: Both offer horizontal scalability, but ArangoDB's clustering solution is more mature
  • Community and ecosystem: OrientDB has a larger community and more third-party integrations

When choosing between these databases, consider your specific use case, data model requirements, and team expertise in graph vs. multi-model databases.

JanusGraph: an open-source, distributed graph database

Pros of JanusGraph

  • Better support for distributed and scalable graph processing
  • More flexible storage backend options (Cassandra, HBase, Google Cloud Bigtable)
  • Stronger integration with big data ecosystems (Hadoop, Spark)

Cons of JanusGraph

  • Steeper learning curve and more complex setup
  • Less mature and smaller community compared to OrientDB
  • Lacks built-in SQL support

Code Comparison

OrientDB query example:

SELECT FROM Person WHERE name = 'John' AND age > 30

JanusGraph query example (using Gremlin):

g.V().hasLabel('person').has('name', 'John').has('age', gt(30))

Key Differences

  • OrientDB is a multi-model database (document, graph, key-value, object) while JanusGraph is primarily focused on graph data
  • OrientDB offers built-in security features, while JanusGraph relies on external security implementations
  • JanusGraph is better suited for large-scale, distributed graph processing, while OrientDB excels in scenarios requiring a mix of data models and ACID transactions

Both projects are open-source and actively maintained, with OrientDB having a longer history and larger user base. JanusGraph, however, has gained popularity for its scalability and integration with big data tools.

20,370

The high-performance database for modern applications

Pros of Dgraph

  • Native GraphQL support, allowing for easier integration with GraphQL-based applications
  • Designed for horizontal scalability, making it suitable for large-scale distributed systems
  • Built-in support for full-text search and geospatial queries

Cons of Dgraph

  • Less mature ecosystem compared to OrientDB, with fewer third-party tools and integrations
  • Steeper learning curve for developers not familiar with GraphQL or graph databases
  • Limited support for traditional SQL-like queries

Code Comparison

OrientDB query example:

SELECT FROM Person WHERE name = 'John' AND age > 30

Dgraph query example:

{
  person(func: allofterms(name, "John")) @filter(gt(age, 30)) {
    name
    age
  }
}

Both databases offer powerful querying capabilities, but OrientDB's syntax is more familiar to SQL users, while Dgraph's GraphQL-like syntax may be more intuitive for developers working with modern web applications.

OrientDB provides a multi-model database system supporting graph, document, key/value, and object models, making it more versatile for various use cases. Dgraph, on the other hand, focuses primarily on being a distributed graph database with strong consistency and horizontal scalability.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OrientDB

License REUSE status


What is OrientDB?

OrientDB is an Open Source Multi-Model NoSQL DBMS with the support of Native Graphs, Documents, Full-Text search, Reactivity, Geo-Spatial and Object Oriented concepts. It's written in Java and it's amazingly fast. No expensive run-time JOINs, connections are managed as persistent pointers between records. You can traverse thousands of records in no time. Supports schema-less, schema-full and schema-mixed modes. Has a strong security profiling system based on user, roles and predicate security and supports SQL amongst the query languages. Thanks to the SQL layer it's straightforward to use for people skilled in the Relational world.

Get started with OrientDB | OrientDB Community Group | Dev Updates | Community Chat .

Is OrientDB a Relational DBMS?

No. OrientDB adheres to the NoSQL movement even though it supports ACID Transactions and SQL as query language. In this way it's easy to start using it without having to learn too much new stuff.

Easy to install and use

Yes. OrientDB is totally written in Java and can run on any platform without configuration and installation. Do you develop with a language different than Java? No problem, look at the Programming Language Binding.

Main References

Get started with OrientDB.


Contributing

For the guide to contributing to OrientDB checkout the CONTRIBUTING.MD

All the contribution are considered licensed under Apache-2 license if not stated otherwise.


Licensing

OrientDB is licensed by OrientDB LTD under the Apache 2 license. OrientDB relies on the following 3rd party libraries, which are compatible with the Apache license:

References:

Sponsors


Reference

Recent architecture re-factoring and improvements are described in our BICOD 2021 paper:

@inproceedings{DBLP:conf/bncod/0001DLT21,
  author    = {Daniel Ritter and
               Luigi Dell'Aquila and
               Andrii Lomakin and
               Emanuele Tagliaferri},
  title     = {OrientDB: {A} NoSQL, Open Source {MMDMS}},
  booktitle = {Proceedings of the The British International Conference on Databases
               2021, London, United Kingdom, March 28, 2022},
  series    = {{CEUR} Workshop Proceedings},
  volume    = {3163},
  pages     = {10--19},
  publisher = {CEUR-WS.org},
  year      = {2021}
}

NPM DownloadsLast 30 Days