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

On this page

See Also

VersionedCollapsingMergeTree

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

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 type.

Int8

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

See Also

  • CollapsingMergeTree
FiveonefourFiveonefour
Fiveonefour Docs
MooseStackTemplates
Changelog
Source506
  • Overview
  • Quick Start
  • Templates / Examples
Fundamentals
  • Moose Runtime
  • MooseDev MCP
  • Data Modeling
MooseStack in your App
  • App / API frameworks
Modules
  • Moose OLAP
  • Moose Streaming
  • Moose Workflows
  • Moose APIs
Deployment & Lifecycle
  • Moose Migrate
  • Moose Deploy
Reference
  • API Reference
  • Data Types
  • Table Engines
  • CLI
  • Configuration
  • Observability Metrics
  • Help
  • Changelog
Contribution
  • Documentation
  • Framework