Pick the storage components a self-hosted Langfuse v3 deployment depends on
Four stores: Postgres (metadata), ClickHouse (analytics), Redis (queues + cache), S3-compatible blob storage (large payloads).
Picture running a busy restaurant. You need different storage for different kinds of things. The safe in the office holds the rare, valuable paperwork like contracts and recipes. The walk-in fridge holds bulk ingredients you sort through every day. The trash bin holds short-lived order tickets that get processed and tossed. The basement holds boxes of bulky leftover packaging that you rarely touch but need to keep. Trying to put everything in the safe would jam it. Trying to put everything in the trash would lose it. Langfuse v3 does the same split. Each kind of data goes into the store that best matches how often it is read, how big it is, and how long it needs to live.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Concept explanation~2 min read
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Langfuse v3 is one of the cleanest public examples of a modern multi-store observability architecture. Knowing what each store does and why it exists is the difference between deploying it confidently and getting paged at 3am because the wrong store hit its limit.
The four-store split is also a useful general lesson. The same pattern shows up in PostHog, Honeycomb-style internal builds, and most production telemetry systems above a certain scale. Internalizing the rationale here pays off well beyond Langfuse-specific deployments.
Postgres: transactional metadata
Postgres holds the small, strongly-consistent, mutable data: user accounts, organizations, projects, API keys, prompt template definitions, dataset definitions, audit logs.
The defining characteristics of this workload are low volume, high consistency requirements, and frequent in-place updates. A prompt template gets edited; a user changes their email; an API key is rotated. Each operation needs to be atomic and immediately visible to subsequent reads. This is exactly the workload Postgres was designed for.
The data fits comfortably on a single Postgres instance for most deployments and rarely exceeds tens of gigabytes even for large customers. Replication and backup follow standard Postgres patterns. There is no need to shard or scale out for this slice.
Situations where this technique stops working.
2–4 min · Everything important, quickly.
Real products, models, and research that use this idea.
- Langfuse v3 self-hosted Docker Compose includes Postgres, ClickHouse, Redis, and MinIO out of the box.
- Production Langfuse deployments often use managed RDS Postgres, ClickHouse Cloud, ElastiCache Redis, and S3.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy does Langfuse use ClickHouse rather than TimescaleDB or DuckDB for the analytics store?
Compare ingestion throughput, distributed scaling, and the maturity of cloud-managed offerings.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Red flags & common mistakes
The phrases that signal junior thinking. Click to expand.
Trying to run production-scale trace analytics on Postgres alone. The v3 architecture moved that workload to ClickHouse for good reason.
60 second bullets to scan on the way to the call.
Name the four storage backends in Langfuse v3
Explain why analytics moved out of Postgres into ClickHouse
Primary sources. Browse if you want the original framing.
Same topic, related formats. Practice these next.