-- logarchiver archive index schema. -- -- One row is written per stored S3 object. In-cluster this DDL is owned by the -- argocd bootstrap Job (a ClickHouse PostSync hook, like the logging stack's -- clickhouse-schema job); `logarchiver init-schema` applies the same statements -- for local/dev use, and `logarchiver init-schema --print` emits them. -- -- Keep this file in sync with internal/index/ddl.go (the source of truth used by -- init-schema). The database/table names below match the config defaults -- (database `logs`, table `archive_index`). CREATE DATABASE IF NOT EXISTS logs; CREATE TABLE IF NOT EXISTS logs.archive_index ( object_key String, -- S3 key of the stored object bucket LowCardinality(String), -- S3 bucket (e.g. logs-archive) subject LowCardinality(String), -- NATS subject the batch came from hosts Array(LowCardinality(String)),-- distinct source hosts in the object min_ts DateTime64(3), -- earliest event time in the object max_ts DateTime64(3), -- latest event time in the object event_count UInt64, -- number of events raw_bytes UInt64, -- pre-compression NDJSON bytes stored_bytes UInt64, -- stored object bytes (post zstd+encrypt) compression LowCardinality(String), -- 'zstd' cipher LowCardinality(String), -- 'AES-256-GCM' container_format LowCardinality(String), -- 'LARC1' key_name LowCardinality(String), -- Vault GPG engine key name key_fingerprint String, -- 40-hex OpenPGP fingerprint (engine %X) created_at DateTime64(3) DEFAULT now64(3), INDEX idx_hosts hosts TYPE bloom_filter GRANULARITY 1 ) ENGINE = MergeTree PARTITION BY toYYYYMM(min_ts) ORDER BY (subject, min_ts, object_key);