DuckDB Fundamentals
DuckDB is an in-process analytical SQL database. It runs inside your application or CLI, stores data in a columnar layout, and answers aggregation and join queries over local files and tables without installing a separate database server.
itData engineering and analytics | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — DuckDB Fundamentals
DuckDB is the analytical SQL engine that decided the warehouse could live inside the process you already have open. No separate server for the common case. You open memory or a file, type SQL, and it answers aggregations and joins where the data already sits.
Before this shape of tool, the usual forks were painful. Either you stood up a warehouse for a question that fit on a laptop, or you dragged millions of rows through a row-at-a-time engine and watched the CPU negotiate with each value individually. DuckDB takes SQLite’s embedding habit and aims it at OLAP: many rows, few columns, heavy scans.
Two ideas carry almost everything else. Columnar storage keeps each column together so a query that needs three fields does not haul the other ninety. Vectorized execution processes batches of values instead of walking row by row. Remember those, and the rest of the vocabulary starts attaching to something real.
The pleasant surprise is files as tables. A Parquet path can appear in FROM. Globs pull a folder into one scan. You materialize a native table only when repetition justifies it. Extensions then widen the world: HTTPS, S3, JSON, and friends load when needed instead of shipping in every binary.
The less pleasant surprise is concurrency. Inside one process, threads can write when they do not fight over the same row. Across processes, either many readers open the file read-only, or one process holds the pen. That is not a missing checkbox. It is how the engine keeps catalogs and pages cached for speed. Shared writable analytics belongs on MotherDuck, DuckLake, or the maturing Quack path, not on hope and NFS locks.
If a week from now you remember only this tab, keep three moves: open the right mode (memory versus file), query the file before you invent a schema, and treat multi-writer sharing as a deployment choice rather than a PRAGMA.
Next reads: the Intro for the full map, the Cheatsheet when you need the decision tables, Practice when you want the commands under your fingers, and Field Notes when you want the production bruises the cheerful docs understate.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://duckdb.org/why_duckdb
Supports
- In-process embedding modeled on SQLite simplicity for OLAP
- Columnar-vectorized execution and OLAP workload definition
- No external dependencies; amalgamation packaging
- ACID via bulk-optimized MVCC
- Extensions for Parquet, JSON, HTTP(S), S3
- MIT license; DuckDB Foundation IP
- SIGMOD 2019 demo paper citation
- https://duckdb.org/docs/
Supports
- Official documentation entry point
- https://duckdb.org/docs/installation/
Supports
- CLI and client installation matrix
- https://duckdb.org/docs/current/clients/cli/overview.html
Supports
- CLI as dependency-free executable
- SQLite shell heritage for CLI-specific behavior
- https://duckdb.org/docs/current/clients/python/overview.html
Supports
- In-memory versus persistent connect patterns
- Thread-safety of global connection versus per-thread connects
- Configuration dictionary including threads
- https://duckdb.org/docs/current/connect/concurrency.html
Supports
- Single-process read-write versus multi-process READ_ONLY
- Why caching drives the concurrency model
- Optimistic concurrency conflicts and retry guidance
- Quack and DuckLake as multi-writer paths beyond native files
- File lock troubleshooting note
- https://duckdb.org/docs/current/data/parquet/overview.html
Supports
- FROM path / read_parquet / globs / CREATE TABLE AS
- Parquet metadata table functions
- HTTPS parquet reads
- https://duckdb.org/docs/current/guides/performance/how_to_tune_workloads.html
Supports
- preserve_insertion_order for OOM on large import/export
- Row group default 122880 and parallelism implications
- Out-of-core spill via temp_directory
- Blocking operators list
- threads configuration
- https://duckdb.org/docs/current/extensions/overview.html
Supports
- duckdb_extensions listing
- INSTALL / LOAD mechanism across clients
- https://duckdb.org/history/
Supports
- 2018 CWI start; 2019 SIGMOD v0.1
- 2021 Labs and Foundation
- 2022 MotherDuck partnership
- 2024-06-03 DuckDB 1.0.0
- 2025 Local UI and DuckLake introduction
- https://duckdb.org/release_calendar
Supports
- Historical release dates including 0.5.0 and 1.0 lineage
- https://github.com/duckdb/duckdb/releases/tag/v0.1.0
Supports
- v0.1.0 preview release date 2019-06-27
- https://motherduck.com/docs/
Supports
- Managed DuckDB cloud documentation entry
- https://motherduck.com/
Supports
- MotherDuck product homepage
- https://ducklake.select/
Supports
- DuckLake homepage
- https://github.com/davidgasquez/awesome-duckdb
Supports
- Ecosystem curation source for awesome links
- https://mode.com/blog/how-we-switched-in-memory-data-engine-to-duck-db-to-boost-visual-data-exploration-speed/
Supports
- Mode Helix migration from VoltDB to embedded DuckDB
- Phased shadow rollout and production embedding use case
- https://motherduck.com/case-studies/hazel-ai-co-worker-ecommerce/
Supports
- Concurrent writers limitation blocking cloud production on local DuckDB
- Local DuckDB for dbt; MotherDuck for production pattern
- https://motherduck.com/blog/differential-storage-building-block-for-data-warehouse/
Supports
- Challenges hosting DuckDB native files as collaborative warehouse storage
- https://sqlite.org/
Supports
- SQLite homepage for landscape contrast
- https://clickhouse.com/
Supports
- ClickHouse homepage
- https://chdb.io/
Supports
- chDB homepage
- https://pola.rs/
Supports
- Polars homepage
- https://spark.apache.org/
Supports
- Apache Spark homepage
- https://www.snowflake.com/
Supports
- Snowflake homepage
- https://cloud.google.com/bigquery
Supports
- BigQuery homepage
- https://evidence.dev/
Supports
- Evidence homepage
- https://www.rilldata.com/
Supports
- Rill homepage
- https://www.microsoft.com/microsoft-fabric
Supports
- Microsoft Fabric homepage
