mirror of
https://github.com/ajvpot/meshexplorer.git
synced 2026-07-05 09:11:00 +02:00
c689ca1b3d
Replace the per-request argMax/GROUP-BY views with insert-triggered (incremental) materialized views so map node positions, node search, and public-channel chat read pre-aggregated state instead of re-scanning all of meshcore_packets on every query. - 005: meshcore_adverts_latest_state (AggregatingMergeTree of argMaxState/ min/maxState) + incremental MV + backfill; meshcore_adverts_latest becomes a -Merge view with the identical column contract. Node search reads it directly; map (unified_latest_nodeinfo) is unchanged. - 006: meshcore_public_channel_messages_raw, a decoded payload_type=5 MergeTree keyed (channel_hash, ingest_timestamp); chat dedups by message_id at read time over a timestamp-bounded scan. Streaming/pagination push channel+cursor onto the primary key. - Neighbor-edge MVs stay hourly REFRESH (they read the preserved view). Verified against full prod data (14.5M rows): exact parity (0 mismatches) and 5-9x faster reads with no regressions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>