v0.1 vs v0.2
Standalone Columnstore vs Columnar Copy
In v0.1, standalone columnstore tables were created with CREATE TABLE ... USING columnstore
with direct writes to these tables.
In v0.2, columnstore tables are created as mirrors of existing rowstore tables using CALL mooncake.create_table()
. All writes to the rowstore table are automatically replicated to the columnstore with sub-second latency. Reads from columnstore tables have transactional guarantees.
Streaming vs Batch Writes
v0.1 was optimized for batch writes. Each write operation generated new Parquet files, making it best suited for infrequent, large batch operations.
v0.2 efficiently handles streaming inserts, updates, and deletes. Moonlink buffers modifications and periodically flushes them to Iceberg tables. Automatic compaction maintains optimal performance over time.
Deployment Models
v0.1 is deployed as an extension in your primary Postgres instance.
v0.2 offers greater flexibility with two deployment options:
- As an extension in your primary database (similar to v0.1)
- As a separate analytics-replica that replicates from your primary OLTP instance
This separation allows write workloads to remain on an unchanged primary instance while analytics queries run on the optimized replica.
Feature | v0.1 | v0.2 |
---|---|---|
Fast Analytics Queries in Postgres | ✅ | ✅ |
Write Pattern | Batched Writes directly into Columnstore | Sync columnstore with updating rowstore |
Point insert/update/deletes on columnstore | ❌ | ✅ |
Storing data in Object Storage | ✅ | coming soon |
Available on Neon Postgres | ✅ | coming soon |
Open Table Format Supported | Delta Lake | Iceberg |
Deployment | As an extension | As an extension, or a read replica |
Use-Case | Data Warehousing / Archiving | Real-time Analytics on Postgres Tables |