Riak is for Ops, but Ops don’t build Apps
You can't go anywhere on the interwebs without bumping into a NoSQL post somewhere. At least in the Rails community, MongoDB seems to be gaining the most mindshare. Mongo has the whole NoSQL thing going for it, as well as the two most important things from a developer's perspective -- a full-featured ORM or two (MongoMapper and dm-adapter-mongo) and the ability to (easily) index and query your data. So even though there is no SQL, you can still do things like this, which feels very comforting and familiar to a Rails developer:
Person.find_by_email("starbuck@galactica.mil")
However, MongoDB was designed as a single-node database, and achieves scalability in the same way a MySQL db would, by using things like masters, slaves, and shards. So while Mongo buys you the flexibility of a schema-less data store, you are still stuck with the same old scaling problems of the SQL databases. Why not just use a SQL db as a schema-less store in the first place? (a la Friendly).
Riak is a data store built from the ground up for scaling. The scaling story can be summed up in three words: "Add a node." That's it. No "shards", "masters", "slaves", etc etc. It's an incredibly compelling story. The problem is that as much as the ops folks love it, ops folks don't build apps. Developers do. And in its current form, Riak makes app developers work harder to build their app, in exchange for a much easier time scaling and maintaining the app down the road. But developer's don't care, because they don't usually have to worry about the scaling issue, its someone else's job. So it's easy for them to ignore the long-term benefits and go with something familiar and easier to get into, like Mongo.
Basho seems like a great company with a refreshing attitude towards making money from open source software, and I really want to see them succeed. But they need to move fast to gain mindshare in the developer community, and that means investing in the tools that make developer's lives easier. It seems that they have taken the first step and hired Sean Cribbs, the developer of the awesome Ripple gem, which is a Rails-compatible Object Mapper for Riak. I hope they continue to focus on developer tools and make Riak the first choice when building a new Rails app.
(We are doing our small part for the community by hacking on Briak, which is a data browser for Riak clusters based on Sinatra.)
March 18th, 2010 - 08:41
Thanks for this post. Your characterization of Riak is, I believe, quite fair. We focused first on the subsystems that provide stability and scalability. MongoDB certainly should take credit for their dev-friendly interfaces and their efforts building community. The software we originally open-sourced reflected our background building big distributed systems like Akamai — basically we talked like a bunch of distributed systems weenies to an audience that wants fast, reliable, and easy to use (all of which do or will apply to Riak very soon).
We have learned a ton in the months we have been open-sourced, including the point you make above. Developers like Sean Cribbs have been added to the team as has the role of a community development manager (@pharkmillups). The entire orientation of the company has transformed. Our large enterprise deployments will still have the reliability and ease-of-use aspects of Riak but developers will more and more find Riak responsive to their needs. The features are in the release schedule and we are planning a podcast to share it with everyone.
Thanks a bunch for this post and for your contribution to making Riak better.
Tony
March 27th, 2010 - 18:22
I thought I’d add that I recently did a presentation at Erlang Factory about Riak Search that addresses this topic directly: http://is.gd/b2Lu9
John
March 30th, 2010 - 09:00
Riak search looks tasty but it is dissapointing to not have a beta date to look forward. Looks like Riak + ElasticSearch is the way to go for now and who knows how much longer.