Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

Bring embedded graph queries to your data lake. Learn to map relational tables, query with three graph languages, and use OrchidDB from Rust, Java, Python, JavaScript/TypeScript, Elixir, or C++.

Start with your data

OrchidDB is a graph query layer built in Rust, with DataFusion planning and Apache Arrow results. Compile SQL and execute through your own engine, or use the standalone CLI with bundled DuckDB and default Iceberg support. Describe nodes, relationships, and properties over your existing tables, then ask graph questions in Cypher, Gremlin, or SPARQL.

A graph mapping connects your application vocabulary to physical columns. A customer can become a Person, an order row can define an ORDERED relationship, and a SQL view can expose a selected group of accounts. Your database remains the source of those rows.

Choose a starting point

Version 0.1.0 is available as a CLI installer and published language packages. On macOS ARM64, install the CLI and run the quickstart without a Rust toolchain or source checkout:

curl -fsSL https://install.orchiddb.com | bash
export PATH="$HOME/.local/bin:$PATH"
orchiddb --version
Your goalStart here
Run your first graph queryQuickstart
Query tables you already ownMap existing tables
Query documents and turn JSON arrays into edgesJSON documents
Combine vector or full-text search with graph traversalSearch
Search remote indexes and join results into the graphQuickwit and Elasticsearch
Create and persist a graphManaged graphs
Query with an RDF vocabularySPARQL
Use scalar functions across DuckDB and PostgreSQLPortable scalar functions and function catalog
Map application columns or quad tables to RDFRDF datasets
Embed the engine in RustRust API
Explore language integrationsClient APIs

Three languages, one graph

Cypher describes patterns between nodes:

MATCH (p:Person)-[:FOLLOWS]->(friend:Person)
WHERE p.name = 'alice'
RETURN friend.name
ORDER BY friend.name

Gremlin describes a traversal through the same relationships:

g.V().hasLabel('Person').has('name', 'alice')
  .out('FOLLOWS').values('name').order()

SPARQL uses RDF rules over application columns or an ontology mapping over graph labels:

PREFIX ex: <https://example.com/>
SELECT ?name WHERE {
  ?person a ex:Person ; ex:name "alice" ; ex:follows ?friend .
  ?friend ex:name ?name .
}
ORDER BY ?name

The language frontends produce a shared Graph IR and relational plan. Execution uses SQL regions and native operators as supported by the selected API. Read SQL compilation to inspect or execute generated SQL, and core concepts for the shared execution model.

Follow a learning path

Begin with installation, run the quickstart, then choose a client example. The mapped graph tutorial demonstrates GraphEngine using a customer/order dataset.

For application integration, continue with typed parameters, Arrow results, and transactions. The CLI reference, mapping reference, and Rust API provide the details to keep nearby while coding.

Website · GitHub · Community