We open-sourced a fork of SigNoz's schema migrator that makes SigNoz work on SharedMergeTree. That means it runs on both ObsessionDB and ClickHouse Cloud.
The problem: SigNoz's production setup assumes sharded ClickHouse. The official docs spec 56 CPU cores, 152 GiB RAM and 10 nodes including 3 ZooKeeper instances. Your observability tool becomes its own ops problem.
SigNoz's schema creates `_local` tables (ReplicatedMergeTree) and `Distributed` tables on top. Our migrator does three things: - Creates the `distributed_*` tables as SharedMergeTree (this is where data actually lives) - Creates the local table names as VIEWs pointing to the SharedMergeTree tables - Redirects Materialized Views to write to SharedMergeTree directly, since VIEWs can't receive inserts
SigNoz doesn't know the difference. The Query Service reads from the same table names. The OTEL Collector writes to the same table names. No core code changes.
This works with ClickHouse Cloud too, not just us. Same docker compose, different credentials.
Repo: https://github.com/obsessiondb/signoz-obsessiondb Blog post with the full technical walkthrough: https://obsessiondb.com/blog/scale-signoz-on-obsessiondb
What other ClickHouse-backed tools would benefit from SharedMergeTree support? Would love to hear what you're running into.