# apache/ignite architecture

> Architecture diagram of the GitHub repository apache/ignite, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/apache/ignite
- Repository: https://github.com/apache/ignite

## Overview

Apache Ignite is a distributed in-memory database with optional persistence, distributed transactions, SQL, and compute APIs. Users submit cache operations, SQL, or compute work to a cluster; nodes execute and coordinate that work over distributed data, returning results through native or thin-client APIs. The graph preserves the README’s major capabilities and includes binary marshalling as an internal layer. Source excerpts are sparse, so most product-level relationships below are documented capability links rather than inspected call paths.

Main entry points: [`modules/core/src/main/java/org/apache/ignite/internal/processors/cache`](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache) (Cache API), [`modules/thin-client`](https://github.com/apache/ignite/tree/master/modules/thin-client) (Client APIs), [`modules/platforms`](https://github.com/apache/ignite/tree/master/modules/platforms) (SQL Interfaces), [`modules/core/src/main/java/org/apache/ignite/internal`](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal) (Ignite Cluster)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Client Access"]
  node_clients["Client APIs"]
  node_sql["SQL Interfaces"]
  node_result["Query Results"]
end

subgraph group_data["Distributed Data"]
  node_cache["Cache API"]
  node_cluster["Ignite Cluster"]
end

subgraph group_query["Query and Compute"]
  node_querymgr["Cache Query"]
  node_sqlengine["Calcite Engine"]
  node_indexing["H2 Indexing"]
  node_compute["Cluster Compute"]
  node_running["Query Tracking"]
end

subgraph group_storage["Storage and Transactions"]
  node_memory[("Memory Tier")]
  node_persistence[("Native Persistence")]
  node_transactions["Transactions"]
end

subgraph group_internals["Runtime Internals"]
  node_binary["Binary Marshalling"]
  node_events["Event Storage"]
end

node_user(("Application"))
node_externaldb[("External Database")]

node_user -->|"uses"| node_clients
node_user -->|"submits SQL"| node_sql
node_clients -.->|"accesses data"| node_cache
node_sql -->|"runs queries"| node_sqlengine
node_sql -.->|"runs queries"| node_indexing
node_cache -->|"reads and writes"| node_memory
node_cache -->|"supports ACID"| node_transactions
node_transactions -->|"coordinates across nodes"| node_cluster
node_cache -->|"persists data"| node_persistence
node_cache -.->|"uses optional tier"| node_externaldb
node_querymgr -.->|"dispatches SQL"| node_sqlengine
node_querymgr -.->|"uses indexing"| node_indexing
node_sqlengine -.->|"returns rows"| node_result
node_indexing -.->|"returns rows"| node_result
node_cluster -->|"distributes work"| node_compute
node_compute -->|"returns output"| node_result
node_clients -.->|"marshals data"| node_binary
node_running -.->|"tracks execution"| node_querymgr
node_cluster -.->|"records events"| node_events

click node_clients "https://github.com/apache/ignite/tree/master/modules/thin-client"
click node_sql "https://github.com/apache/ignite/tree/master/modules/platforms"
click node_cache "https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache"
click node_querymgr "https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java"
click node_sqlengine "https://github.com/apache/ignite/tree/master/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite"
click node_indexing "https://github.com/apache/ignite/tree/master/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2"
click node_compute "https://github.com/apache/ignite/tree/master/modules/core"
click node_running "https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/query/running/RunningQueryManager.java"
click node_memory "https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache"
click node_persistence "https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence"
click node_transactions "https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache"
click node_cluster "https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal"
click node_binary "https://github.com/apache/ignite/tree/master/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary"
click node_events "https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java"
click node_result "https://github.com/apache/ignite/blob/master/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_clients,node_sql,node_result toneBlue
class node_cache,node_cluster,node_externaldb toneAmber
class node_querymgr,node_sqlengine,node_indexing,node_compute,node_running toneMint
class node_memory,node_persistence,node_transactions toneRose
class node_binary,node_events,node_user toneIndigo
```

## Components

### Client Access

- [Client APIs](https://github.com/apache/ignite/tree/master/modules/thin-client): `modules/thin-client`
- [SQL Interfaces](https://github.com/apache/ignite/tree/master/modules/platforms): `modules/platforms`
- [Query Results](https://github.com/apache/ignite/blob/master/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java): `modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java`

### Distributed Data

- [Cache API](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache): `modules/core/src/main/java/org/apache/ignite/internal/processors/cache`
- [Ignite Cluster](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal): `modules/core/src/main/java/org/apache/ignite/internal`

### Query and Compute

- [Cache Query](https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java): `modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/GridCacheQueryManager.java`
- [Calcite Engine](https://github.com/apache/ignite/tree/master/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite): `modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite`
- [H2 Indexing](https://github.com/apache/ignite/tree/master/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2): `modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2`
- [Cluster Compute](https://github.com/apache/ignite/tree/master/modules/core): `modules/core`
- [Query Tracking](https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/query/running/RunningQueryManager.java): `modules/core/src/main/java/org/apache/ignite/internal/processors/query/running/RunningQueryManager.java`

### Storage and Transactions

- [Memory Tier](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache): `modules/core/src/main/java/org/apache/ignite/internal/processors/cache`
- [Native Persistence](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence): `modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence`
- [Transactions](https://github.com/apache/ignite/tree/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache): `modules/core/src/main/java/org/apache/ignite/internal/processors/cache`

### Runtime Internals

- [Binary Marshalling](https://github.com/apache/ignite/tree/master/modules/binary/impl/src/main/java/org/apache/ignite/internal/binary): `modules/binary/impl/src/main/java/org/apache/ignite/internal/binary`
- [Event Storage](https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java): `modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java`

### Other components

- **Application**
- **External Database**

## Connections

- Application → Client APIs: uses (evidence: `README.md`)
- Application → SQL Interfaces: submits SQL (evidence: `README.md`)
- Client APIs → Cache API: accesses data
- SQL Interfaces → Calcite Engine: runs queries (evidence: `README.md`)
- SQL Interfaces → H2 Indexing: runs queries
- Cache API → Memory Tier: reads and writes (evidence: `README.md`)
- Cache API → Transactions: supports ACID (evidence: `README.md`)
- Transactions → Ignite Cluster: coordinates across nodes (evidence: `README.md`)
- Cache API → Native Persistence: persists data (evidence: `README.md`)
- Cache API → External Database: uses optional tier (evidence: `README.md`)
- Cache Query → Calcite Engine: dispatches SQL
- Cache Query → H2 Indexing: uses indexing
- Calcite Engine → Query Results: returns rows
- H2 Indexing → Query Results: returns rows
- Ignite Cluster → Cluster Compute: distributes work (evidence: `README.md`)
- Cluster Compute → Query Results: returns output (evidence: `README.md`)
- Client APIs → Binary Marshalling: marshals data
- Query Tracking → Cache Query: tracks execution
- Ignite Cluster → Event Storage: records events (evidence: `modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java`)
