What it’s good at
- Routing workloads. Messaging, feeds, agent traces, and microservice communication, where each destination wants a specific subset of keys rather than the whole stream.
- High key cardinality. Hundreds of thousands to millions of keys on one node. Any key’s log is a prefix scan on an LSM index, not a needle-in-a-haystack scan of an entire partition.
- Large read fan-out. Tens of thousands of concurrent followers reading from a single instance, scaled further by adding read replicas that pull straight from object storage.
- Per-key isolation. Position metadata is tracked per key, so a poison-pill message stays contained to its key instead of blocking an entire partition.
Why Log
Kafka was built to collect data from many high-cardinality sources and coalesce it onto one low-cardinality pipe. Log is built for the other half of logging, routing: delivering events from granular sources to granular destinations. If your consumers each care about a specific subset of keys, you want to be able to retrieve the events for a key as efficiently as possible. That’s why Log addresses events by key rather than topic-partitions. You simplyscan the Log by key and get ordered values back.
Object storage as the only durable layer makes Log strongly consistent and cheap
to operate. Read replicas scale linearly, and scoping a replica to a
contiguous key range keeps its cache warm with data that nearby queries will
reuse. See the benchmarks for throughput, poll latency, and
cost on a single node.
Tradeoffs
- Poll latency scales with ingest rate. Higher ingest rates evicts hot data before compaction can collocate keys for efficient querying. The mitigation is scoping read replicas to smaller key ranges so the cache isn’t thrashed by unrelated blocks.
- Object-storage latency floors apply. Polls inherit object-store round-trip latency. Plan for tens of milliseconds at the median and hundreds at the tail.
- No built-in offset tracking. Log separates data from consumption metadata. Track consumer offsets yourself in a key-value store such as SlateDB.
Explore Log
Quickstart
Install Log and append your first events in under five minutes
API Reference
Browse the full REST API for appending, scanning, and managing logs
Storage Design
How Log maps streams to LSM keys with segment-based compaction
Getting to Production
Deploy, monitor, and secure Log for production workloads
Benchmarks
Ingest throughput, poll latency, and cost for a single node
When to choose Log
How Log compares to Kafka, the Kafka-on-S3 systems, S2, and NATS JetStream
GitHub
View the source code, open issues, and contribute