# risingwavelabs/risingwave architecture

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

- Interactive diagram: https://gitdiagram.com/risingwavelabs/risingwave
- Repository: https://github.com/risingwavelabs/risingwave

## Overview

RisingWave is a SQL-based event streaming database: it ingests live and historical data, maintains incremental results, and serves queries or writes results to downstream systems and Iceberg. The README documents these product stages and Iceberg maintenance; sampled source provides concrete evidence for distributed query execution, Hummock storage, and Iceberg catalog operations. Several broader subsystem links reflect README-described behavior rather than inspected implementation details.

Main entry points: [`src/stream`](https://github.com/risingwavelabs/risingwave/tree/main/src/stream) (Incremental Processing), [`src/storage/src/hummock/store/hummock_storage.rs`](https://github.com/risingwavelabs/risingwave/blob/main/src/storage/src/hummock/store/hummock_storage.rs) (Hummock Row Store), [`src/frontend/src/scheduler/distributed/query_manager.rs`](https://github.com/risingwavelabs/risingwave/blob/main/src/frontend/src/scheduler/distributed/query_manager.rs) (Distributed Queries), [`src/connector/src/connector_common/iceberg/storage_catalog.rs`](https://github.com/risingwavelabs/risingwave/blob/main/src/connector/src/connector_common/iceberg/storage_catalog.rs) (Iceberg Catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["SQL and Operations"]
  node_sql_interface["Postgres SQL"]
  node_dashboard["Admin Dashboard"]
end

subgraph group_ingestion["Data Ingestion"]
  node_connectors["Source Connectors<br/>[SourceHandler.java]"]
  node_webhooks["Webhook Ingestion"]
  node_batch_ingest["Historical Ingestion"]
  node_sink_connectors["Sink Connectors<br/>[SinkFactory.java]"]
end

subgraph group_compute["Query and Compute"]
  node_streaming_compute["Incremental Processing"]
  node_distributed_queries["Distributed Queries<br/>[query_manager.rs]"]
  node_udfs["User Functions"]
end

subgraph group_storage["Serving and Storage"]
  node_row_store[("Hummock Row Store<br/>[hummock_storage.rs]")]
  node_object_storage[("Object Storage")]
  node_storage_config["Storage Configuration<br/>[storage.rs]"]
  node_storage_metrics["Storage Metrics"]
end

subgraph group_iceberg["Iceberg"]
  node_iceberg_catalog["Iceberg Catalog<br/>[storage_catalog.rs]"]
  node_iceberg_queries["Iceberg Queries"]
  node_iceberg_maintenance["Iceberg Maintenance<br/>[storage.rs]"]
end

node_sql_client(("SQL Clients"))
node_sources(("External Sources"))
node_downstream(("Applications and Sinks"))

node_sql_client -->|"issues SQL"| node_sql_interface
node_sources -->|"provides changes"| node_connectors
node_sources -->|"sends events"| node_webhooks
node_sources -->|"provides history"| node_batch_ingest
node_connectors -->|"feeds streams"| node_streaming_compute
node_webhooks -->|"feeds events"| node_streaming_compute
node_batch_ingest -->|"feeds data"| node_streaming_compute
node_sql_interface -->|"starts queries"| node_distributed_queries
node_streaming_compute -->|"maintains state"| node_row_store
node_distributed_queries -->|"reads state"| node_row_store
node_distributed_queries -->|"returns results"| node_sql_client
node_udfs -->|"extends computation"| node_streaming_compute
node_row_store -->|"persists state"| node_object_storage
node_storage_config -->|"configures storage"| node_row_store
node_row_store -->|"reports metrics"| node_storage_metrics
node_streaming_compute -->|"dispatches results"| node_sink_connectors
node_sink_connectors -->|"writes results"| node_downstream
node_sql_interface -->|"manages tables"| node_iceberg_catalog
node_distributed_queries -->|"selects storage mode"| node_iceberg_queries
node_iceberg_queries -->|"reads Iceberg tables"| node_iceberg_catalog
node_iceberg_catalog -->|"accesses table files"| node_object_storage
node_iceberg_maintenance -->|"configures maintenance"| node_iceberg_catalog
node_sql_client -.->|"views operations"| node_dashboard

click node_sql_interface "https://github.com/risingwavelabs/risingwave/tree/main/src/frontend"
click node_dashboard "https://github.com/risingwavelabs/risingwave/tree/main/dashboard/pages"
click node_connectors "https://github.com/risingwavelabs/risingwave/blob/main/java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/source/SourceHandler.java"
click node_webhooks "https://github.com/risingwavelabs/risingwave/tree/main/src/connector"
click node_batch_ingest "https://github.com/risingwavelabs/risingwave/tree/main/src/connector"
click node_streaming_compute "https://github.com/risingwavelabs/risingwave/tree/main/src/stream"
click node_distributed_queries "https://github.com/risingwavelabs/risingwave/blob/main/src/frontend/src/scheduler/distributed/query_manager.rs"
click node_row_store "https://github.com/risingwavelabs/risingwave/blob/main/src/storage/src/hummock/store/hummock_storage.rs"
click node_object_storage "https://github.com/risingwavelabs/risingwave/tree/main/src/object_store"
click node_storage_config "https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/config/storage.rs"
click node_storage_metrics "https://github.com/risingwavelabs/risingwave/blob/main/src/storage/src/monitor/monitored_storage_metrics.rs"
click node_sink_connectors "https://github.com/risingwavelabs/risingwave/blob/main/java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/sink/SinkFactory.java"
click node_iceberg_catalog "https://github.com/risingwavelabs/risingwave/blob/main/src/connector/src/connector_common/iceberg/storage_catalog.rs"
click node_iceberg_queries "https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/session_config/iceberg_query_storage_mode.rs"
click node_iceberg_maintenance "https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/config/storage.rs"

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_sql_interface,node_dashboard,node_sql_client toneBlue
class node_connectors,node_webhooks,node_batch_ingest,node_sink_connectors toneAmber
class node_streaming_compute,node_distributed_queries,node_udfs toneMint
class node_row_store,node_object_storage,node_storage_config,node_storage_metrics toneRose
class node_iceberg_catalog,node_iceberg_queries,node_iceberg_maintenance,node_sources,node_downstream toneIndigo
```

## Components

### SQL and Operations

- [Postgres SQL](https://github.com/risingwavelabs/risingwave/tree/main/src/frontend): `src/frontend`
- [Admin Dashboard](https://github.com/risingwavelabs/risingwave/tree/main/dashboard/pages): `dashboard/pages`

### Data Ingestion

- [Source Connectors](https://github.com/risingwavelabs/risingwave/blob/main/java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/source/SourceHandler.java): `java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/source/SourceHandler.java`
- [Webhook Ingestion](https://github.com/risingwavelabs/risingwave/tree/main/src/connector): `src/connector`
- [Historical Ingestion](https://github.com/risingwavelabs/risingwave/tree/main/src/connector): `src/connector`
- [Sink Connectors](https://github.com/risingwavelabs/risingwave/blob/main/java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/sink/SinkFactory.java): `java/connector-node/connector-api/src/main/java/com/risingwave/connector/api/sink/SinkFactory.java`

### Query and Compute

- [Incremental Processing](https://github.com/risingwavelabs/risingwave/tree/main/src/stream): `src/stream`
- [Distributed Queries](https://github.com/risingwavelabs/risingwave/blob/main/src/frontend/src/scheduler/distributed/query_manager.rs): `src/frontend/src/scheduler/distributed/query_manager.rs`
- **User Functions**

### Serving and Storage

- [Hummock Row Store](https://github.com/risingwavelabs/risingwave/blob/main/src/storage/src/hummock/store/hummock_storage.rs): `src/storage/src/hummock/store/hummock_storage.rs`
- [Object Storage](https://github.com/risingwavelabs/risingwave/tree/main/src/object_store): `src/object_store`
- [Storage Configuration](https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/config/storage.rs): `src/common/src/config/storage.rs`
- [Storage Metrics](https://github.com/risingwavelabs/risingwave/blob/main/src/storage/src/monitor/monitored_storage_metrics.rs): `src/storage/src/monitor/monitored_storage_metrics.rs`

### Iceberg

- [Iceberg Catalog](https://github.com/risingwavelabs/risingwave/blob/main/src/connector/src/connector_common/iceberg/storage_catalog.rs): `src/connector/src/connector_common/iceberg/storage_catalog.rs`
- [Iceberg Queries](https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/session_config/iceberg_query_storage_mode.rs): `src/common/src/session_config/iceberg_query_storage_mode.rs`
- [Iceberg Maintenance](https://github.com/risingwavelabs/risingwave/blob/main/src/common/src/config/storage.rs): `src/common/src/config/storage.rs`

### Other components

- **SQL Clients**
- **External Sources**
- **Applications and Sinks**

## Connections

- SQL Clients → Postgres SQL: issues SQL
- External Sources → Source Connectors: provides changes
- External Sources → Webhook Ingestion: sends events
- External Sources → Historical Ingestion: provides history
- Source Connectors → Incremental Processing: feeds streams
- Webhook Ingestion → Incremental Processing: feeds events
- Historical Ingestion → Incremental Processing: feeds data
- Postgres SQL → Distributed Queries: starts queries
- Incremental Processing → Hummock Row Store: maintains state
- Distributed Queries → Hummock Row Store: reads state
- Distributed Queries → SQL Clients: returns results
- User Functions → Incremental Processing: extends computation
- Hummock Row Store → Object Storage: persists state
- Storage Configuration → Hummock Row Store: configures storage
- Hummock Row Store → Storage Metrics: reports metrics
- Incremental Processing → Sink Connectors: dispatches results
- Sink Connectors → Applications and Sinks: writes results
- Postgres SQL → Iceberg Catalog: manages tables
- Distributed Queries → Iceberg Queries: selects storage mode
- Iceberg Queries → Iceberg Catalog: reads Iceberg tables
- Iceberg Catalog → Object Storage: accesses table files
- Iceberg Maintenance → Iceberg Catalog: configures maintenance
- SQL Clients → Admin Dashboard: views operations
