Install the ClickHouse Node.js client:Documentation Index
Fetch the complete documentation index at: https://beta.docs.sqd.dev/llms.txt
Use this file to discover all available pages before exploring further.
Table design
UseCollapsingMergeTree with a sign Int8 DEFAULT 1 column. This engine enables efficient fork rollbacks: to cancel rows, the target re-inserts them with sign = -1 and ClickHouse merges the pair during background processing.
Design notes:
- Apply
DoubleDelta + ZSTDcodecs to monotonically increasing columns such as block numbers and timestamps. - Use
LowCardinalityfor columns with low cardinality like addresses to reduce storage and speed up filtering. - Store 256-bit integers as
UInt256; serialize JavaScriptBigIntvalues to strings before insertion.
onStart using store.command():
onData
Call store.insert() to queue an insert. The call is non-blocking — inserts fire concurrently and are fully flushed when the target closes:
onRollback
Implement onRollback to handle blockchain forks. It is invoked in two situations:
type: 'offset_check'— on startup, when a saved cursor is found, to discard writes from a previous crashed or partial runtype: 'blockchain_fork'— when the stream detects a chain reorganisation
store.removeAllRows() to cancel rows past the safe point. For CollapsingMergeTree tables this re-inserts matching rows with sign = -1:
Complete example
Docker setup
docker-compose.yml
