Live data from Hacker News

TigerBeetle: A Trillion Transactions [video]

youtube.com

11–20 of 37 posts

Re: TigerBeetle: A Trillion Transactions [video]

#11

The takeaway is that you can just buy a single beefy server instead of using kubernetes or whatever.

To a first approximation, yes. But, why ? And for up to how many hundred terabytes of data can you get away with the single beefy server? Provided you make what design choices? Which leads to the real takeaway which is "Tiger Style": https://tigerstyle.dev/ which I am partial to, along with Rich Hickey's "Hammock Driven Development" https://www.youtube.com/watch?v=f84n5oFoZBc "Tiger on Hammock" will absolutely smoke…

> But, why?

To keep things simple. My current company is running multiple instances of back-end services for absolutely no fucking reason, and I had to fix numerous race condition bugs for them. I had an interview with a startup where, after I asked why they were using distributed DynamoDB locks in a monolith app with only a single instance running, the person said "it works for us" and got defensive. Later they told me I wasn't experienced enough. I am so frustrated that there appears to be zero basic engineering rigor anywhere I can find nowadays.

> And for up to how many hundred terabytes of data can you get away with the single beefy server?

Do you even need to store many hundred terabytes of data? I have never encountered a scenario in my career (admittedly not very long so far) where there was a need to store even one terabyte of data. But in case of TigerBeetle, from skimming through the video, it appears they offload the main bulk of data to a "remote storage."

Re: TigerBeetle: A Trillion Transactions [video]

#12
I have tried to use tiger beetle in production. haven't been successful yet.

nice stuff, multi master replication.

user API, super small.

doubts about how to do streaming backup.

after studying the API and doing some spike architectures I come to the conclusion (I may be wrong):

tiger beetle is awesome to keep the account balance. that's it.

because you pretty much get the transactions affecting and account and IIRC there was not a lot you can do about how to query them or use them.

also I was thinking it would be nice to have something like an account grouping other accounts to answer something like: how much money out user accounts have in this microsecond?

I think that was more or less about itm they have some special fields u128 to store ids to the transaction they represent into your actual system

and IIRC handle multi currency in different books

my conclusion was: I think I don't get it yet. I think I'm missing something. had to write a ruby client for it and build an UI to play with the API and do some transactions and see how it behaved. yet that was my conclusion

would be great to have an official UI client

Re: TigerBeetle: A Trillion Transactions [video]

#13
post #10

The takeaway is that you can just buy a single beefy server instead of using kubernetes or whatever.

And your beefy server goes down what do you do? Where do you think those object storage live exactly? Kubernetes is not just for scaling, it's a way to standardize all ops.

> And your beefy server goes down what do you do?

Boot it up again. You'll still have higher availability than AWS, GitHub, OpenAI, Anthropic, and many others.

> Where do you think those object storage live exactly?

On a RAID5 array with hot-swappable disks, of course.

(Edit to add: this is just a comment on Kubernetes being invoked whenever someone talks about scalability; I have massive respect for what the TigerBeetle folks are doing)

Re: TigerBeetle: A Trillion Transactions [video]

#14

I have tried to use tiger beetle in production. haven't been successful yet. nice stuff, multi master replication. user API, super small. doubts about how to do streaming backup. after studying the API and doing some spike architectures I come to the conclusion (I may be wrong): tiger beetle is awesome to keep the account balance. that's it. because you pretty much get the transactions affecting and account and IIRC…

On the streaming side, are you looking for Change Data Capture?

https://docs.tigerbeetle.com/operating/cdc/

Re: TigerBeetle: A Trillion Transactions [video]

#15

I think I need a deeper-dive into the "diagonal scaling" presented. From my understanding, this is actually no different from "industry decoupling" he disparages earlier in the presentation. There are even off-the-shelf libraries for LSMs backed by object storage like SlateDB.

I feel the Expression Problem neatly frames the "diagonal scaling" proposition; what system design choices will allow the architecture to scale vertically in what fashion, while also being able to scale what horizontally, without losing strict serialisability. If we add a "vertical" capability, it cannot be at the cost of any existing "horizontal" capability, nor should doing so forfend any future "horizontal" capabi…

in general these aren't in conflict. in particular once I have a system which can distribute work among faulty nodes and maintain serializability, exploiting parallelism _within_ a fault domain just falls out.

