DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

RisingWave


RisingWave is an open-source distributed streaming database targeting real-time analytics and event-driven applications. It uses the incremental computation model to process streaming data with low latency. RisingWave implements a traditional change propagation framework to keep user-defined materialized views up-to-date. An incremental checkpoint mechanism is used to ensure data consistency. It also has an elastic multi-node architecture with separate data and compute nodes. RisingWave is built from scratch with Rust, and is wire compatible with PostgreSQL.[05][06][07]

Source Code
https://github.com/risingwavelabs/risingwave[02]
Country of Origin
US
Start Year
2021
Project Types
Commercial, Open Source
Written in
Rust
Supported Languages
Go, Java, JavaScript, Python
Compatible With
PostgreSQL
Operating System
Linux
License
Apache v2

Database Entry

RisingWave


RisingWave is an open-source distributed streaming database targeting real-time analytics and event-driven applications. It uses the incremental computation model to process streaming data with low latency. RisingWave implements a traditional change propagation framework to keep user-defined materialized views up-to-date. An incremental checkpoint mechanism is used to ensure data consistency. It also has an elastic multi-node architecture with separate data and compute nodes. RisingWave is built from scratch with Rust, and is wire compatible with PostgreSQL.[05][06][07]

History[08][09]


RisingWave Database is built by RisingWave Labs (formerly known as Singularity Data), a database systems startup founded in 2021 by former IBM researcher and Amazon Redshift engineer Yingjun Wu.

While working at Amazon Redshift, Wu noticed that existing database systems cannot process streaming data efficiently and existing streaming systems were too complicated for most companies to use. This observation motivated Wu to found RisingWave Labs with a mission to “democratize stream processing”.

Checkpoints[10][11][12]


RisingWave uses the Chandy–Lamport algorithm to create consistent checkpoints.

To ensure that data is correct and consistent, read queries always fetch data from the most recent checkpoint. This means RisingWave does not ensure read-after-write consistency.

A local shared buffer is used to stage uncommitted write batches submitted by operators. The storage manager will notify all operators to commit their buffered writes into the shared storage when checkpoint trigger message has reached all operators.

Compression[13][14]


RisingWave applies both naive compression and prefix compression at block-level. It uses LZ4 and Zstd for naive compression.

Concurrency Control[15]


RisingWave does not support concurrency control in its compute engine. However, it does employ Multi-version Concurrency Control (MVCC) in its cloud-native LSM-Tree-based storage engine.

Data Model[16]


RisingWave uses a relational data model. Relational tables are composed of a list of strongly-typed columns. All columns are implicitly nullable. RisingWave supports primitive data types of: boolean, integer, fixed-point and floating-point numbers, strings, and temporals. Composite data types of struct and list are also supported.

Foreign Keys


Indexes[17][15]


RisingWave does not support traditional index data structures. Instead, index is implemented as a specialized materialized view. RisingWave's storage engine stores materialized view as key-value pairs in log-structured merge trees.

Isolation Levels


Joins[18][19][20]


RisingWave supports join with hash join, nested loop join, and index nested loop join (also called lookup join). RisingWave has two execution modes: the batch-query mode and the streaming mode. All three join strategies are used in the batch-query mode, while only hash join and lookup join are used in the streaming mode. The supported join types are: inner join, left outer join, right outer join, and full outer join. RisingWave supports time window functions, window joins are also supported.

Logging[11]


Parallel Execution[21][22][23][24]


RisingWave supports bushy parallelism in both its batch-query and streaming modes. Consistent hashing is employed to partition data for parallel execution.

Query Compilation


Query Execution[25][16]


RisingWave adopts a vectorized model.

Query Interface[26][27]


SQL

