In association with heise online

20 May 2010, 17:18

Couchio rap (literally) about CouchDB

The CouchDB developers at Couchio had some fun releasing a rap video dedicated to the NoSQL database, but tell The H they are serious about bringing their replicating database to the world.

The video, produced by Couchio as part of a series of monthly webcasts about the distributed, document oriented, offline replicating NoSQL database, has J. Chris Anderson (@jchris) and Claire McCabe (@clairecouchio), presenting the database in a strictly urban style after they decided that rap would be a good way to communicate the benefits of CouchDB. The H is proud to present the "I use Couch DB" video to the world:

Earlier this week, The H talked with CouchDB authors Damien Katz and Chris Anderson about Couchio, the company that they have created to support CouchDB. Anderson says of Couchio's plans that the company provides "value added support services around CouchDB on different platforms as well as hosting, but we aim to be the main provider. We're concentrating on the stuff that sets CouchDB apart from SQL databases. What our big real value add is, is offline replication which is what got Palm excited about it". He adds that "Couchio is really responding to market need, there's just so much interest in CouchDB and we've been working with people like the BBC." The BBC has been using CouchDBPDF as part of their web infrastructure where it currently handles 155 million requests per day for 20 million documents. "So we're building a real company. Couchio aims to be the next Oracle."

The reference to Palm concerns the company's DB8 database being built into WebOS. Palm's implementation is based on their own database, but "they've built it to replicate CouchDB, designed to interoperate" adding that Palm already had a lot of "code in the can" but wanted interoperability. "It was really cool to see that come out, it's always nice to see people treating Couch as a protocol more than just a single database implementation". It's not just HP/Palm's WebOS with CouchDB support though; recently Aaron Miller created an experimental port of CouchDB to Android.

Erlang in the Couch

Although most developers are exposed to CouchDB through it's JSON, REST and JavaScript web interfaces, CouchDB is written in Erlang. Katz explained the reasoning behind that choice; "[Erlang] is designed for telecoms and the requirements of telecoms are high concurrency, particularly for switches, high availability, reliability and when things start failing, isolation, so if a call fails it doesn't take out everybody else's call. So the language itself is designed for all these considerations which also happen to be database considerations. They have the same sort of needs. And it's been a fantastic choice in terms of development speed and actually building a reliable system".

The choice of language has not been an major impediment to attracting contributors, says Katz, although "It's definitely been a barrier to getting some forms of contributions, but its also helped to increase the signal to noise ratio so that the contributions we are getting, the people are a little more serious about it and more serious about getting their patches included as opposed to people who say – Oh well, I'll throw some code over the wall and see if they take it'". Anderson also points out that CouchDB ships with a built in JavaScript application server so that "Pretty much anything that we intend to be scriptable or to be configurable code on the back end, we do through JavaScript so people don't have to deal with Erlang".

Inspiration and vision

The use of CouchDB to provide database replication for mobile phones wasn't something on Katz's mind when he created CouchDB. "When I had my vision of CouchDB, I was really thinking of laptops and smartphones weren't nearly as hot as they are. So I wasn't really thinking about it being on cellphones. But definitely the idea of taking your data with you on a laptop was always intended. The new ecosystem with phones has played well to our strengths". The underlying inspiration for CouchDB was, says Katz, Lotus Notes. "My background was Lotus Notes, so I'm copying a lot of what I knew to be successful with Notes. The back end concepts are the same. I know Notes is a sort of love/hate product. Notes is getting long in the tooth, but way back when it was a pretty innovative technology".

What Katz took from Notes was the idea of a schema-less document database which supported offline replication, where a database could be synchronised when it came online. In CouchDB though, these ideas are exposed as modern, open APIs, using JSON as a storage format, web based REST APIs to make it easy for applications to access the database and that pervasive use of JavaScript at the back end.

The immediate plan for CouchDB now though is getting to version 1.0, after freezing the features in version 0.11. For 1.0, the focus is "basically getting the API solid and stable" says Katz, "Nothing is blocking that right now. We're just waiting for things to stabilise. There's lots of smaller bugs and smaller things we want to add, but they can be post 1.0 as well. We're thinking that 1.0 can be within the next couple of months but it's a community process so it's not entirely under our control, so that's just a prediction". The only changes contemplated are security enhancements to prevent cross site scripting issues and essential bug fixes, though Katz hints that there may be some APIs added, but they are being "very carefully considered". "1.0 is just a number, but it's an important symbolic number. We already have the stability, we're on Ubuntu and ten million desktops.". Canonical's Ubuntu One service uses CouchDB in syncing the bookmarks, contacts and other information.

Planning for ubiquity

Beyond 1.0, CouchDB's focus for 1.1 will, says Anderson, be on the configuration system, "We want to make the replicators super-easy for people who aren't experts to manage". Beyond 1.1, Katz sees ubiquity as a goal for CouchDB; "The longer vision is that we want to Couch to be on every device, every laptop, every phone, and ideally we want to be part of the HTML standard for offline applications. Right now, they have a lot of stuff in the specification for building offline applications but for the most part, people aren't building these offline applications... they are very labour intensive.

So we're hoping we can get into enough places to become the de facto standard for offline and then get into the HTML standard that way. Barring that, a lot of the storage primitives that are in HTML5 and the background processing... we've been working with Mozilla to make sure that the primitives are available so that we can build CouchDB on top of that, Browser Couch. That would be a set of JavaScript libraries for offline storage which would interoperate with CouchDB applications. But there are so many things that that depends on". But right now, the focus is on getting version 1.0 completed.

Print Version | Permalink:
  • Twitter
  • Facebook
  • submit to slashdot
  • StumbleUpon
  • submit to reddit

  • July's Community Calendar

The H Open

The H Security

The H Developer

The H Internet Toolkit