> TigerBeetle is “fault-aware” and recovers from local storage failures in the context of the global consensus protocol, providing more safety than replicated state machines such as ZooKeeper and LogCabin
[0] https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/DE...
If the disaggregated log integrates some mechanism to support leadership "above" it [2], it can be functionally identical to a converged log. Efficiency-wise yes there will be some extra network messages – but networks are very high throughput [3] and fast (sub-millisecond within a cloud region) these days!
[1] https://www.usenix.org/conference/fast18/presentation/alagap... [2] https://maheshba.bitbucket.io/blog/2023/05/06/Leadership.htm..., also on HN yesterday [3] https://blog.enfabrica.net/the-next-step-in-high-performance...
> If you want your distributed database to maximise availability, how your local storage engine recovers from storage faults in the write-ahead log needs to be properly integrated with the global consensus protocol.
It'd be awesome to have a bit more transactional help from S3. You could go a long way with 'only update this object if the ETags on these other objects are still the same'. I know AWS doesn't want to turn S3 into a full database but some updates you just can't do without having a whole 2nd service running alongside to keep track of the states of your updates.
There’s only so much creativity available for software engineers to work around the fundamental constraints imposed by the lower levels. Software Engineering being a highly demanded skill, I strongly believe, is a reflection of how inefficient are the interlaces of standard architectures and processes. It reminds me of the Curse of Lisp, which, roughly, states that the reason for its lack of popularity and absence of large communities of developers stems from it being too powerful of a language, when compared, say, to Java. OSes are monstrosities struggling to keep pace with demand. The very concept and handling of the File is limiting and obsolete. It’s not an ideal building block for databases. Another is the fact that we have generalized compute but not storage. Memory and Storage are synonyms, so I imagine the ideal scenario is for both to be a single entity. I mean, the memory hierarchy should be flattened in the future. If this happens concurrently with an increase in capacity sufficient to emulate an infinite tape, then a number of today’s cutting edge software architectures will become relics — memories of a time when computers were not as cooperative and malleable as we needed them to be. The information revolution is just beginning, after all, and I absolutely love the fact that the path forward will be paved, primarily, by the collective effort of a multitude of creative minds, as always. Great article.