We value your privacy

This site uses cookies to improve your browsing experience, analyze site traffic, and show personalized content. See our Privacy Policy.

  1. MooseStack
  2. Engines
  3. Versioned Collapsing Merge Tree

VersionedCollapsingMergeTree

Use VersionedCollapsingMergeTree when you need collapsing with out-of-order inserts. The version column ensures correct collapse ordering regardless of insertion order:

VersionedCollapsingTable.ts
import { OlapTable, ClickHouseEngines, Int8 } from "@514labs/moose-lib"; interface ExampleSchema {  id: Key<string>;  value: float;  timestamp: datetime;  sign: Int8;     // Required: 1 = state row, -1 = cancel row  version: number; // Required: version for ordering state changes} // Track user state with versioned collapsingconst exampleTable = new OlapTable<ExampleSchema>("versioned_collapsing_merge_tree_table", {  engine: ClickHouseEngines.VersionedCollapsingMergeTree,  orderByFields: ["id"],  sign: "sign",  ver: "version"});
CollapsingMergeTree vs VersionedCollapsingMergeTree

CollapsingMergeTree: Requires strictly consecutive insertion order. Use when you control insertion order (e.g., single writer).

VersionedCollapsingMergeTree: Uses a version column to handle out-of-order inserts. Use when multiple threads/sources insert data or order isn't guaranteed.

Both engines require the sign column to be Int8 type.

For more details, see the ClickHouse documentation on CollapsingMergeTree and VersionedCollapsingMergeTree.

See Also

  • CollapsingMergeTree

On this page

See Also
FiveonefourFiveonefour
Fiveonefour Docs
MooseStackHostingTemplatesGuides
Release Notes
Source531
  • Overview
Build a New App
  • 5 Minute Quickstart
  • Browse Templates
  • Existing ClickHouse
Add to Existing App
  • Next.js
  • Fastify
Fundamentals
  • Moose Runtime
  • MooseDev MCP
  • Language Server
  • Data Modeling
Moose Modules
  • Moose OLAP
  • Moose Streaming
  • Moose Workflows
  • Moose APIs & Web Apps
Deployment & Lifecycle
  • Moose Dev
  • Moose Migrate
  • Moose Deploy
Reference
  • API Reference
  • Data Types
  • Table Engines
  • CLI
  • Configuration
  • Observability Metrics
  • Help
  • Release Notes
Contribution
  • Documentation
  • Framework
VersionedCollapsingTable.ts
import { OlapTable, ClickHouseEngines, Int8 } from "@514labs/moose-lib"; interface ExampleSchema {  id: Key<string>;  value: float;  timestamp: datetime;  sign: Int8;     // Required: 1 = state row, -1 = cancel row  version: number; // Required: version for ordering state changes} // Track user state with versioned collapsingconst exampleTable = new OlapTable<ExampleSchema>("versioned_collapsing_merge_tree_table", {  engine: ClickHouseEngines.VersionedCollapsingMergeTree,  orderByFields: ["id"],  sign: "sign",  ver: "version"});