As discussed, I’m going through the 7 Databases in 7 Weeks book. This week was Riak (pronounced REE-ack).
Riak is a key-value dictionary type, NoSQL database, with a RESTful HTTP front-end (although some language-specific drivers are available too: Erland, Java, PHP, Python, Ruby, C#, etc). I’ll first note that on the download page:
There is an installer for everything under the sun, EXCEPT for Windows. Really? I guess the operating system religious wars still are going on, after all of these years! If you could only see me rolling my eyes right now. haha
OK, so I fixed my Mac issues and I worked on this, over there – and then also tried on Ubuntu. The book starts off by saying to install Riak and then run “make devrel”, which apparently creates a few sample databases. I never made it past this step.
I spent a fair amount of time (a few hours) trying to troubleshoot, but this just seems to be one of those proprietary and undocumented things. The closest I got was this post on stackoverflow, which recommended (of course) pulling down the source of some other product, and using that instead.
Despite my best efforts on Mac OS X Mavericks and Ubuntu, I could not get an instance of this database up and running. The fact that this was a show-stopper out of the gate, coupled with no Windows implementation (which is likely purposeful) – I’m not exactly blown away. I often say “there is a difference between whipping up a program, and releasing a product”. When you release a product, you need to be adequate documentation and a working app.
If it were running (and following the book), it’s a pretty cool concept. This is basically the idea of having a RESTful service hosted over HTTP, but instead of mapping that to an underlying datastore – like how WebAPI works for example, the RESTful interface IS the actual database. For example, you can retrieve data with calls like: http://localhost:8000/riak/Products/3 and perform inserts, updates, and deletes with a request using specific HTTP verbs like POST, PUT, and DELETE – respectively.
Riak easily supports many-node clusters and natively supports MapReduce, which is a programming model for processing large data sets in a parallel computing environment. So, it’s very scalable, fault-tolerant, and has a universal interface (REST) that can be used by pretty much any technology. Well, assuming you can stand up an instance of this database server!
Onward and upward – next week is HBase…