The RisingWave SQL query interface is mostly compatible with PostgreSQL. It has client library in Java, Node.js, Python, and Go. RisingWave also offers UDF API for Python. RisingWave is wire compatible with PostgreSQL, and can be accessed with PostgreSQL terminal psql. As a cloud-native database, RisingWave can be integrated with cloud services such as Confluent Cloud, DataStax, and Grafana Cloud. To support stream processing, RisingWave can be integrated with the following message brokers or streaming services: Kafka, Redpanda, Apache Pulsar, DataStax Astra Streaming, StreamNative Cloud, and Kinesis Data Streams.

Storage Architecture[15][12]


RisingWave has a disc-oriented storage architecture. Its storage engine uses shared storage to store files.

Storage Model[15][28][16]


RisingWave uses the row store format, in which each row is encoded into key-value entries. All key-value pairs are stored in block-based SSTables. Each SST consists of two files. The .data file is composed of 64kb sized blocks containing the actual key-value pairs. A second .meta file contains metadata such as min-max index, Bloom filter, and per-block metadata.

System Architecture


Citations

28 sources
  1. RisingWave | Streaming Infrastructure for Agentic AI risingwave.com
  2. GitHub - risingwavelabs/risingwave: Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. · GitHub github.com
  3. https://docs.risingwave.com/docs/latest/intro risingwave.com Dead — Check Archive
  4. https://twitter.com/RisingWaveLabs twitter.com
  5. https://docs.risingwave.com/docs/current/intro risingwave.com Dead — Check Archive
  6. risingwave/docs at main · risingwavelabs/risingwave · GitHub github.com
  7. https://www.risingwave.com/products/RisingWaveDatabase/ risingwave.com Dead — Check Archive
  8. https://www.risingwave.com/company/ risingwave.com Dead — Check Archive
  9. Streaming data processing platform RisingWave lands $36M to launch a cloud service | TechCrunch techcrunch.com
  10. https://github.com/risingwavelabs/risingwave/blob/main/docs/checkpoint.md github.com Dead — Check Archive
  11. https://docs.risingwave.com/docs/current/fault-tolerance risingwave.com Dead — Check Archive
  12. https://docs.risingwave.com/docs/current/data-persistence risingwave.com Dead — Check Archive
  13. risingwave/src/storage/src/hummock/sstable/block.rs at main · risingwavelabs/risingwave · GitHub github.com
  14. https://github.com/risingwavelabs/risingwave/blob/main/docs/state-store-overview.md#compaction github.com Dead — Check Archive
  15. https://github.com/risingwavelabs/risingwave/blob/main/docs/state-store-overview.md github.com Dead — Check Archive
  16. https://github.com/risingwavelabs/risingwave/blob/main/docs/data-model-and-encoding.md github.com Dead — Check Archive
  17. Shared Indexes and Joins in Streaming Databases | RisingWave risingwave.com
  18. https://github.com/risingwavelabs/risingwave/tree/main/src/batch/src/executor/join github.com Dead — Check Archive
  19. https://docs.risingwave.com/docs/current/sql-select#parameters risingwave.com Dead — Check Archive
  20. https://docs.risingwave.com/docs/current/sql-function-time-window#window-joins risingwave.com Dead — Check Archive
  21. https://github.com/risingwavelabs/risingwave/blob/main/docs/architecture-design.md github.com Dead — Check Archive
  22. https://github.com/risingwavelabs/risingwave/blob/main/docs/consistent-hash.md github.com Dead — Check Archive
  23. https://github.com/risingwavelabs/risingwave/blob/main/docs/batch-local-execution-mode.md github.com Dead — Check Archive
  24. https://github.com/risingwavelabs/risingwave/blob/main/docs/streaming-overview.md github.com Dead — Check Archive
  25. risingwave/src at main · risingwavelabs/risingwave · GitHub github.com
  26. https://docs.risingwave.com/docs/current/rw-integration-summary risingwave.com Dead — Check Archive
  27. https://docs.risingwave.com/docs/current/risingwave-flink-comparison risingwave.com Dead — Check Archive
  28. risingwave/integration_tests/iceberg-sink/README.md at main · risingwavelabs/risingwave · GitHub github.com
Revision #15