Files
triggerdotdev--trigger.dev/internal-packages/clickhouse
Matt Aitken f38d35e9f6 ClickHouse replication improvements (retrying, strip bad unicode chars) (#2205)
* Add retry logic for insert operations

Add a generic retry mechanism for task run and payload inserts to handle
transient connection errors. The new #insertWithRetry method retries up to
three times with exponential backoff and jitter on retryable connection
errors such as connection resets or timeouts. Errors are logged and
recorded in tracing spans to improve observability and robustness of the
replication service.

* Replication settings are configurable

* Log out the runIds for failed batches

* Detecting bad JSON in run replication and ignoring it

* Reproduced split unicode error

* Move output file

* Massively improved the performance

* Minor performance improvements

* Unskip tests

* Remove unused test in CH package

* Fix for the ClickHouse UI explorer

* RunReplication keepAlive defaults to false

* Add concurrency_key and bulk_action_group_ids to ClickHouse task runs

* ClickHouse package doesn't need to be built anymore for the webapp

* Set the concurrency_key from the run replication service
2025-06-30 16:32:02 +01:00
..

ClickHouse Table Naming Conventions

The following document is heavily inspired by the Unkey ClickHouse naming conventions.

This document outlines the naming conventions for tables and materialized views in our ClickHouse setup. Adhering to these conventions ensures consistency, clarity, and ease of management across our data infrastructure.

General Rules

  1. Use lowercase letters and separate words with underscores.
  2. Avoid ClickHouse reserved words and special characters in names.
  3. Be descriptive but concise.

Table Naming Convention

Format: [prefix]_[domain]_[description]_[version]

Prefixes

  • raw_: Input data tables
  • tmp_{yourname}_: Temporary tables for experiments, add your name, so it's easy to identify ownership.

Versioning

  • Version numbers: _v1, _v2, etc.

Aggregation Suffixes

For aggregated or summary tables, use suffixes like:

  • _per_day
  • _per_month
  • _summary

Materialized View Naming Convention

Format: [description]_[aggregation]_mv_[version]

  • Always suffix with mv_[version]
  • Include a description of the view's purpose
  • Add aggregation level if applicable

Examples

  1. Raw Data Table: raw_sales_transactions_v1

  2. Materialized View: active_users_per_day_mv_v2

  3. Temporary Table: tmp_eric_user_analysis_v1

  4. Aggregated Table: sales_summary_per_hour_mv_v1

Maintain consistent naming across related tables, views, and other objects:

  • raw_user_activity_v1
  • user_activity_per_day_v1
  • user_activity_per_day_mv_v1

By following these conventions, we ensure a clear, consistent, and scalable naming structure for our ClickHouse setup.