DuckCon #7

When the sea lion learns to quack: DuckDB as a MariaDB storage engine

Roman Nozdrin · DuckCon #7
10
sections
9
slides
~17 min
duration
DuckDBMariaDBStorage EngineOLAPQuery PushdownBenchmarks
Watch on YouTube ↗
01 / The Goal

Teaching the sea lion to quack

frame_00m00s.png
frame_00m00s.png
frame_00m36s.png
frame_00m36s.png
02 / The Pool: OLAP in MariaDB Today

Existing analytics options and their limits

frame_06m18s.png
frame_06m18s.png
03 / Architecture of the Smart Engine

How MariaDB and DuckDB split responsibilities

frame_06m30s.png
frame_06m30s.png
More detail

Writes: native MariaDB DDL is translated into DuckDB syntax via converters. Multi-statement transactions can mutate both DuckDB tables and other engines (InnoDB, Aria). Mutations are row-by-row or batched; a delta appender buffer in the THD context periodically flushes into a temporary DuckDB table, which is merged with the persistent table at commit time.

04 / Read Path and Cross-Engine Joins

Select-handler pushdown and replacement scans

frame_06m39s.png
frame_06m39s.png
05 / First Quack in Numbers: TPC-H

Engine vs DuckDB 1.5.2 CLI on TPC-H SF1000

frame_06m39s.png
frame_06m39s.png
More detail

Hardware: AMD EPYC 9454 (48 cores), 1125.5 GB RAM, Micron 7500 PRO NVMe, both with a 90 GB memory limit, DuckDB v1.5.2. The engine currently tracks DuckDB 1.5.2 and will follow new vanilla DuckDB versions.

06 / ClickBench Results

On-disk size, cold and hot runs, concurrency

07 / Concurrent, Multi-Tenant Scenarios

Running 10 ClickBenches in parallel

08 / Embedding Isn't Enough

The MariaDB parser shuts the door on rich SQL

frame_15m09s.png
frame_15m09s.png
09 / The Plugin Path Forward

A new plugin to unlock full DuckDB SQL

frame_12m24s.png
frame_12m24s.png
10 / Acknowledgements & Availability

Thanks and where to try it

frame_16m00s.png
frame_16m00s.png
frame_16m21s.png
frame_16m21s.png

Key Takeaways