HN user

agavra

62 karma
Posts22
Comments18
View on HN
slatedb.io 13d ago

Divide and Compact: Segment-Oriented Compaction in SlateDB

agavra
10pts0
slatedb.io 22d ago

SlateDB: An Object-Native LSM for Online Systems

agavra
15pts0
www.bitsxpages.com 1mo ago

The Mathematics of Multi-Tenancy

agavra
6pts0
www.bitsxpages.com 2mo ago

Protocols for transactional usage of object storage

agavra
5pts0
www.opendata.dev 2mo ago

Faster Timeseries Aggregations

agavra
10pts0
www.bitsxpages.com 3mo ago

How metrics are stored and queried

agavra
7pts0
www.bitsxpages.com 4mo ago

The Broken Economics of Databases

agavra
8pts0
www.yuzudraw.com 4mo ago

Yuzudraw

agavra
4pts0
github.com 4mo ago

Show HN: Yuzudraw – visual editor for ASCII diagrams with token-efficient DSL

agavra
1pts0
www.bitsxpages.com 5mo ago

The mathematics of compression in database systems

agavra
61pts16
www.bitsxpages.com 6mo ago

Understanding LSM trees via read, write, and space amplification

agavra
3pts0
tuicr.dev 6mo ago

Tuicr – Terminal UI for Code Review

agavra
2pts0
github.com 6mo ago

Show HN: Tuicr – Review Claude Code diffs like a PR from your terminal

agavra
2pts0
www.bitsxpages.com 7mo ago

Frameworks for Understanding Databases

agavra
3pts0
web.archive.org 10mo ago

Writing a Time Series Database from Scratch (2017)

agavra
1pts0
github.com 1y ago

Show HN: Imprint – Serialization Format for Data Pipelines

agavra
1pts0
www.kafkastreams.money 1y ago

Kafka Streams Cost Calculator

agavra
3pts0
www.responsive.dev 1y ago

If not RocksDB, then what? Why SlateDB is the right choice for Stream Processing

agavra
4pts0
www.responsive.dev 2y ago

So You Want to Write a Stream Processor? Beware of the Duck Syndrome

agavra
4pts0
twitter.com 2y ago

Stream Processing Is More Ubiquitous Than You Think

agavra
3pts0
www.responsive.dev 2y ago

Introducing Responsive

agavra
12pts0
www.confluent.io 4y ago

How do you change a never ending query?

agavra
3pts0

Save you the read, here's the interesting part:

For $90/mo, we ran a benchmark pushing ~30 MiB/s of metrics data via Buffer. Using public pricing calculators, the equivalent Kafka service cost roughly $1,300/month for managed WarpStream and $8,500/month for self-hosted Apache Kafka.

This is the biggest gap in the 0.2.1 release. We have a pretty naive query execution engine because we've spent most of the time on core data structures and ingestion.

I have some prototypes of vectorized compute that takes that same query from 2s -> ~800ms, and it's just early days. If you want to contribute to help make it better, the query engine part of it is begging for help!

The other solution is to aggressively size your disk cache and keep effectively the full working set on disk, using object storage just as a durability layer. Then the main benefit is operational simplicity because you have a true shared-nothing architecture between the read replicas (there's no quorum or hash ring to maintain and no deduplication on read). Obviously you'll have a more expensive deployment topology if you do so, but it's still compelling IMO because you have the knobs to tune whether you want to cache on disk or not.

Good point, a tl;dr is probably worthwhile.

It's definitely not quite turn key just yet but we've been dogfooding it in production against a moderate metrics use case (~30k samples/s) and have it hooked up to grafana (you just configure a prometheus source and point to your deployed URL). We run it on a single node with no replicas ;)

the compression algorithm you select for your data is quite dependent on the dataset you have. the equations in this blog post don't help you choose which compression to use, but rather "how much" and when to compress. I would be curious to formalize the math for different compression algorithms though... might be a good follow up post!

This is spot on, I understand very little about how terminal rendering works and was able to build github.com/agavra/tuicr (Terminal UI for Code Review) in an evening. The initial TUI design was done via Claude.

RocksDB actually does something somewhat similar with its prefix compression. It prefix-compresses texts and then "resets"the prefix compression every N records so it stores a mapping of reset point -> offset so you can skip across compressed records. It's pretty neat

So cool to see this make the front page of hacker news! I'm the author, I'll be online here throughout the weekend to answer any questions you might have :) excited for the next post which is in the works about LSM trees.

We haven't even started to discuss Object Storage, but it ends up looking very very similar if you're building data systems that use that instead of raw filesystems (not so much for physics reasons, but because of the way object storage require immutable objects and penalize you for many API calls)

There's a whole class of interesting problems related to query evolution - and it varies greatly depending on the "environment" that you're interested in (see mjdrogalis' docs on updating a running query). Generally, the strategy that ksqlDB takes at the moment is to validate what upgrades are possible to do in-place and which are not - for the former, ksqlDB "just does it" and for the latter, we are designing a mechanism to deploy topologies side-by-side and then atomically cut over when the new topology is caught up to the old one.

There's an in-progress blog post that describes exactly this class of problems - keep an eye out for it!