Skip to main content
Version: 0.2

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:

  1. As an extension in your primary database (similar to v0.1)
  2. 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.

Featurev0.1v0.2
Fast Analytics Queries in Postgres
Write PatternBatched Writes directly into ColumnstoreSync columnstore with updating rowstore
Point insert/update/deletes on columnstore
Storing data in Object Storagecoming soon
Available on Neon Postgrescoming soon
Open Table Format SupportedDelta LakeIceberg
DeploymentAs an extensionAs an extension, or a read replica
Use-CaseData Warehousing / ArchivingReal-time Analytics on Postgres Tables