finds.dev← search

// the find

nakabonne/tstorage

★ 1,248 · Go · Apache-2.0 · updated Mar 2026

An embedded time-series database

tstorage is an embedded time-series storage engine for Go, designed to be dropped into a process rather than run as a separate service. Built by the author of the ali load tester to solve real heap-growth problems, it targets tools that need to store and query metric-like data locally without the overhead of InfluxDB or Prometheus.

The partitioning model is well-suited to time-series workloads — each partition is an independent unit, which makes range queries cheap and compaction straightforward. Write performance is genuinely good (305 ns/op at 2 allocs) because it writes sequentially to append-only structures rather than fighting a B-tree. The WAL-before-insert design means you don't lose data on crash even though the hot partition lives in heap. Out-of-order handling is practical: it keeps two writable memory partitions rather than buffering everything or discarding late arrivals.

The query API is minimal to the point of being limiting — you get a metric name, optional labels, and a time range, nothing else. No aggregations, no downsampling, no cross-metric joins; you're doing all of that in your application code. Label indexing stores metadata in meta.json per partition, which means cross-partition label queries require scanning every partition's metadata file — fine at small scale, painful if you have many metrics and many partitions. The project has been quiet since 2022 by activity signals and the benchmarks are from Go 1.16 on hardware from 2018, so you're flying without current maintenance or perf validation. If you need anything beyond 'store floats, retrieve by time range', you'll quickly hit the ceiling.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →