From what I looked at in the past, they seem better on paper by comparing themselves to a very old version of Redis in a rigged scenario (no clustering or multithreading applied despite Drangonfly getting multithreading enabled), and they are a lot worse in terms of code updates. Maybe that's different today, but I'm more keen on using Valkey.
Does Redis support multithreading? Doesn't it use a single-threaded event loop, while DragonflyDB basic version is with multithreading enabled and shared-nothing architecture.
Also I found this latest comparison between Valkey and DragonflyDB : https://www.dragonflydb.io/blog/dragonfly-vs-valkey-benchmar...
Valkey/Redis support offloading of io processing to special I/O threads.
Their goal is to unload the "main" thread from performing i/o related tasks like socket reading and parsing, so it could only spend its precious time on datastore operations. This creates an asymmetrical architecture with I/O threads scaling to any number of CPUs, but the main thread is the only one that touches the hashtable and its entries. It helps a lot in cases where datastore operations are relatively lightweight, like SET/GET with short string values, but its impact will be insignificant for CPU heavy operations like lua EVALs, sorted sets, lists, MGET/MSET etc.
IO multithreading is still not fully there, there were significant improvements within the first couple of iterations, hopefully, it will improve further. I see that Dragonfly uses iouring, which is not recommended by Google due to security vulnerabilities.
Dragonfly supports both epoll and iouring, and polling engine choice is quite orthogonal to its shared nothing architecture. I do not think that Valkey or Redis will become fully multi-threaded any time soon - as such change will require building something like Dragonfly (or use locks that historically were a big NO for Redis).
Yes, per [1] Google did restrict their use of io_uring on “production servers“, and in Android, ChromeOS etc.
However, within that same post, and what is often missed when that post is quoted, is that Google wrote that they did in fact “consider [io_uring] safe” for use by trusted components:
> For these reasons, we currently consider it safe only for use by trusted components.
A database like TigerBeetle is typically deployed in a trusted environment, and is such a trusted component.
Very good article, I 100% agree on everything. It is in moments of desperation to complete more than one task and complete them early we forget that our mind doesn't work that way, really liked the whole essay. I think one should visit it from time to time to remind themselves. Not to nitpick on CSS but I had to add following styles to the webpage to read it comfortably:
p {
display: flex;
justify-content: center;
align-items: center;
margin: 0;
font-family: Arial, sans-serif;
padding-left: 20px;
padding-right: 20px;
text-align: center;
max-width: 800px;
margin-left: auto;
margin-right: auto;
}
maybe you can add them if you want. Again, Great article. Thanks.
I thought I was going to do is research. There was a consensus at the time in the community and at least one famous white paper that I can’t find now (pike? rashid?) that explained it was dead. I kind of agree and kind of don’t. I think we have more exploring to do on what the right structure is, but I’m not sure I’d call it research. I think we really missed an opportunity to lay down a new foundation with cloud services. Distribution and security are still two pretty massive holes, and people are looking at them.
Absolutely nothing about fraud in these. Interesting, considering who or what would validate that these actions are occurring in front of an actual user.
Thanks for the link, and also thanks to the ancestor commentors for sharing more information.
Although I understand that the revenue and reality of marketing revenue is vast and in some ways unstoppable, this is quite a bit of complex and challenging engineering work which creates more surface area in browsers in return for privacy.
It's probably worth it on the whole, as long as it's done carefully, but for someone who cares a bit about simplicity, efficiency and being able to comprehend what's happening: will there be an opportunity just to disable targeting advertising (and thus the code paths and logic associated with it all)?
(I'll try to reason about this and work it out myself from the documentation; I do already see that there's a "Disable Ad Interest Groups", but I don't know if that's quite it, yet)
Same case here in India, Sucks to have these apps despite knowing what they are doing just because your School or College groups are on these platforms. I tried educating my fellow mates about this but seems unlikely that it will have any effect.