Airhouse stores your tables with DuckLake, an open lakehouse format. DuckLake splits every table into two parts:
- Data: Parquet files in S3-compatible object storage.
- Metadata: the catalog of schemas, tables, columns, files, and snapshots, stored in Postgres.
Each Airhouse database has its own catalog and its own storage location, so data in one database is never visible from another.
Create and load tables
Create tables in the lake catalog. The default schema is main, and admins can create more schemas:
Create a table from a query:
For bulk loads from your machine, use COPY ... FROM STDIN (psql’s \copy). See Connect with psql.
Every committed write creates new Parquet files and a new snapshot. Load data in batches (multi-row INSERT, INSERT ... SELECT, or COPY) instead of many single-row inserts.
Update and delete
UPDATE and DELETE work as in Postgres:
Transactions
DuckLake gives you ACID transactions. Each statement runs in its own transaction unless you group statements explicitly:
Other connections see your changes only after COMMIT. Use ROLLBACK to discard them.
Writes to the same database are committed one at a time, while reads never wait for writes. Writes to different databases don’t affect each other.
Schema changes
Adding, renaming, and dropping columns only changes catalog metadata. Existing Parquet files aren’t rewritten, so these changes are instant even on large tables:
Snapshots and time travel
Every committed change creates a new snapshot of the catalog. List the snapshots of your database:
Query a table as it was at an earlier snapshot or point in time:
Time travel is useful for auditing changes, debugging a pipeline, or recovering rows deleted by mistake:
Views
Admins can create views to share reusable query logic:
Where your data lives
When you run Airhouse yourself, you choose the object storage bucket (see Configuration). Each database’s Parquet files are stored under its own prefix in that bucket, and its catalog lives in Postgres. Because the data is standard Parquet and the catalog is standard DuckLake, your data stays in open formats.