| Query language | SQL + PromQL (dual, native) | SQL primary, early-stage experimental PromQL support |
| Data types | Metrics + Logs + Traces in one database | OLAP; observability via ClickStack |
| PromQL support | Native PromQL query engine | Experimental (limited to basic functions like rate/delta/increase) |
| OpenTelemetry | Native OTLP (all signals) | OTLP ingestion via ClickStack (separate from core OLAP engine) |
| Trace support | Native Jaeger Query API | Via ClickStack |
| Storage design | Timestamp-first layout, optimized for time-series access | Time is another column; general-purpose OLAP layout |
| Schema evolution | Dynamic — new attributes auto-create columns | Requires ALTER TABLE or schema migration |
| Storage format | Apache Parquet (columnar, compressed) | MergeTree engine family (columnar) |
| Log storage efficiency | 1.3GB (13% compression ratio) | 2.6GB (26% compression ratio) — 2x larger |
| Storage backend | Native object storage (S3, OSS, GCS) | Local disk primary, S3 via cold storage |
| Ingestion pipeline | SDK → native OTLP endpoint → database (no middleware) | Typically requires buffering (Redis/Kafka) + ingestion workers |
| Scaling model | Compute-storage disaggregation, stateless | Shared-nothing sharding, stateful replicas |
| Continuous aggregation | Built-in SQL + Flow streaming engine | Materialized views + aggregating MergeTree |
| License | Apache 2.0 | Apache 2.0 |
| Integration effort | Out-of-the-box observability stack | ClickStack + configuration for observability |