pg Koldstore
Early development — not production-ready
KoldStore is an open-source PostgreSQL extension for forever-growing app
tables. It keeps the active working set in the PostgreSQL heap, moves older rows
to compressed Parquet you control, and lets supported SELECT queries continue
through the original relation using the experimental KoldMergeScan path.
This is different from pg_kalam: pg_kalam is a foreign-data wrapper that talks to a KalamDB server. KoldStore runs inside your PostgreSQL instance and tiers storage for local heap tables.
What you get
| Tier | Where it lives | Optimized for |
|---|---|---|
| Hot | PostgreSQL heap + native indexes | Active data, low-latency reads, transactional writes |
| Cold | Open Parquet (filesystem, S3/MinIO, GCS, Azure) | History, cost, retention |
Placement is policy-driven (hot_row_limit or age via move_after), not
access-frequency measurement. Cold-capable supported reads go through
KoldMergeScan so the latest resolved row wins across both tiers. Catch-up clients use
koldstore.changes_since over an exclusive seq cursor.
Good fit today
- Messages and chat history
- AI memory / conversation transcripts
- Audit logs and append-heavy events
- Notifications, activity feeds, IoT telemetry
Not a good fit yet
- Payment ledgers that need global uniqueness across hot and cold
- Workloads requiring read-your-own-uncommitted-writes across tiers,
SERIALIZABLE, row locks, or native cold-rowON CONFLICTbehavior - Workloads that need cold point lookups as fast as a B-tree
- Schema evolution, compaction, and coordinated backup/PITR that are still hardening
Read this section in order
- Installation — preload, Docker, from source
- Getting Started — first managed table
- Under the Hood — WAL capture, mirror, merge scan
- Why a Mirror? — WAL transport vs latest-state
__cl - Manage & Flush — policies and jobs
- Change Feed —
changes_since/last_rows - SQL API Reference — every shipped function and GUC
- Operations — auto-flush, mirror health
- Benchmarks — storage wins, contextual DML, how to re-run with
--rows - Status & Limits — honest current boundaries
Source and packaging
- Docs: /docs/pg-koldstore
- Repository (source / scripts): github.com/kalamdb/koldstore
- License: Apache 2.0
- PostgreSQL: 15–18 experimental build/runtime matrix;
latestpreview image uses PG 18 and a separatepg16tag remains available - Product page: /koldstore