The map and the territory
How OBSESC pairs a fast, rebuildable navigation tier with a complete, open fidelity tier, and why.
OBSESC stores every log event you send it. It also keeps a compact picture of those events so you can ask questions without reading them all back. We call the picture the map (the navigation tier) and the complete record the territory (the fidelity tier). This page explains how the two relate. The rest of the Concepts section builds on it.
Two tiers, one history
Both tiers describe the same events. They are built for different jobs.
| Navigation tier (the map) | Fidelity tier (the territory) | |
|---|---|---|
| What it holds | Compact summaries that make exploring history fast | Every accepted event, complete: timestamp, service, original body bytes and every attribute |
| Where it lives | EBS volumes attached to your OBSESC node, inside your account | Your S3 bucket, inside your account |
| Format | OBSESC’s own proprietary format | Apache Parquet files with Apache Iceberg table metadata |
| Role | An accelerator for the console | The source of truth |
| If lost | Rebuilt from the fidelity tier | Not recoverable from the map. The map holds summaries, not your events |
| Readable without OBSESC | No | Yes, with any engine that reads Parquet or Iceberg |
The map answers aggregate questions
Questions like “how many errors did checkout log last March?”, “what was p99 latency by endpoint over the last year?” or “which log patterns are new this week?” are answered from the map, quickly, however long the time range. In the console these are the Explore views, What changed?, Seen this before?, What tends to follow? and unusual behaviour.
Counts are exact. Some figures, such as percentiles and distinct counts, are close estimates. See Navigation tier.
The territory answers “show me the events”
When you need the events themselves, OBSESC reads the fidelity tier. This happens when you search, run SQL over raw_events, pull the context around a hit, or drill down from something unusual. OBSESC tells you how much a search will read before it starts. This is deliberate search.
The fidelity tier lives in your bucket as open columnar files. You can query the same data with your own engines. OBSESC doesn’t have to be running. See Fidelity tier.
The rules that tie them together
- The territory is authoritative. The map is derived from your stored events, never the other way round.
- The map can be redrawn. In the default deployment, if a navigation volume is lost or wiped, OBSESC rebuilds the map from the data you still retain in your bucket. See Rebuilding the navigation tier.
- SQL reads your events. SQL over
raw_eventsreads your stored events in S3, not the map. - Both tiers stay in your account. The navigation tier is on EBS volumes you own. The fidelity tier is in an S3 bucket you own, encrypted with a KMS key you own.
One thing to watch: map lag
The map is built slightly behind the territory. Under a burst, the map lags instead of slowing ingest down.
Aggregate views in the console read the map. A period the map hasn’t caught up with yet shows no data, not an error. When you need the most recent events, use SQL over raw_events. OBSESC’s built-in alerts tell you when the map is falling behind, so lag isn’t mistaken for silence. See Navigation tier.
What you keep if you leave
If you stop running OBSESC, every event you sent stays in your bucket as Parquet with Iceberg metadata, readable by Athena, Trino, Spark, DuckDB or any other engine that speaks those formats. You lose the map, which only OBSESC reads.
Next steps
- Navigation tier: what the map does for you, and how to keep it fresh
- Fidelity tier: how events are laid out in your bucket
- Deliberate search: how searches are sized and confirmed
- Data flow: the path an event takes from your shipper to your bucket