Filesystem-native tables
Tables live as plain Parquet data and plain JSON metadata, so the storage layer stays inspectable, durable, and easy to move.
Scan like Parquet. Write like Postgres.
IcefallDB turns ordinary filesystem objects into a cold, immutable table layer for analytics: plain Parquet files, plain JSON metadata, native DataFusion execution, DuckDB read access, and a warm-aggregate cache for the queries that keep coming back.
native DataFusion engine
immutable snapshot committed
warm aggregate cache primed
The glacier model
Tables live as plain Parquet data and plain JSON metadata, so the storage layer stays inspectable, durable, and easy to move.
DELETE, UPDATE, and MERGE workflows land as controlled deltas, then settle into compacted immutable snapshots.
Repeated analytical cuts stay close to the surface, creating a warmer path through otherwise cold, immutable data.
Open core materials
IcefallDB is designed around transparent storage primitives and a fast Rust core: zero-copy ingest when files are already where they need to be, DataFusion for native execution, DuckDB read access for exploration, plus offline compaction and garbage collection for long-lived tables.
The Rust core coordinates snapshots, mutations, compaction, and query planning while leaving table data in ordinary files.
More in the core
Point and range lookups through a B-tree index, plus a tiny learned index for affine integer keys. Derived sidecars that accelerate reads without ever becoming the source of truth.
Optional Parquet Modular Encryption, table by table. Protect sensitive tables at rest while the rest of the lake stays plain and inspectable.
One-way export to Apache Iceberg v2 for tools that speak it, while IcefallDB metadata stays the source of truth.
Read-only access over S3-compatible object storage, so the same plain-file tables serve from local disk or the cloud.
An optional server speaks SQL over HTTP and amortizes table-open and engine-startup across many operations, with an optional mutation daemon.
Hash-chained manifests keep history auditable; built-in check and doctor commands validate every link and can repair derived state.
Interactive query face
import icefalldb
con = icefalldb.attach("/lakehouse", engine="icefalldb")
# row-level DELETE / UPDATE / MERGE over plain Parquet files
con.sql("DELETE FROM events WHERE tenant_id = 'acme' AND ts < TIMESTAMP '2024-01-01'")
con.sql("UPDATE events SET tier = 'cold' WHERE tenant_id = 'acme'")
Rows can change, but the table history stays frozen into immutable layers. IcefallDB lets the fall happen, then preserves the strata.
Immutable strata
Every commit forms a new layer. Old files can be compacted or collected offline while readers keep a stable view of the table they asked for.
Viewing snapshot 0048: fresh aggregates, compacted deltas, and a frozen manifest.
Build flexibily with IcefallDB
IcefallDB is shaped for analytical workloads that need transparent storage, immutable history, native execution, and practical row-level change.
IcefallDB.com is © 2026 VisorCraft, LLC. IcefallDB is dual-licensed under your choice of MIT or Apache-2.0.
DuckDB and PostgreSQL are trademarks of their respective owners. VisorCraft, LLC is not affiliated with, endorsed by, or sponsored by them.