SQL database engine · Rust

One database.
Two ways to run.

RadixDB combines transactional row updates with fast columnar reads. Embed it in a Rust application or run it as a standalone TCP server.

MVCC and WALEmbedded + TCPApache 2.0
radixdb · quick start
radix> SELECT
  order_no,
  customer_id.name AS customer,
  total
FROM sales_orders
WHERE status = 'ready'
ORDER BY created_at DESC
LIMIT 2;
SO-1048Northwind12 480.00SO-1047Atlas Retail8 920.50
2 rows · 0.7 ms

Why RadixDB

Transactions and analytical reads in one engine

Mutable row versions serve current operations. Immutable compressed columnar blocks speed up reads over large datasets. Cache budgets let databases grow beyond available RAM.

01

Two connection modes

A local Rust API for embedding and a network TCP server for separate applications.

02

Hybrid storage

Row versions for changes, columnar blocks for scans, and controlled memory usage.

03

SQL without guesswork

A public matrix lists supported constructs, limits, and the tests that prove them.

Less noise around relationships

Navigate foreign keys

RadixDB can follow declared relationships directly in read-only SQL expressions. Shared prefixes and transitive paths are planned by the engine while NULL preserves LEFT semantics.

Documentation
SQL
-- no explicit JOIN required
SELECT o.order_no,
  o.customer_id.name,
  o.customer_id.group_id.title
FROM sales_orders o
WHERE o.customer_id.active = TRUE;

Run it where it fits

</>

Minimum latency

Embedded

Open the database inside your process through the Rust API. A fit for local tools, desktop applications, and services without a separate network layer.

TCP

One access point

Server

A standalone process owns the database and accepts TCP connections. Clients use prepared queries and typed values.

Start with your first database

The manual takes you from the CLI and table creation through transactions, clients, and server operations.

Read the manual