8 ms·
TigerBeetle is a most interesting database
- itunpredictable 1y agohope you all like this post as much as I enjoyed writing it!
- jorangreef 1y agoLiked it almost as much as My Cousin Vinny! ;)
- criddell 1y agoJust to be a little pedantic for a second, isn't TigerBeetle a database management system (DBMS) whereas a TigerBeetle database would be actual data and metadata managed by TigerBeetle?
- lioeters 1y ago> Often the term "database" is also used loosely to refer to any of the DBMS, the database system or an application associated with the database.
- BrentOzar 1y agoBecause I'm sure other people will ask - no, it does not support SQL.
- jorangreef 1y agoJoran from TigerBeetle here! Yes, this is by design. SQL is a great general purpose query language for read-heavy variable-length string workloads, but TigerBeetle optimizes for write-heavy transaction processing workloads (essentially debit/credit with fixed-size integers) and specifically with power law contention, which kills SQL row locks. I spoke about this specific design decision in depth at Systems Distributed this year: 1000x - https://m.youtube.com/watch?v=yKgfk8lTQuE https://m.youtube.com/watch?v=yKgfk8lTQuE
- justinclift 1y ago> which kills SQL row locks. What's it like compared to MVCC?
- jorangreef 1y agoDepending on contention and RTT, as a specialized OLTP DBMS, TB can do roughly 1000-2000x more performance than a single node OLGP DBMS (cf. the live demo in the talk above)… but also with strict serializability. You don’t need to sacrifice correctness or real-time resolution, and that’s important. For example, if you need to do real-time balance checks.
- justinclift 1y agoHmmm, I guess it sounds weird to me to be talking "RTT" (round trip time) when the example is "a single node". I'll watch your talk properly at some point and see if it makes sense to me after that. :)
- cma256 1y agoNode count doesn't matter. You could use an embedded database and encounter the same problem. There is some time T between when you acquire a lock and release it. Depending on the amount of contention in your system, this will have some affect on total throughput (i.e. Amdahl's law).
- justinclift 1y agoHow familiar are you with MVCC? https://www.postgresql.org/docs/current/mvcc-intro.html https://www.postgresql.org/docs/current/mvcc-intro.html Asking because needing a lock for changing a row isn't the only approach that can be taken.
- senderista 1y agoAlmost all commercial MVCC implementations (including Postgres) use row locks. Very few use OCC even though it's arguably a more natural fit for MVCC. Pessimistic locking is simply more robust over varied workloads.
- karmakaze 1y agoIt helps to know what kind of data TigerBeetle handles. The data committed by its transactions is an immutable Transfer of id:128-bit, debit_account_id:128-bit, credit_account_id:128-bit, amount:128-bit, ledger:128-bit, code:16-bit, flags:bitfield, timestamp:64-bit, user_data_128, user_data_64, user_data_32. Transactions atomically process one or more Transfers, keeping Account balances correct. Accounts are also records, their core fields (debits_posted, credits_posted, etc). This gives a good idea of what TigerBeetle might be good for and what it might not be. For anything where latency/throughput and accuracy really, really matters, it could be worth the effort to make your problem fit.
- pbowyer 1y ago> And yet some of the most popular OLTP databases in the world today are still highly dependent on a single node architecture. Which databases? SQLite is the one I can think of, but it's designed for that use-case. Others start as single node but will replicate to other nodes, either as master-slave or master-master.
- redwood 1y agoPostgres, MySQL
- pbowyer 1y agoThey both have replication, which allows them to be multi-node.
- ViewTrick1002 1y agoWith the bounds capped by a single writer. Unless you can shard the data and create a distributed database with manual sharding. But yes. Postgres remains an amazing choice, especially with modern hardware, until you also have the money available to tackle said write throughput issue.
- sgt 1y agoI think the point is that sharding won't really help that much since transactions will happen across all or most shards, and then you have certain accounts that will be more active than others.
- samlambert 1y agoif your sharding schema is designed properly you will avoid cross shard transactions.
- sgt 1y ago
- SchwKatze 1y agoPretty much agree, I honestly think that TB team should invest some more effort on evangelizing the double-entry model for non-financial scenarios, like managing stocks, booking a show ticket etc. The 1000x API improvement has been done, now people must know how to use it
- deadbabe 1y agoYou could probably do something similar in Postgres.
- jorangreef 1y agoYou could, but TB brings a whole lot of debit/credit primitives out of the box (making it dead simple for e.g. 2PC money movement across third party systems, or transactions of thousands of transactions, to express complex financial contracts)… that are Jepsen-tested, which run multi-AZ, and which would probably take months if not years to replicate on PG. Even then, the internal concurrency control of PG’s storage engine would just get hammered by the contention, and would struggle to approach TB’s replicated performance, even if PG were single node.
- deadbabe 1y agoNothing takes “months or years” anymore, if you really wanted this it could be done fairly quick by someone who knows what they’re doing and you don’t layer it in bureaucracy.
- SchwKatze 1y agoSimilar, yes. But not near the same performance, TB is entirely built around this concept so they became pretty good at it. It's like comparing a lambo and a beetle (no pun intended). But honestly, if double-entry really become a thing I foresee traditional DBMS agglutinating it just like they did with vector and object databases, getting the long tail of the market.
- graemep 1y agoIt would be nice. I can think of things for which I want to process a financial transaction and something else in one atomic transaction (e.g. selling a ticket - something I am working on right now) and have both content (e.g. product descriptions) and finance in a single store.
- justinclift 1y ago> In less than a decade, the world has become at least three orders of magnitude more transactional. And yet the SQL databases we still use to power this are 20-30 years old. Can they hold up? Errr yes. Without much sweat really. Just because something started ~30 years ago doesn't mean it hasn't updated with the times, and doesn't mean it was built on bad foundations.
- dakiol 1y agoI disagree. If we are talking about distributed systems in which we have N different databases, then distributed transactions are left as an exercise to the reader (that’s why we have things like Sagas). Within a single machine, yeah, relational dbs still work like a charm.
- Normal_gaussian 1y agoThe other interesting thing to consider is that machines are a lot more powerful in all dimensions than they were 30 years ago - so many tasks that would have required distributed systems no longer do.
- jorangreef 1y agoDBMS design has also changed. The bottleneck for a DBMS has moved from spinning disk to CPU and per core memory bandwidth. That's also key to TigerBeetle's design. For example, with static allocation and zero-copy techniques such as zero-deserialization. If you were to design an OLGP DBMS like Postgres today, it would look radically different. Same is true for OLTP.
- jandrewrogers 1y agoThe caveat is that the hardware constraints have fundamentally changed, so database architectures from 30 years ago are effectively incapable of properly using modern hardware environments. Databases have not been bottlenecked on storage bandwidth in a long time but most databases are designed as if this was still the case. Optimizing for memory bandwidth, the current bottleneck, leads to substantially different architectures than are commonly deployed.
- gayjew 1y ago[dead]
- websiteapi 1y agoAll of these apply to FoundationDB as well. - Slow code writing. - DST - No dependencies - Distributed by default in prod - Clock fault tolerance with optimistic locking - Jepsen claimed that FDB has more rigorous testing than they could do. - New programming language, Flow, for testing. You probably could solve the same problems with FDB, but TigerBeetle I imagine is more optimized for its use case (I would hope...). AFAIK - the only reason FDB isn't massively popular is because no one has bothered to write good layers on top. I do know of a few folks writing a SQS, DynamoDB and SQLite layers.
- itunpredictable 1y agoI am currently working on a post about DST with their team too haha!
- dangoodmanUT 1y agothe one true database
- oblio 1y ago> AFAIK - the only reason FDB isn't massively popular is because no one has bothered to write good layers on top. I do know of a few folks writing a SQS, DynamoDB and SQLite layers. I started writing this comment: > It seems interesting, but considering what it's for, why aren't the hyperscalers using it? And while writing it I started searching for FoundationDB and found this: > https://github.com/<<apple>>/foundationdb Ah, all right :-p
- oblio 1y agoAnd a more serious comment, to separate it from the silly one below: Interesting that they didn't release it with an SQL client, is there no way to make it compatible? Even with extensions to SQL, I imagine it would be great for a lot of use cases. Edit: ah, it's more of a key-value store.
- ksec 1y agoI thought they got bought by Apple and what happened to it after?
- wiradikusuma 1y agoWe were considering TigerBeetle, but found blockers: * We use Cloudflare Workers. TigerBeetle client app is not supported. It might work using Cloudflare Containers, but then the reason we use Cloudflare is for the Workers. --> https://github.com/tigerbeetle/tigerbeetle/issues/3177 https://github.com/tigerbeetle/tigerbeetle/issues/3177 * TigerBeetle doesn't support any auth. It means the containing server (e.g. a VPS) must restrict by IP. Problem is, serverless doesn't have fixed IP. --> https://github.com/tigerbeetle/tigerbeetle/issues/3073 https://github.com/tigerbeetle/tigerbeetle/issues/3073
- vjerancrnjak 1y agoBut Cloudflare Workers or AWS Lambda setup would not work anyway with any db? * spawning 1000 workers all opening a connection to a db, * solved by service/proxy in front of db, * proxy knows how to reach db anyway, let's do private network and not care about auth
- dangoodmanUT 1y agoDBs like DynamoDB work great with these kinds of runtimes, they don't need a connection pool in front
- wiradikusuma 1y agoCloudflare has its own DB (D1, Sqlite-derived), but you can also connect with PostgreSQL using their adapter (Hyperdrive). I have used both, they're okay.
- threatofrain 1y agoI wouldn't recommend D1 for now due to its harsh storage limitations (10 GB).
- caust1c 1y agoWait, what? A database in 2025 doesn't support any kind of auth? A financial database? WTF? C'mon folks, the least you can do is put a guide for adding an auth proxy or auth layer on your site. Particularly since you don't use HTTP (cant easily tell from the docs, I'm assuming), then folks are going to be left wondering: "well how the hell do I add an auth proxy without HTTP" and just put it on the open internet...
- bell-cot 1y agoConsider re-titling it "A very cool & interesting article about a very boring & reliable database"? Since "interesting" is the very last thing that anyone sane wants in their accounting/financial/critical-stuff database.
- itunpredictable 1y agolooks like the poster agrees
- flir 1y ago> They keep assertions enabled in production. Never understood why we turn those off. An assert failing in prod is an assert that I desperately want to know about. (That "never understood" was rhetorical).
- mcherm 1y agoI like to write assertions that aren't always easy to check. Like asserting that a list is sorted.
- flir 1y agoThat sounds easy to check. Can you expand on this, because I don't understand.
- maverwa 1y agoits easy as in "simple to implement and execute" but not cheap, because it may require scanning large amounts of memory. You have to visit every list entry. Whats trivial for a very small list, may be a no-go for gigabyte-sized lists.
- flir 1y agoAh I see. That's the bit of the conversation I was trying to head off with "rhetorical" :)
- hxtk 1y agoMeaning computationally. It would cost a lot of cycles to keep that enabled in production. It’s only O(n), but if I check that assertion in my binary search function then it might as well have been linear search.
- pjmlp 1y agoBasically this could be something like this, D based example: void process_list(List aList) in(aList.isSorted, "List must be sorted!") do { // do something } However the O() cost of calling isSorted() has an impact on overall cost for process_list() on every call, hence why the way contracts are executed is usually configurable in languages that have them available.
- igtztorrero 1y agoI really liked this article. I met the new kid on the block, the DBMS neighborhood. I also didn't know that Zig programming language existed. So many new things. Congratulations to TigerBeetle! I'm going to tell my team about it and try it out on an interesting project.
- itunpredictable 1y agothank you!
- initramfs 1y agothis has such great marketing zingers, I probably didn't know I needed TigerBeetle for something. I don't know yet, but I promise you, I'll find something to use it for.
- self_awareness 1y agoThe most interesting database is the most boring one.
- jorangreef 1y agoThe problem with "boring", "popular" and "old" is that they are too often synonyms (and logical fallacies, i.e. as an appeal to popularity/authority). Rather, I would say that the most interesting database is the fastest and safest. Or as Jim Gray always put it: “correct and fast”.
- ducklord 1y agoWhat does TigerBeetle stand on the CAP theorem? Sounds like it's AP?
- jorangreef 1y agoCAP defines availability physically: “requests to a non-failing node receive a response”. TigerBeetle ensures logical availability: as long as clients can reach a majority, requests complete with strict serializability, preserving safety and liveness under partitions. cf. Durability and the Art of Consensus: https://www.youtube.com/watch?v=tRgvaqpQPwE https://www.youtube.com/watch?v=tRgvaqpQPwE
- IshKebab 1y ago> Deterministic Simulation Testing (DST) feels like the most transformational technology that the fewest developers know about. It’s a novel testing technique made popular by the FoundationDB team It's not novel. That's how hardware (ASIC) testing has been done forever. The novelty is applying it to software. > TigerBeetle’s VOPR is the single largest DST cluster on the planet. It runs on 1,000 CPU cores Only if you exclude hardware, otherwise basically every chip design company has a cluster bigger than this.
- bob1029 1y agoLeading edge photo mask synthesis is easily in the top 5 most computationally demanding things out there. You need an actual supercomputer to solve these problems on meaningful (competitive) timescales. https://en.wikipedia.org/wiki/Optical_proximity_correction https://en.wikipedia.org/wiki/Optical_proximity_correction
- xnzm1001 1y agoI work at a bank with old old monstrous sql queries. I thought I can make a use of tigerbeetle to simplify the system. But sadly, I just couldn't figure out how to make it work. Transaction requires lot of business logics but I couldn't convert that to make it work with combination of RDBMS + tigerbeetle. I wish there were some realworld example that I can get insight using tigerbeetle.
- jorangreef 1y agoAppreciate that you created an anonymous account to be able to share this feedback nevertheless. We typically hear from companies that TigerBeetle is the easier part of their stack. But to be fair, they may have a cleaner architecture. Did you contact our solutions team for assistance with your business logic modelling? If not, please get in touch! solutions@tigerbeetle.com
- sgarland 1y agoWhile I am a fan of TigerBeetle’s general stance on correctness, coding practices, and their desire to hyper-specialize, I have some critiques on the post. I think the paragraph about multi-node is a bit misleading. Contrary to what cloud native folk will tell you, a single beefy DB, well-tuned and with a connection pooler, can serve a dizzying amount of QPS just fine. At a former employer, during a maintenance period, I once accidentally had all traffic pointed to our single MySQL 8 RDS instance, instead of sharing it between its read replicas. That was somewhere around 80-90K QPS, and it didn’t care at all. It wasn’t even a giant instance - r6i.12xlarge - we just had a decent schema, mostly sane queries, and good tuning on both ProxySQL and MySQL. At peak, that writer and two .8xlarge read replicas handled 120K QPS without blinking. A DB hosted on a server with node-local NVMe (you know, what used to be normal) will likely hit CPU limits before you saturate its I/O capabilities. For redundancy, all RDBMS designed for networked activity have some form of failover / hot standby capability. My other mild criticism is in the discussion on TigerBeetle’s consensus: yes, it seems quite clever and has no other dependencies, but it’s also not trying to deal with large rows. When you can fit 8,190 transactions into a 1 MiB packet that takes a single trip to be delivered, you can probably manage what would be impossible for a traditional RDBMS. None of this should be taken as belittling their accomplishment; I remain extremely impressed by their product.
- justinhj 1y agoThat a traditional modern RDBMS is very fast is not really useful here because the use case of Tigerbeetle includes work loads with high contention. Under that kind of load, in their own tests you can see in a recent conference talk, you can see the throughput drops dramatically in clusters where many transactions affect a single account. edit: from the horses mouth is better https://news.ycombinator.com/item?id=45437046 https://news.ycombinator.com/item?id=45437046
- ffsm8 1y agoHuh, that as not been my experience at all. Too be fair, its been something like 10 years iirc. The database in question was MySQL 8, running on plain old enterprise ssds (RAID 10) The workload was processing transactions (financial payments) The database schema was ... Let's call it questionable, with pretty much no normalization because "it's easier when we look at it for debugging", hence extremely long rows with countless updates to the same row throughout the processing, roughly 250-500 writes per row per request/transaction from what I recall. And the application was a unholy combination of a PHP+Java monolith, linked via RPC and transparent class sharing DB IO was _never_ the problem, no matter how high qps got. I can't quote an exact number, but it was definitely a lot higher then what this claims (something like 40-50k on average "load" days like pre Christmas etc) Not sure how they're getting this down to ~250qps, it sounds completely implausible. Heck, I can do single row non-stop updates with >1k qpm on my desktop on a single nvme drive - and that's not even using raid.
- porridgeraisin 1y agoTigerBeetle looks interesting. A whole networked database using statically allocated memory. I usually use that technique for small keyboard-shortcut triggered applications. One question in case folks who work there see this: This is the most technically impressive zig project I've seen so far. Do you have a blog post detailing your perspective on zig? i.e what design decisions of ziglang helped you in massive way, what were the warts, and in general any other thoughts too?
- ksec 1y ago>Most teams write code fast. TigerBeetle tries to write code slow. Most teams treat testing as a necessary evil. TigerBeetle is built entirely on Deterministic Simulation Testing (DST). Most teams build their software on top of loads of other software. TigerBeetle has zero dependencies. I believe that was more like the norm 25+ years ago. Before Google and Facebook brought in the move fast and break things mentality across software industry. I hope TigerBeetle gets more recognition. Worth reading its Jepsen report as well. https://news.ycombinator.com/item?id=44199592 https://news.ycombinator.com/item?id=44199592
- motoboi 1y agoLet's wait 25 years and we'll see if TigerBeetle becomes the next google or if it's engulfed by a less perfect (but faster) rival.
- jorangreef 1y agoGive us 27 years—the company only turned 3 last month, and we designed for 30 :) To be clear, TB's pretty young, only 3, but Jepsen-tested and already migrating some of the largest brokerages, wealth managements and exchanges in various countries. I'm excited to see what can be done in 27. ”Slow is smooth, and smooth is fast”
- motoboi 1y agoJust to keep the tone I’d like to say I was just joking and that I wish you guys great success! Tiger beetle is amazing!
- jorangreef 1y agoHaha! Much appreciated, thanks for the kind wishes! (Let's chat again when we're both old!) :)
- surajrmal 1y agoMove fast and break things was the Facebook motto. I've never really felt it was a Google embraced concept. What Google's values have always lied with investing heavily on testing to ensure folks can be productive by knowing that if they would break something a test would catch it. That said it's good to make sure you're building for requirements that exist. Engineers have a habit of inventing requirements and causing delays unnecessarily. Building something and placing it in the hands of users so they can give you feedback which you can react to is far more valuable than building products in a bubble.
- dangoodmanUT 1y agoI really like the work Joran and his team have done around DST, distributed systems awareness, and performance practices. I especially love the craziness around no dependencies (well, could you consider an underlying OS a dependecy?). But I've always felt the way they treat normal OLTP (they call OLGP) seems unfair. For example, comparisons using clear sub-optimal interactive SQL transactions for financial workloads, like locking rows rather than using condition checks at commit time, because "that's how OLTP was intended to be used when it was designed ~50(?) years ago". In their cited https://tigerbeetle.com/#performance https://tigerbeetle.com/#performance the lowest the slider can go is 1% contention. Do you think Stripe has 1% contention directly on an OLTP DB? Definitely not. You can build systems that _expect contention_, and elegantly handle it at REALLY high throughput. These systems protect the DB from contention, so you can continue to scale. From talking to folks working on these systems, I roughly know the kinds of transactional (financial) throughput of DBs like Stripe's and other systems - they have _many_ more zeros behind them than their performance comparison page proposes they could possibly have at even 0.01% contention. Their marketing largely ignores this fact, and treats everyone like they just slam the DB with junior engineer-designed interactive transactions. Most developers (I hope) are smarter than that if they're working at a payments company. There's even the title "payments engineer" for the kind of person that's thinks about scaling contention and correctness all day. TigerBeetle is great, but I find the pattern of being quite misleading about other OLTPs off putting.
- sgarland 1y ago> Do you think Stripe has 1% contention directly on an OLTP DB? Definitely not. Stripe runs on top of MongoDB, which is horrifying in its own right, but in any case comparing them to a shop running an RDBMS is apples to oranges.
- fjfaase 1y agoI wonder if the 'debits and credits' example is still realistic. Is it not that banks record all individual money transfers and keep them on record for years (often due to national laws that require this). Then the balance on a certain account is a simply a selection/view on the set of all transactions. For efficiency reasons you may want to store the result in some table. If there is a limit on withdrawals on a certain account, you do need to calculate the balance first and then a transaction mechanism is needed to assure that there are not several money transfer that individually do not surpass the limit but together do.
- deleted 1y ago[deleted]
- novoreorx 1y agoWhy hasn't anyone mentioned the game they made? It looks fantastic. The concept of letting players try to crash a system to demonstrate its robustness is brilliant.
- jorangreef 1y agoThanks! For anyone who wants to play the walking sim (excuse the pun!): https://sim.tigerbeetle.com https://sim.tigerbeetle.com
- oowoe 1y agohiiiiiiiiii owo qwq pwp
- oowoe 1y agohiiiiiiiiiii owo pwp qwq
- danielbarla 1y agoTigerBeetle is plenty interesting, though if half of SpacetimeDB's [1] [2] claims are true, it's even more interesting for me. (The title of this post has "_a_ most interesting database", while the article has "_the_", hence this comment) [1] - https://spacetimedb.com/ https://spacetimedb.com/ [2] - https://www.youtube.com/watch?v=kzDnA_EVhTU& https://www.youtube.com/watch?v=kzDnA_EVhTU&
- kamranjon 1y agoI’m somewhat confused by the distributed story for tiger beetle. In the docs here: https://docs.tigerbeetle.com/concepts/performance/#single-threaded-by-design https://docs.tigerbeetle.com/concepts/performance/#single-th... It says: “TigerBeetle uses a single core by design and uses a single leader node to process events. Adding more nodes can therefore increase reliability, but not throughput.” How does this work with multi-region? Does this mean that regardless of where in the world your users might live, they need to make a request to the leader node for a write to occur? Is distribution purely for redundancy?
- Voultapher 1y agoThe way I understand it yes. Latency will be dictated by going to the leader node and replication to enough followers. The CAP theorem dictates that if you want strong consistency the way they offer you have to talk to a quorum of nodes IIRC N/2 + 1. Paxos and Raft also work that way. Apparently there is a game about it https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed-database-in-the-browser/ https://tigerbeetle.com/blog/2023-07-11-we-put-a-distributed...
- mtlynch 1y agoIt's worth noting that the breathless worship of everything about TigerBeetle in this post is likely related to the fact that the author is an investor in TigerBeetle.[0] [0] https://www.amplifypartners.com/portfolio/company https://www.amplifypartners.com/portfolio/company
- gregorvand 1y agoWe did an episode with Joran on SEDaily which addresses some of the points raised in the discussions https://softwareengineeringdaily.com/2024/09/12/building-a-fast-financial-transactions-database/ https://softwareengineeringdaily.com/2024/09/12/building-a-f...
- jorangreef 1y agoGregor! Thanks again for having me there, and good to see you.
- gregorvand 1y agoAnd you!
- blenderob 1y agoAs nice as TigerBeetle is, do keep in mind that this article is written by an investment company that has invested in TigerBeetle: https://www.amplifypartners.com/blog-posts/our-investment-in-tigerbeetle https://www.amplifypartners.com/blog-posts/our-investment-in...
- noir_lord 1y agoYeah I'm not going to say what I think of the way it's written but suffice to say that was obvious from how it was written.
- itunpredictable 1y agoI have a few of these posts I've written coming out over the next few months that I want people to discuss. Would you prefer I add a disclaimer at the top? Easy enough to add
- gaudystead 1y agoPersonally, I'd say you should definitely add a disclaimer, otherwise a discussion that would likely gain traction is that the information might be being intentionally concealed.
- itunpredictable 1y agoI will add them in subsequent posts. The information is all over our site (they are on our portfolio page, and we wrote about them when we invested) but I am happy to reiterate on each post for each company
- metadat 1y agoWhy can't it be added to this post? The resistance to a seemingly obvious correction seems a little shady. Expecting people to dig around a site to find out your position of financial interest is not reasonable. Such behavior is disappointing, especially from a top HN account holder. It's too bad, because otherwise there are some interesting ideas, but TFA is lacking in good faith.
- vrnvu 1y agoI've been applying a lot of principles and suggestions from TigerBeetle style lately, mainly in Rust and Go and I can’t recommend it enough. - single entry point, near-zero deps - ci locally and tested, one command to runs tests, coverage, lint etc - property/snapshot/swarm testing, I love writing simulations now and letting the assertions crash - fast/slow split + everything is deterministic with a seed - explicit upper bounds + pool of resources. I still dynamically allocate but it makes code simpler to reason about Thanks to the TB team for the videos and docs they been putting out lately.
- jorangreef 1y agoSuch a pleasure to read this, that TigerStyle is making a difference for you. Appreciate the kind words!
- mkleczek 1y agoWhile TigerBeetle way is very interesting I find lack of multicore processing support (or any kind of horizontal scaling) a blocker in terms real world deployment. It is just too risky as there is a hard limit to scalability and while it might look it is high enough for foreseeable future, what am I supposed to do once I reach this limit? Financial database has to be planned with at least 15-20 years of growth in mind.
- theYipster 1y agoLooking at the Zig vs. Rust angle — an interesting takeaway from the article is that Zig makes it considerably easier to build statically allocated applications than Rust. For all of Rust’s talk about “safety”, assuming the above assertion is true, than perhaps Zig is a better choice to augment or replace C in embedded, safety-critical software engineering, where static memory allocation is a core principle.
- _1tem 1y agoSounds awesome but can I use it like a regular database for my Laravel/Rails/Django app?
- gwbas1c 1y agoOMG as I read this I became hyper-skeptical by the end. Some points: In general, in very tangible terms, what are the real benefits for choosing TigerBeetle over another distributed database? What are the target use cases? Most of the article is pontificating about academic details in a way that's putting the cart before the horse. (IE, all these details don't matter when a traditional database with traditional backups is "good enough" and comes with no technology risk.) Who's using TigerBeetle? For what kind of applications? https://news.ycombinator.com/item?id=45436926 https://news.ycombinator.com/item?id=45436926 states, "TigerBeetle doesn't support any auth". Poor security is an unprofessional oversight. For all the ambitious things TFA describes, it's shocking that they overlooked "secure by design." The above-linked post is the only top-level post in this thread that claims real-world experience with TigerBeetle. But, here are some quotes from the article that don't pass scrutiny: > Traditional databases assume that if disks fail, they do so predictably with a nice error message. For example, even SQLite’s docs are clear that: SQLite is a file on disk. It's not something that would work in the same space as TigerDB. Furthermore, this statement needs proof: Do you mean to say that Oracle, MSSQL, MariaDB, Postgress, ect, can't detect when a file is corrupted? > All in all, you’re looking at 10-20 SQL queries back and forth, while holding row locks across the network roundtrip time, for each transaction. These can often be solved with stored procedures. In this case, the problem lies somewhere between programmers implementing suboptimal solutions, and databases being too hard to work with. > Instead of investing in the technology of 30 years ago – when the most popular relational databases today were built Don't assume that because technology is old, that it's bad. New databases come with higher, not lower, risk. > They say databases take a decade to build. Prove it. No really, prove it. > Biodigital jazz. It seems like someone is getting so obsessed with the code that they're forgetting the purpose and use case. --- IMO: Figure out the niche where TigerBeetle excels and traditional databases fall flat. Is it because your query model is easier to program with? Is it because, in a particular situation, TigerBeetle is more performant or cheaper? Is there a niche where existing databases corrupt data more than is tolerable. Once TigerBeetle excels in a niche, expand outward. (This is the basic plan in "Crossing the Chasm." https://en.wikipedia.org/wiki/Crossing_the_Chasm https://en.wikipedia.org/wiki/Crossing_the_Chasm) Otherwise, this smells like an academic exercise to experiment with different programming techniques, but with no tangible deliverable that has a demonstrated market.
- sunshine-o 1y agoAnybody know of simple way/tool (local, single node) to have strict Debit/Credit consistency ? Is there an extension for sqlite or simple command line tool that do that? I know about the ledger cli tool but it a bit much since it is a full fledge double-entry accounting system.
- jorangreef 1y agoYou can also run TigerBeetle local, single node if you want.
- 12_throw_away 1y agoThe article covers the enjoyable experience of getting networked computers to all agree on a single monotonic clock time. That got me wondering - does there exist a commodity, high-precision, high-reliability hardware clock that can be plugged into a computer to give it super-accurate timekeeping? (TBH, I'm pretty sure the answer is no - if you want super-accurate time, I think you buy your own very expensive NTP server [1].) [1] https://www.masterclock.com/master-clock-products.html https://www.masterclock.com/master-clock-products.html
- dailyfin 1y agoThe post does a good job selling the “why” (hot-row contention + strict serializability) but it’d help the community to see a clearer “when.” A practical rubric would be: if X% of writes touch Y “house accounts” with RTT Z, OLTP throughput on MVCC/row-lock engines caps at ~N TPS; TB sustains ~M TPS—showing the apples-to-apples path from workload shape to DB choice. Framed that way, TB becomes a “consensus-backed integer ALU” you pair with a string DB, not a replacement for OLTP in general. Two gaps I keep hearing in this thread that could unblock adoption: 1. Reference architectures: serverless (Workers/Lambda) patterns, auth/VPN/stunnel/WireGuard blueprints, and examples for “OLGP control plane + TB data plane.” 2. Scaling roadmap: the single-core, single-leader design is philosophically clean—what’s the long-term story when a shard/ledger outgrows a core or a region’s latency budget? Also +1 to publishing contentious, real-world case studies (e.g., “fee siphon to a hot account at 80–90% contention”) with end-to-end SLOs and failure drills. That would defuse the “100–1,000 TPS” debate and make the tradeoffs legible next to Postgres, FDB, and Redis.
- jorangreef 1y agoMuch appreciated.