Columnar Data, from the inside out Compare the layers →

Columnar / Start with the bytes

Data, from the
inside out.

Understand how analytical data is stored, organized and queried. Follow a real file from bytes to values, then explore table versions and execution plans.

ParquetColumns stored as bytesIceberg · Delta LakeFiles selected by a versionArrowTyped arrays in memoryDuckDB · DataFusionOperators turn values into answers
Table metadata selects files. Readers decode stored columns into arrays. Engines compute on those arrays.

Choose a layer to explore.

File format

Parquet

Columns, row groups, pages and encodings inside one file.

Read the guide →
Memory and interchange

Arrow

Typed arrays, validity, offsets and record batches across process boundaries.

Read the guide →
Table format

Iceberg

Snapshots and manifests select the files that make a table.

Read the guide →
Table format

Delta Lake

Ordered commits and checkpoints reconstruct table membership.

Read the guide →
Query engine

DuckDB

Turn a local Parquet file into an answer with SQL.

Read the guide →
Execution

Query engines

Compare DuckDB and DataFusion plans and follow Arrow batches.

Read the guide →
Files, tables and search

Lance

Trace fragments and page buffers, then compare exact and indexed vector searches.

Read the guide →

01 / File formats

Parquet

Columns, row groups, encodings and compression. One small penguin dataset makes the structure tangible.

LEARN

A file, explained

Step through real bytes and see how the pieces fit together.

Read the interactive guide →
EXPLORE

Your data, locally

Inspect schema, values and metadata. Files stay in your browser.

Use the explorer →
BUILD

The TypeScript reader

See the APIs, value model and limits of the parser behind these tools.

Read the API overview →
All Parquet resources →