Re: TigerBeetle: A Trillion Transactions [video]

#17

I think I need a deeper-dive into the "diagonal scaling" presented. From my understanding, this is actually no different from "industry decoupling" he disparages earlier in the presentation. There are even off-the-shelf libraries for LSMs backed by object storage like SlateDB.

The author of SlateDB, Chris Riccomini, is an angel investor in TigerBeetle.

However, TB here is also providing a Replicated State Machine with consensus and strict serializability, in front of object storage, to provide remote object storage capacity and recovery, but with local NVMe latency and without sacrificing consistency or durability.

TB navigates the entire design space, specializing for both hot and cold (transactional) data.

The more you zoom, it’s a stronger set of guarantees in terms of safety and performance.

Re: TigerBeetle: A Trillion Transactions [video]

#18

Earlier quoted context omitted.

To a first approximation, yes. But, why ? And for up to how many hundred terabytes of data can you get away with the single beefy server? Provided you make what design choices? Which leads to the real takeaway which is "Tiger Style": https://tigerstyle.dev/ which I am partial to, along with Rich Hickey's "Hammock Driven Development" https://www.youtube.com/watch?v=f84n5oFoZBc "Tiger on Hammock" will absolutely smoke…

> But, why? To keep things simple. My current company is running multiple instances of back-end services for absolutely no fucking reason, and I had to fix numerous race condition bugs for them. I had an interview with a startup where, after I asked why they were using distributed DynamoDB locks in a monolith app with only a single instance running, the person said "it works for us" and got defensive. Later they told…

[flagged]

Re: TigerBeetle: A Trillion Transactions [video]

#19

I have tried to use tiger beetle in production. haven't been successful yet. nice stuff, multi master replication. user API, super small. doubts about how to do streaming backup. after studying the API and doing some spike architectures I come to the conclusion (I may be wrong): tiger beetle is awesome to keep the account balance. that's it. because you pretty much get the transactions affecting and account and IIRC…

On the streaming side, are you looking for Change Data Capture? https://docs.tigerbeetle.com/operating/cdc/

sorry, i meant something like an external continuous backup. just in case the system get compromised, a constant off-site non operational backup

Re: TigerBeetle: A Trillion Transactions [video]

#20
Great video! Love the concepts discussed, and the tigerstyle mentioned by adityaathealye. This is such a hard problem.

For Halo 4, I architected a system for our telemetry that that had to support subsecond roundtrip user lifetime aggregation. With up to 400ms one-way latencies, that left us with 200ms client + server time to manage lifetime counts. 60ms on the client for batching and network stack delays, and 80ms in the cloud for aggregation after routing delays.

On the client side we leveraged a lot of those TigerStyle ideas (static-allocation, simplified function surface area, explicit limits, strongly asserted). And for the cloud we effectively wrote Diagonal Scaling (Stage 7).

For gamedevs to use this, it had to be as lightweight as possible and introduce no risk of priority inversion or hitching. I wrote a many-reader/many-writer lockless circular queue with performance measured in the microseconds, it was a beast.

I was so proud of our tiny team for pulling off the vision. When we launched, there was a bug in the game: someone left in telemetry in a tight render loop during a cutsceen, so our 20k/s client-side throttles kicked in.

We hit an average of 700k/s on launch day, with peak ingestion throughput of 831k/s (2 weeks to hit a trillion). And we didn't break a sweat.

Partner teams that were trying to provide our reporting capabilities started slowing down, though, haha, and brought it to our attention ("We, uh, can't scale anymore, there's no more servers on the eastcoast data center we can allocate")... so we hit the killswitch on that category of event.

That was another piece I was proud of writing: each instrumentation point did a quick binary mask check for 64 categories and 64 subcategories to see if it should emit... one reason why the instrumentation times were so blazing fast, we had minimal branching based of a hotly-cached variable that would hang around L1 because it was touched so frequently.

Querying that day for insights, though... aggregation queries touching the launch day (that weren't on the per-user hotpath layer that was our primary use-case) would 30x query duration. XD

OH! And I forgot to mention. The tech was impressive enough, that it was quickly adopted as the backbone by every title that Microsoft published, from Gears of War to Solitaire, Forza to Minecraft.

And for comparison: The official, initial Xbox One telemetry stack used pipe-delimited strings, and supported 1-5 transactions/console/second (vs our 20k).

Post reply on HN