Redis Virtual Memory: the story and the code
antirez.com
antirez.com
1. There wasn't a "boss" or someone dictating what they should do. Creativity reigns and ideas simmer for a while to mature into good ideas.
2. They have a mentality of "if I were to solve this problem from scratch, what would I really need?" This question expands into "What is my wish list of things that are hard to do now but me/everyone has asked for?"
We [programmers] create things that didn't exist before; when someone who doesn't have our knowledge is calling the shots we are working with a subset of possibility.
I'm not detracting at all, but object databases with way more advanced feature sets have been around for well over ten years (http://web.progress.com/en/objectstore/). Making a stripped down version of an object database is not exactly forging new ground. I know you weren't necessarily implying otherwise.
Databases are like languages. Does Ruby invented something new? No, but it's my preferred high level language. It's a matter of "interpretation" of already implemented concepts, not a matter of features set.
AFAIK Redis is one of the first DBs exposing basic computer science data structures as abstract types. You have sets, linked lists, a sorted type that is the equivalent of a balanced tree, and an dictionary (an hash table) on top of this.
What matters is if this interpretation of already existing technologies fit well with the needs of today. I'll leave the task of inventing new breaking things to CS departments as I'm a programmer and not a scientist, with all the limits and strengths that this implies.
As long as we, programmers, developers, hackers, computer entusiasts, don't realize that our work is an interpretation work, like architects, we will continue to be nerdy engineers that the society will continue to look at without to recognize the real value.
Do you evaluate a building based on his number of rooms, the ability to resist to forces, and so forth? I don't think so. Why you should use this meters for software?
> AFAIK Redis is one of the first DBs exposing basic computer science data structures as abstract types
With something like ObjectStore you've had persistent storage of arbitrary templatized data structures for ages. You want a hash of hashes ultimately pointing to a void* value? Easy.
Redis is a tool in the unix-sense of the word. OOStore a solution in the enterprise sense.
Hackers tend to prefer tools, because they can combine them to build superior solutions.
You have hit the nail on the head with perfect precision.
We all do that in our own way (even if we can't do it in our day jobs). In my case I'm solving far more trivial problems than Antirez.
Redis is a very significant technology for me. The great thing about Antirez is that he has provided this extremely useful tool whilst maintaining a very modest online presence.
Maybe he's a prima donna at home :-)
The main roadblock for him is redis' lack of support for automatic failover (at least for the python client libraries I've seen), which I admit has some validity to it. I don't think it's that big of an issue for our use case, but try telling that to an opinionated sysadmin.
In the same vein, I have an idea about forking memcached and turn it into "memd". Instead of just caching for reads, it would allow writes to be done in memory too, which are asynchronously synced to disk when an item expires, or based on certain conditions (I'm thinking based on both time since last updated, and when enough updates are made). Now obviously, this only works if the data you store isn't all that important, which is probably the case for most web applications.
There's also csql. http://en.wikipedia.org/wiki/CSQL
Still a very cool piece of work, though.
Antirez is my hero of the week :-)