- Add clickhouse-jdbc, springdoc-openapi, actuator, testcontainers deps - Add slf4j-api to core module - Create Docker Compose with ClickHouse service on ports 8123/9000 - Create ClickHouse DDL: route_executions, route_diagrams, agent_metrics - Configure application.yml with datasource, ingestion buffer, springdoc Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
58 lines
2.1 KiB
SQL
58 lines
2.1 KiB
SQL
-- Cameleer3 ClickHouse Schema
|
|
-- Tables for route executions, route diagrams, and agent metrics.
|
|
|
|
CREATE TABLE IF NOT EXISTS route_executions (
|
|
execution_id String,
|
|
route_id LowCardinality(String),
|
|
agent_id LowCardinality(String),
|
|
status LowCardinality(String),
|
|
start_time DateTime64(3, 'UTC'),
|
|
end_time Nullable(DateTime64(3, 'UTC')),
|
|
duration_ms UInt64,
|
|
correlation_id String,
|
|
exchange_id String,
|
|
error_message Nullable(String),
|
|
error_stacktrace Nullable(String),
|
|
-- Nested processor executions stored as parallel arrays
|
|
processor_ids Array(String),
|
|
processor_types Array(LowCardinality(String)),
|
|
processor_starts Array(DateTime64(3, 'UTC')),
|
|
processor_ends Array(DateTime64(3, 'UTC')),
|
|
processor_durations Array(UInt64),
|
|
processor_statuses Array(LowCardinality(String)),
|
|
-- Metadata
|
|
server_received_at DateTime64(3, 'UTC') DEFAULT now64(3, 'UTC'),
|
|
-- Skip indexes
|
|
INDEX idx_correlation correlation_id TYPE bloom_filter GRANULARITY 4,
|
|
INDEX idx_error error_message TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 4
|
|
)
|
|
ENGINE = MergeTree()
|
|
PARTITION BY toYYYYMMDD(start_time)
|
|
ORDER BY (agent_id, status, start_time, execution_id)
|
|
TTL start_time + INTERVAL 30 DAY
|
|
SETTINGS ttl_only_drop_parts = 1;
|
|
|
|
CREATE TABLE IF NOT EXISTS route_diagrams (
|
|
content_hash String,
|
|
route_id LowCardinality(String),
|
|
agent_id LowCardinality(String),
|
|
definition String,
|
|
created_at DateTime64(3, 'UTC') DEFAULT now64(3, 'UTC')
|
|
)
|
|
ENGINE = ReplacingMergeTree(created_at)
|
|
ORDER BY (content_hash);
|
|
|
|
CREATE TABLE IF NOT EXISTS agent_metrics (
|
|
agent_id LowCardinality(String),
|
|
collected_at DateTime64(3, 'UTC'),
|
|
metric_name LowCardinality(String),
|
|
metric_value Float64,
|
|
tags Map(String, String),
|
|
server_received_at DateTime64(3, 'UTC') DEFAULT now64(3, 'UTC')
|
|
)
|
|
ENGINE = MergeTree()
|
|
PARTITION BY toYYYYMMDD(collected_at)
|
|
ORDER BY (agent_id, metric_name, collected_at)
|
|
TTL collected_at + INTERVAL 30 DAY
|
|
SETTINGS ttl_only_drop_parts = 1;
|